diff options
author | cyuamber <xuranyjy@chinamobile.com> | 2019-08-22 16:55:57 +0800 |
---|---|---|
committer | cyuamber <xuranyjy@chinamobile.com> | 2019-08-22 16:56:09 +0800 |
commit | d0f5347dc16b5aa9fc95eb520fbc9a1c7b672b09 (patch) | |
tree | b3891d8de290d755d7f0f00d35bb77d3b89ad747 /usecaseui-portal/src/app | |
parent | 56923755c761897cc86ca2457667fcc3e6a0e43f (diff) |
feat: change the project structure and add mock data function
Change-Id: I381845bff5eb37d1fab3eba8cf1ae7838df523b7
Issue-ID: USECASEUI-307
Signed-off-by: cyuamber <xuranyjy@chinamobile.com>
Diffstat (limited to 'usecaseui-portal/src/app')
166 files changed, 6797 insertions, 2069 deletions
diff --git a/usecaseui-portal/src/app/alarm/alarm.component.spec.ts b/usecaseui-portal/src/app/alarm/alarm.component.spec.ts deleted file mode 100644 index f64bcb83..00000000 --- a/usecaseui-portal/src/app/alarm/alarm.component.spec.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { async, ComponentFixture, TestBed, inject, fakeAsync } from '@angular/core/testing'; -import { NO_ERRORS_SCHEMA,CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; -import { NgxEchartsModule } from 'ngx-echarts'; -import { NgZorroAntdModule } from 'ng-zorro-antd'; -import { TranslateModule, TranslateLoader, TranslateService, TranslateFakeLoader} from '@ngx-translate/core'; -import { HttpClientModule } from '@angular/common/http'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; -import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; -import { NZ_I18N, en_US } from 'ng-zorro-antd'; - -import { AlarmComponent } from './alarm.component'; -import { DetailsComponent } from '../components/details/details.component'; -import { LineComponent } from '../components/charts/line/line.component'; -import { HomesService } from '../homes.service'; - -fdescribe('AlarmComponent', () => { - let component: AlarmComponent; - let fixture: ComponentFixture<AlarmComponent>; - - beforeEach(async(() => { - TestBed.configureTestingModule({ - declarations: [ AlarmComponent, DetailsComponent, LineComponent ], - imports: [ TranslateModule.forRoot({loader: { provide: TranslateLoader, useClass: TranslateFakeLoader }}), - NgZorroAntdModule.forRoot(), - NgxEchartsModule, - HttpClientModule, - BrowserAnimationsModule, - HttpClientTestingModule ], - providers: [ TranslateService, HomesService, - { provide: NZ_I18N, useValue: en_US } ], - schemas: [ - CUSTOM_ELEMENTS_SCHEMA, - NO_ERRORS_SCHEMA - ] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(AlarmComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', inject([HttpTestingController, HomesService], - (httpMock: HttpTestingController, service: HomesService) => { - expect(component).toBeTruthy(); - })); - - it('expects service to fetch data with proper sorting', - inject([HttpTestingController, HomesService], - (httpMock: HttpTestingController, service: HomesService) => { - // We call the service - service.getqueryAllSourceNames().subscribe(data => { - expect(data.pageInfo.totalRecordCount).toBe(21); - expect(data.pageInfo.pageNumber).toBe(0); - expect(data.data.length).toBe(7); - }); - // We set the expectations for the HttpClient mock - const req = httpMock.expectOne('http://.../data/contacts'); - expect(req.request.method).toEqual('GET'); - // Then we set the fake data to be returned by the mock - req.flush({data: ...}); - }) -); -}); diff --git a/usecaseui-portal/src/app/app-routing.module.ts b/usecaseui-portal/src/app/app-routing.module.ts index 04a6bc80..f47cf11b 100644 --- a/usecaseui-portal/src/app/app-routing.module.ts +++ b/usecaseui-portal/src/app/app-routing.module.ts @@ -13,48 +13,52 @@ See the License for the specific language governing permissions and limitations under the License. */ -import { NgModule } from '@angular/core'; +import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; -import { HomeComponent } from './home/home.component'; -import { ManagementComponent } from './management/management.component'; -import { FcapsComponent } from './fcaps/fcaps.component'; -import { ServicesComponent } from './services/services.component'; -import { ServicesListComponent } from './services/services-list/services-list.component'; -import { OnboardVnfVmComponent } from './services/onboard-vnf-vm/onboard-vnf-vm.component'; -import { AlarmComponent } from './alarm/alarm.component'; -import { PerformanceComponent } from './performance/performance.component'; -import { PerformanceVnfComponent } from './performance/performance-vnf/performance-vnf.component'; -import { PerformanceVmComponent } from './performance/performance-vm/performance-vm.component'; +import { HomeComponent } from './views/home/home.component'; +import { ManagementComponent } from './views/management/management.component'; +import { FcapsComponent } from './views/fcaps/fcaps.component'; +import { ServicesComponent } from './views/services/services.component'; +import { ServicesListComponent } from './views/services/services-list/services-list.component'; +import { OnboardVnfVmComponent } from './views/services/onboard-vnf-vm/onboard-vnf-vm.component'; +import { AlarmComponent } from './views/alarm/alarm.component'; +import { PerformanceComponent } from './views/performance/performance.component'; +import { PerformanceVnfComponent } from './views/performance/performance-vnf/performance-vnf.component'; +import { PerformanceVmComponent } from './views/performance/performance-vm/performance-vm.component'; -import { CcvpnNetworkComponent } from './ccvpn-network/ccvpn-network.component'; +import { CcvpnNetworkComponent } from './views/ccvpn-network/ccvpn-network.component'; + + +import { TestComponent } from './test/test.component'; // import { DetailsComponent } from './details/details.component'; const ServicesChildRoutes: Routes = [ - { path: 'services-list', component: ServicesListComponent}, - { path: 'onboard-vnf-vm', component: OnboardVnfVmComponent}, + { path: 'services-list', component: ServicesListComponent }, + { path: 'onboard-vnf-vm', component: OnboardVnfVmComponent }, { path: '**', redirectTo: 'services-list' } ] const routes: Routes = [ - { path: 'home', component: HomeComponent}, - { path: 'management', component: ManagementComponent}, - { path: 'fcaps', component: FcapsComponent}, + { path: 'text', component: TestComponent }, + { path: 'home', component: HomeComponent }, + { path: 'management', component: ManagementComponent }, + { path: 'fcaps', component: FcapsComponent }, // { path: 'services', component: ServicesComponent, children:ServicesChildRoutes}, //Temporarily not a sub-routing structure - { path: 'services/services-list', component: ServicesListComponent}, - { path: 'services/onboard-vnf-vm', component: OnboardVnfVmComponent}, - { path: 'alarm', component: AlarmComponent}, - { path: 'performance', component: PerformanceComponent}, - { path: 'performance/performance-vnf', component: PerformanceVnfComponent}, - { path: 'performance/performance-vm', component: PerformanceVmComponent}, + { path: 'services/services-list', component: ServicesListComponent }, + { path: 'services/onboard-vnf-vm', component: OnboardVnfVmComponent }, + { path: 'alarm', component: AlarmComponent }, + { path: 'performance', component: PerformanceComponent }, + { path: 'performance/performance-vnf', component: PerformanceVnfComponent }, + { path: 'performance/performance-vm', component: PerformanceVmComponent }, { path: 'network', component: CcvpnNetworkComponent }, - { path: '**', redirectTo: 'home', pathMatch: 'full'} + { path: '**', redirectTo: 'home', pathMatch: 'full' } ]; @NgModule({ - imports: [ RouterModule.forRoot(routes) ], - exports: [ RouterModule ] + imports: [RouterModule.forRoot(routes)], + exports: [RouterModule] }) -export class AppRoutingModule {} +export class AppRoutingModule { } diff --git a/usecaseui-portal/src/app/app.component.css b/usecaseui-portal/src/app/app.component.css index 1e0f7181..7e91ee2b 100644 --- a/usecaseui-portal/src/app/app.component.css +++ b/usecaseui-portal/src/app/app.component.css @@ -25,7 +25,7 @@ nz-layout nz-sider ul li i { height: 16px; } nz-layout nz-sider ul li .icon-services { - background: url(../assets/images/icon.png) no-repeat 0px -16px; + background: url(assets/images/icon.png) no-repeat 0px -16px; } nz-layout nz-sider ul li ul li { font-size: 12px; diff --git a/usecaseui-portal/src/app/app.component.html b/usecaseui-portal/src/app/app.component.html index 2bd60670..a0838c3d 100644 --- a/usecaseui-portal/src/app/app.component.html +++ b/usecaseui-portal/src/app/app.component.html @@ -23,7 +23,9 @@ <a routerLink="home"> <span title> <i> - <img src="{{activeMenuBar[0] == true ? 'assets/images/home-icon-active.png':'assets/images/home-icon.png'}}" alt="home"> + <img + src="{{activeMenuBar[0] == true ? 'assets/images/home-icon-active.png':'assets/images/home-icon.png'}}" + alt="home"> </i> <span> {{"i18nTextDefine_Home" | translate}} </span> </span> @@ -33,8 +35,10 @@ <li nz-menu-item [ngClass]="{'activeMenuBar':activeMenuBar[1] == true}" (click)="thisActive(1)"> <a routerLink="management"> <span title> - <i> - <img src="{{activeMenuBar[1] == true ? 'assets/images/customer-icon-active.png':'assets/images/customer-icon.png'}}" alt="home"> + <i> + <img + src="{{activeMenuBar[1] == true ? 'assets/images/customer-icon-active.png':'assets/images/customer-icon.png'}}" + alt="home"> </i> <span> {{"i18nTextDefine_Customer" | translate}} </span> </span> @@ -45,7 +49,9 @@ <a href="#" onclick="window.open('http://172.30.1.80:5601/app/kibana#/dashboards')"> <span title> <i> - <img src="{{activeMenuBar[2] == true ? 'assets/images/monitor-icon-active.png':'assets/images/monitor-icon.png'}}" alt="home"> + <img + src="{{activeMenuBar[2] == true ? 'assets/images/monitor-icon-active.png':'assets/images/monitor-icon.png'}}" + alt="home"> </i> <span> {{"i18nTextDefine_Monitor" | translate}} </span> </span> @@ -53,12 +59,16 @@ </li> <hr> <li nz-submenu [ngClass]="{'activeMenuBar':activeMenuBar[3] == true}" (click)="thisActive(3)"> - <span title> <i> - <img src="{{activeMenuBar[3] == true ? 'assets/images/Services-icon-active.png':'assets/images/Services-icon.png'}}" alt="home"> - </i> {{"i18nTextDefine_Services" | translate}} </span> + <span title> <i> + <img + src="{{activeMenuBar[3] == true ? 'assets/images/Services-icon-active.png':'assets/images/Services-icon.png'}}" + alt="home"> + </i> {{"i18nTextDefine_Services" | translate}} </span> <ul> - <li nz-menu-item [ngClass]="{'activeMenuList':activeMenuList[0] == true}" (click)="thisListActive(0)"><a routerLink='services/services-list'> {{"i18nTextDefine_ServicesList" | translate}} </a></li> - <li nz-menu-item [ngClass]="{'activeMenuList':activeMenuList[1] == true}" (click)="thisListActive(1)"><a routerLink='services/onboard-vnf-vm'> {{"i18nTextDefine_PackageManagement" | translate}} </a></li> + <li nz-menu-item [ngClass]="{'activeMenuList':activeMenuList[0] == true}" (click)="thisListActive(0)"><a + routerLink='services/services-list'> {{"i18nTextDefine_ServicesList" | translate}} </a></li> + <li nz-menu-item [ngClass]="{'activeMenuList':activeMenuList[1] == true}" (click)="thisListActive(1)"><a + routerLink='services/onboard-vnf-vm'> {{"i18nTextDefine_PackageManagement" | translate}} </a></li> </ul> </li> <!-- <hr> @@ -82,8 +92,10 @@ <li nz-menu-item [ngClass]="{'activeMenuBar':activeMenuBar[4] == true}" (click)="thisActive(4)"> <a routerLink="network"> <span title> - <i> - <img src="{{activeMenuBar[4] == true ? 'assets/images/network-icon-active.png':'assets/images/network-icon.png'}}" alt="home"> + <i> + <img + src="{{activeMenuBar[4] == true ? 'assets/images/network-icon-active.png':'assets/images/network-icon.png'}}" + alt="home"> </i> <span> {{"i18nTextDefine_NetworkTopology" | translate}} </span> </span> @@ -92,6 +104,6 @@ </ul> </nz-sider> <nz-layout class="main"> - <router-outlet></router-outlet> + <router-outlet></router-outlet> </nz-layout> -</nz-layout> +</nz-layout>
\ No newline at end of file diff --git a/usecaseui-portal/src/app/app.component.spec.ts b/usecaseui-portal/src/app/app.component.spec.ts index 653c52ea..32387b41 100644 --- a/usecaseui-portal/src/app/app.component.spec.ts +++ b/usecaseui-portal/src/app/app.component.spec.ts @@ -3,7 +3,7 @@ import { RouterTestingModule } from '@angular/router/testing'; import { NgZorroAntdModule } from 'ng-zorro-antd'; import { HttpClientTestingModule } from '@angular/common/http/testing'; import { TranslateModule, TranslateLoader, TranslateService, TranslateFakeLoader} from '@ngx-translate/core'; -import {HomesService} from "./homes.service"; +import {HomesService} from "./core/services/homes.service"; import { AppComponent } from './app.component'; diff --git a/usecaseui-portal/src/app/app.component.ts b/usecaseui-portal/src/app/app.component.ts index 29555943..d654900c 100644 --- a/usecaseui-portal/src/app/app.component.ts +++ b/usecaseui-portal/src/app/app.component.ts @@ -15,8 +15,8 @@ */ import {Component} from '@angular/core'; import {TranslateService} from '@ngx-translate/core'; -import {MyhttpService} from "./myhttp.service"; -import {HomesService} from "./homes.service"; +import {MyhttpService} from "./core/services/myhttp.service"; +import {HomesService} from "./core/services/homes.service"; @Component({ diff --git a/usecaseui-portal/src/app/app.module.ts b/usecaseui-portal/src/app/app.module.ts index 9c69124f..fa4b6bfb 100644 --- a/usecaseui-portal/src/app/app.module.ts +++ b/usecaseui-portal/src/app/app.module.ts @@ -24,7 +24,7 @@ import { NZ_I18N, en_US } from 'ng-zorro-antd'; import { NgxEchartsModule } from 'ngx-echarts'; import { TranslateModule, TranslateLoader } from '@ngx-translate/core'; -import {TranslateHttpLoader} from '@ngx-translate/http-loader'; +import { TranslateHttpLoader } from '@ngx-translate/http-loader'; export function HttpLoaderFactory(httpClient: HttpClient) { return new TranslateHttpLoader(httpClient, './assets/i18n/', '.json'); } @@ -34,52 +34,55 @@ import { AppRoutingModule } from './app-routing.module'; //Registered language pack import { registerLocaleData } from '@angular/common'; import en from '@angular/common/locales/en'; -registerLocaleData(en); +registerLocaleData(en); //Custom component import { AppComponent } from './app.component'; -import { HomeComponent } from './home/home.component'; -import { ManagementComponent } from './management/management.component'; -import { ServicesComponent } from './services/services.component'; -import { ServicesListComponent } from './services/services-list/services-list.component'; -import { OnboardVnfVmComponent } from './services/onboard-vnf-vm/onboard-vnf-vm.component'; -import { AlarmComponent } from './alarm/alarm.component'; -import { PerformanceComponent } from './performance/performance.component'; -import { PerformanceVnfComponent } from './performance/performance-vnf/performance-vnf.component'; -import { PerformanceVmComponent } from './performance/performance-vm/performance-vm.component'; -import { CcvpnNetworkComponent } from './ccvpn-network/ccvpn-network.component'; -import { CcvpnDetailComponent } from './ccvpn-detail/ccvpn-detail.component'; -import { CcvpnCreationComponent } from './ccvpn-creation/ccvpn-creation.component'; +import { HomeComponent } from './views/home/home.component'; +import { ManagementComponent } from './views/management/management.component'; +import { ServicesComponent } from './views/services/services.component'; +import { ServicesListComponent } from './views/services/services-list/services-list.component'; +import { OnboardVnfVmComponent } from './views/services/onboard-vnf-vm/onboard-vnf-vm.component'; +import { AlarmComponent } from './views/alarm/alarm.component'; +import { PerformanceComponent } from './views/performance/performance.component'; +import { PerformanceVnfComponent } from './views/performance/performance-vnf/performance-vnf.component'; +import { PerformanceVmComponent } from './views/performance/performance-vm/performance-vm.component'; +import { CcvpnNetworkComponent } from './views/ccvpn-network/ccvpn-network.component'; +import { CcvpnDetailComponent } from './views/ccvpn-detail/ccvpn-detail.component'; +import { CcvpnCreationComponent } from './views/ccvpn-creation/ccvpn-creation.component'; -import { DetailsComponent } from './components/details/details.component'; -import { GraphiclistComponent } from './components/graphiclist/graphiclist.component'; -import { E2eCreationComponent } from './components/e2e-creation/e2e-creation.component'; +import { DetailsComponent } from './shared/components/details/details.component'; +import { GraphiclistComponent } from './shared/components/graphiclist/graphiclist.component'; +import { E2eCreationComponent } from './shared/components/e2e-creation/e2e-creation.component'; -import { BarComponent } from './components/charts/bar/bar.component'; -import { LineComponent } from './components/charts/line/line.component'; -import { PieComponent } from './components/charts/pie/pie.component'; +import { BarComponent } from './shared/components/charts/bar/bar.component'; +import { LineComponent } from './shared/components/charts/line/line.component'; +import { PieComponent } from './shared/components/charts/pie/pie.component'; -import {PathLocationStrategy, LocationStrategy, HashLocationStrategy} from '@angular/common'; +import { PathLocationStrategy, LocationStrategy, HashLocationStrategy } from '@angular/common'; // Custom service -import { MyhttpService } from './myhttp.service'; -import { HomesService } from './homes.service'; -import { onboardService } from './onboard.service'; -import { networkHttpservice } from './networkHttpservice.service'; -import { PerformanceDetailsComponent } from './components/performance-details/performance-details.component'; -import { E2eDetailComponent } from './components/e2e-detail/e2e-detail.component'; -import { CustomerComponent } from './components/customer/customer.component'; -import { ManagemencsService } from './managemencs.service'; -import { FcapsComponent } from './fcaps/fcaps.component'; +import { MyhttpService } from './core/services/myhttp.service'; +import { HomesService } from './core/services/homes.service'; +import { onboardService } from './core/services/onboard.service'; +import { networkHttpservice } from './core/services/networkHttpservice.service'; +import { PerformanceDetailsComponent } from './shared/components/performance-details/performance-details.component'; +import { E2eDetailComponent } from './shared/components/e2e-detail/e2e-detail.component'; +import { CustomerComponent } from './shared/components/customer/customer.component'; +import { ManagemencsService } from './core/services/managemencs.service'; +import { FcapsComponent } from './views/fcaps/fcaps.component'; +import { TestComponent } from './test/test.component'; +import { TextService } from './core/services/text.service'; @NgModule({ - providers : [ + providers: [ { provide: LocationStrategy, useClass: HashLocationStrategy }, { provide: NZ_I18N, useValue: en_US }, MyhttpService, HomesService, onboardService, networkHttpservice, - ManagemencsService + ManagemencsService, + TextService ], declarations: [ AppComponent, @@ -90,7 +93,7 @@ import { FcapsComponent } from './fcaps/fcaps.component'; OnboardVnfVmComponent, AlarmComponent, - + PerformanceComponent, PerformanceVnfComponent, PerformanceVmComponent, @@ -105,9 +108,10 @@ import { FcapsComponent } from './fcaps/fcaps.component'; CcvpnDetailComponent, CcvpnCreationComponent, E2eDetailComponent, - CustomerComponent , + CustomerComponent, PerformanceDetailsComponent, - FcapsComponent + FcapsComponent, + TestComponent ], imports: [ BrowserModule, @@ -125,6 +129,6 @@ import { FcapsComponent } from './fcaps/fcaps.component'; NgxEchartsModule, AppRoutingModule ], - bootstrap: [ AppComponent ] + bootstrap: [AppComponent] }) export class AppModule { }
\ No newline at end of file diff --git a/usecaseui-portal/src/app/ccvpn-creation/ccvpn-creation.component.html b/usecaseui-portal/src/app/ccvpn-creation/ccvpn-creation.component.html deleted file mode 100644 index 1645325c..00000000 --- a/usecaseui-portal/src/app/ccvpn-creation/ccvpn-creation.component.html +++ /dev/null @@ -1,272 +0,0 @@ -<!-- - Copyright (C) 2019 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. ---> -<div class="model creation-model"> - - <div class="top-title"> - <h3 class="title fl">{{createParams.commonParams.templateType}} {{"i18nTextDefine_InstanceCreation" | translate}} </h3> - <div class="fl" style="width: 20%"> - <button class="submit" nz-button (click)="submit()"><span> {{"i18nTextDefine_Create" | translate}} </span> - </button> - <button class="back" nz-button (click)="goback()"></button> - </div> - </div> - <!-- chart --> - <div class="chart"> - <span style="padding: 25px;display: inline-block;"> - {{"i18nTextDefine_InstanceTopology" | translate}} - </span> - <div id="createChart"> - <svg width="100%" height="100%"> - <image id="domain" xlink:href="assets/images/domain1.png" style="width: 15%" - x="40%" y="0"/> - </svg> - </div> - </div> - <!--Template resolution : Three major items--> - <div class="creation"> - <nz-tabset [nzTabPosition]="'top'" [nzShowPagination]=false [nzTabBarGutter]="'2'" [nzTabBarStyle]=tabBarStyle> - <nz-tab nzTitle="Service Info"> - <div class="service-title" style="clear: both"> - <span style="color: red;">*</span><span class="lable" style="width: 60px">name:</span> - <input nz-input [(ngModel)]="this.templateParameters.service['name']" required="required"> - <span style="color: red;">*</span><span class="lable">description:</span> - <input nz-input [(ngModel)]="this.templateParameters.service['description']"> - </div> - </nz-tab> - <nz-tab nzTitle="Sdwanvpnresource List"> - <div class="sotnvpn clearfix"> - <div style="clear: both;height: 10px"> - <h3 style="float: left;color: #3C4F8C">sdwanVPN List</h3> - <button nz-button (click)="addSotnvpn()" class="addListBtn" - style="float: right;margin-right: 10px"><i class="anticon anticon-plus" - style="transform: scale(1.2);font-weight: 700"></i> {{"i18nTextDefine_Add" | translate}} - </button> - </div> - <nz-table #sotnVpnTable [nzData]="sotnVpnTableData" - [nzShowPagination]="false" - nzSize="small"> - <thead> - <tr> - <th width="30%"> NO.</th> - <th *ngFor="let key of getKeys(this.sotnInfo)">{{key.split("_")[1] || key}}</th> - <th width="10%"> Action</th> - </tr> - </thead> - <tbody> - <tr *ngFor="let item of sotnVpnTable.data; let i = index; "> - <td>{{i+1}}</td> - <td *ngFor="let keys of getKeys(this.sotnInfo);let a = index;"> - {{item[keys]}} - </td> - <td> - <span class="action" (click)="editSotnVpn(i+1)"><i class="anticon anticon-edit"></i></span> - - <span class="action" (click)="deleteSotnVpn(i+1)"><i - class="anticon anticon-delete"></i></span> - </td> - </tr> - </tbody> - </nz-table> - </div> - </nz-tab> - <nz-tab nzTitle="Sdwansiteresource List"> - <div class="site"> - <div style="height: 10px"> - <h3 style="float: left;color: #3C4F8C">Site List</h3> - <button nz-button (click)="addSite()" class="addListBtn" - style="float: right;margin-right: 10px"><i class="anticon anticon-plus" - style="transform: scale(1.2);font-weight: 700"></i>{{"i18nTextDefine_Add" | translate}} - </button> - </div> - <nz-table #siteTable [nzData]="siteTableData" - [nzShowPagination]="false" - nzSize="small"> - <thead> - <tr> - <th nzWidth="10%"> NO.</th> - <th *ngFor="let key of getKeys(this.siteBaseData)">{{key.split("_")[1] || key}}</th> - <th nzWidth="20%" style="text-align: center"> Action</th> - </tr> - </thead> - <tbody> - <tr *ngFor="let item of siteTable.data; let i = index; "> - <td>{{i+1}}</td> - <td *ngFor="let keys of getKeys(this.siteBaseData);let a = index;"> - {{item[keys]}} - </td> - <td style="text-align: center"> - <span class="action" (click)="editSite(i+1)"><i class="anticon anticon-edit"></i></span> - - <span class="action" (click)="deleteSite(i+1)"><i - class="anticon anticon-delete"></i></span> - </td> - </tr> - </tbody> - </nz-table> - </div> - </nz-tab> - </nz-tabset> - </div> - <!-- sotnVpnmodel --> - <div class="sotnnpnmodel" *ngIf="sotnVpnModelShow"> - <h3> {{"i18nTextDefine_Base" | translate}} </h3> - <div class="inputs"> - <ul> - <li *ngFor="let item of this.templateParameters.sotnvpn.sdwanvpnresource_list"> - <span *ngIf="item.required" style="color: red;margin: 0;margin-right: -5px;">*</span><span>{{item.lableShow}}:</span> - <input nz-input [(ngModel)]="sotnInfo[item.lable]" title="{{item.description ? item.description:null }}" - required="{{item.required==true ? 'required':null}}"></li> - </ul> - </div> - <div> - <h3>Sdwansitelan List</h3> - <div> - <div style="width: 100%;text-align: right"> - <button nz-button (click)="addSotnSdwansitelan()" class="addListBtn"><i class="anticon anticon-plus" - style="transform: scale(1.2);font-weight: 700;"></i>{{"i18nTextDefine_Add" | translate}} - </button> - </div> - <table class="siteWanTab"> - <thead> - <tr> - <th width="4%"> NO.</th> - <th *ngFor="let key of getKeys(this.sotnSdwansitelanParams)">{{key}}</th> - <th width="7%"> Action</th> - </tr> - </thead> - <tbody> - <tr *ngFor="let item of sotnSdwansitelanData; let i = index;" - [ngClass]="{'tr-border':item.tabInputShowSdwansitelan ==false}"> - <td>{{i+1}}</td> - <td *ngFor="let key of getKeys(item);let a = index;"> - <span *ngIf="!tabInputShowSdwansitelan[i]" - title="{{this.templateParameters.sotnvpn.sdwansitelan_list[a]['lable']==getKeys(item)[a] ? this.templateParameters.site.sdwansitewan_list[a].description:null}}">{{item[key]}}</span> - <input nz-input [(ngModel)]="item[key]" *ngIf="tabInputShowSdwansitelan[i] " - title="{{this.templateParameters.sotnvpn.sdwansitelan_list[a]['lable']==getKeys(item)[a] ? this.templateParameters.site.sdwansitewan_list[a].description:null}}" - required="{{item.required==true ? 'required':null}}"> - </td> - <td> - <span class="action" (click)="editSotnSdwansitelan(i+1,item,sotnSdwansitelanData)"><i - class="anticon anticon-edit" style="margin: 0 5px;"></i></span> - <span class="action" (click)="deleteSotnSdwansitelan(i+1,item,sotnSdwansitelanData)"><i - class="anticon anticon-delete"></i></span> - </td> - </tr> - </tbody> - </table> - </div> - </div> - - <div class="action"> - <button nz-button nzType="primary" (click)="addSotnVpn_cancel()">{{"i18nTextDefine_Cancel" | translate}}</button> - <button nz-button nzType="primary" (click)="addSotnVpn_OK()">{{"i18nTextDefine_Add" | translate}}</button> - </div> - </div> - <!-- sitemodel --> - <div class="sitemodel" *ngIf="siteModelShow"> - <h3> {{"i18nTextDefine_Base" | translate}} </h3> - <div class="inputs"> - <ul> - <li *ngFor="let item of this.templateParameters.site.sdwansiteresource_list"> - <span *ngIf="item.required" style="color: red;margin: 0;margin-right: -5px;">*</span><span>{{item.lableShow}}:</span> - <input nz-input [(ngModel)]="siteBaseData[item.lable]" title="{{item.description}}" - required="{{item.required==true ? 'required':null}}"></li> - </ul> - </div> - <div> - <h3>Sdwandevice</h3> - <div> - <div style="width: 100%;text-align: right"> - <button nz-button (click)="addSdwanDevice()" class="addListBtn"><i class="anticon anticon-plus" - style="transform: scale(1.2);font-weight: 700;"></i>{{"i18nTextDefine_Add" | translate}} - </button> - </div> - <table class="siteWanTab"> - <thead> - <tr> - <th width="4%"> NO.</th> - <th *ngFor="let key of getKeys(this.siteCpeData)">{{key}}</th> - <th width="7%"> Action</th> - </tr> - </thead> - <tbody> - <tr *ngFor="let item of siteSdwanDevice; let i = index;" - [ngClass]="{'tr-border':item.tabInputShowDevice ==false}"> - <td>{{i+1}}</td> - <td *ngFor="let key of getKeys(item);let a = index;"> - <span *ngIf="!tabInputShowDevice[i]" - title="{{this.templateParameters.site.sdwandevice_list[a]['lable']==getKeys(item)[a] ? this.templateParameters.site.sdwandevice_list[a].description:null}}">{{item[key]}}</span> - <input nz-input [(ngModel)]="item[key]" *ngIf="tabInputShowDevice[i] " - title="{{this.templateParameters.site.sdwandevice_list[a]['lable']==getKeys(item)[a] ? this.templateParameters.site.sdwandevice_list[a].description:null}}" - required="{{item.required==true ? 'required':null}}"> - </td> - <td> - <span class="action" (click)="editDevicePort(i+1,item,siteSdwanDevice)"><i - class="anticon anticon-edit" style="margin: 0 5px;"></i></span> - <span class="action" (click)="deleteDevicePort(i+1,item,siteSdwanDevice)"><i - class="anticon anticon-delete"></i></span> - </td> - </tr> - </tbody> - </table> - </div> - - - <h3>Sdwansitewan List</h3> - <div> - <div style="width: 100%;text-align: right"> - <button nz-button (click)="addSiteWan()" class="addListBtn"><i class="anticon anticon-plus" - style="transform: scale(1.2);font-weight: 700;"></i>{{"i18nTextDefine_Add" | translate}} - </button> - </div> - <table class="siteWanTab"> - <thead> - <tr> - <th width="4%"> NO.</th> - <th *ngFor="let key of getKeys(this.siteWanParams)">{{key}}</th> - <th width="7%"> Action</th> - </tr> - </thead> - <tbody> - <tr *ngFor="let item of siteWanData; let i = index;" - [ngClass]="{'tr-border':item.tabInputShowWanPort ==false}"> - <td>{{i+1}}</td> - <td *ngFor="let key of getKeys(item);let a = index;"> - <span *ngIf="!tabInputShowWanPort[i]" - title="{{this.templateParameters.site.sdwansitewan_list[a]['lable']==getKeys(item)[a] ? this.templateParameters.site.sdwansitewan_list[a].description:null}}">{{item[key]}}</span> - <input nz-input [(ngModel)]="item[key]" *ngIf="tabInputShowWanPort[i] " - title="{{this.templateParameters.site.sdwansitewan_list[a]['lable']==getKeys(item)[a] ? this.templateParameters.site.sdwansitewan_list[a].description:null}}" - required="{{item.required==true ? 'required':null}}"> - </td> - <td> - <span class="action" (click)="editWanPort(i+1,item,siteWanData)"><i - class="anticon anticon-edit" style="margin: 0 5px;"></i></span> - <span class="action" (click)="deleteWanPort(i+1,item,siteWanData)"><i - class="anticon anticon-delete"></i></span> - </td> - </tr> - </tbody> - </table> - </div> - </div> - - <div class="action"> - <button nz-button nzType="primary" (click)="addsite_cancel()">{{"i18nTextDefine_Cancel" | translate}}</button> - <button nz-button nzType="primary" (click)="addsite_OK()">{{"i18nTextDefine_Add" | translate}}</button> - </div> - </div> - <div class="mask" *ngIf="siteModelShow || sotnVpnModelShow"></div> -</div> 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 deleted file mode 100644 index 5446dc5f..00000000 --- a/usecaseui-portal/src/app/components/e2e-creation/e2e-creation.component.ts +++ /dev/null @@ -1,354 +0,0 @@ -/* - Copyright (C) 2019 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'; -import * as d3 from 'd3'; - -@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.gete2eTemParameters(this.e2e_ns_temParametersContent); - this.getVimInfo(); - this.getSdnControllers(); - } - - @Output() e2eCloseCreate = new EventEmitter(); - @Output() nsCloseCreate = new EventEmitter(); - @Input() createParams; - @Input() e2e_ns_temParametersContent; - - - // e2e serviceTemplateParameters - templateParameters = { - invariantUUID: "", - uuid: "", - name: "", - type: "", - version: "", - description: "", - category: "", - subcategory: "", - customizationUuid: "", - inputs:[], - nestedTemplates:[] - }; - // ns serviceTemplateParameters - nsTemplateParameters = { - inputs:{}, - inputs2:[], - vnfs:[] - }; - roote2e = { - "name": "e2e", - "type": "e2e", - "children": [] - }; - - rootns = { - "name": "ns", - "type": "ns", - "children": [] - }; - - imgmap = { - '1': './assets/images/create-e2e.png', - '2': './assets/images/create-ns.png', - '3': './assets/images/create-vnf.png', - }; - gete2eTemParameters(data) { //Get template parameters - let type = this.createParams.commonParams.templateType == "E2E Service" ? "e2e" : "ns"; - 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"}); - }); - this.templateParameters.nestedTemplates.map((item,index) => { - let nsIndex={ - "name": "ns", - "type": "ns", - "children": [] - }; - nsIndex.children=item.nestedTemplates.map((item,index) => { - return { - "name": "vnf", - "type": "vnf", - } - }); - this.roote2e.children.push(nsIndex); - }); - console.log(this.templateParameters); - }else if(type == "ns"){ - if(data["model"]!=undefined && typeof data["model"]=='string'){ - this.nsTemplateParameters = JSON.parse(data["model"]); - }else{ - 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}) - } - this.rootns.children=this.nsTemplateParameters.vnfs.map((item,index) => { - return { - "name": "vnf", - "type": "vnf", - } - }); - console.log(this.nsTemplateParameters); - } - - this.drawImage(type) - - } - 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: "", - COS:"", - EBS:"", - 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((ipnut)=>{ - this.service.parameters.requestInputs[ipnut.name] = ipnut.value == undefined ? ipnut.defaultValue : ipnut.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:{ - cloudOwner: input.value.name, - cloudRegionId:input.value.id - } - }; - nsService.parameters.locationConstraints.push(location); - }else{ - nsService.parameters.requestInputs[input.name] = input.value == undefined ? input.defaultValue : input.value; - } - }) - this.service.parameters.resources.push(nsService); - }) - console.log(this.service); - this.service.parameters.requestInputs['orchestrator'] = this.createParams.orchestrator.name; - if(this.createParams.isSol005Interface){ - this.service.parameters.requestInputs['isSol005Interface'] = this.createParams.isSol005Interface; - } - this.e2eCloseCreate.emit({service: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.properties.id, - locationConstraints: { - cloudOwner: vnf.value.name, - cloudRegionId:vnf.value.id - } - } - 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(); - } - - - - drawImage(type) { - if (type == "e2e") { - this.render(this.roote2e, this.imgmap) - } else if (type == "ns") { - this.render(this.rootns, this.imgmap) - } - - - } - - // e2e or NS draw d3 topo - render(data, imgmap) { - let width = document.getElementById("createChart").clientWidth, - height = document.getElementById("createChart").clientHeight; - let cluster = d3.layout.tree() - .size([width, height]); - let diagonal = d3.svg.diagonal() - .projection(function (d) { - return [d.x-18, d.y+40]; - }); - let svg = d3.select("svg"); - - //marker - let marker = - svg.append("marker") - .attr("id", "resolved") - .attr("markerUnits", "strokeWidth") - .attr("markerUnits", "userSpaceOnUse") - .attr("viewBox", "0 -5 10 10") - .attr("refX", 22) - .attr("refY", 0) - .attr("markerWidth", 20) - .attr("markerHeight", 20) - .attr("orient", "auto") - .attr("stroke-width", 1) - .append("circle") - .attr("cx", 5) - .attr("cy", 0) - .attr("r", 2) - .attr("stroke-width", 1) - .style("stroke", "#2F8BF7") - .attr('fill', 'white'); - let i = 0; - let nodes = cluster.nodes(data).reverse(); - nodes.forEach(function (d) { - d.y = d.depth * 200+100; - - }); - - let links = cluster.links(nodes); - - let linkEnter = svg.selectAll("path.link") - .data(links); - - linkEnter.enter().append("path") - .attr("class", "link") - .attr("d", diagonal) - .style("stroke", "#2F8BF7") - .style('stroke-width', '1px') - .attr("marker-end", "url(#resolved)") - .style("fill", "none") - // .style("fill-opacity", 1) - .attr("id", function (d, i) { - return "mypath" + i; - }); - - let node = svg.selectAll(".node") - .data(nodes) - .enter() - .append("g") - .attr("class", "node") - .attr("transform", function (d) { - return "translate(" + (d.x + -50) + "," + (d.y) + ")"; - }); - - node.append('image') - .attr('xlink:href', function (d) { - if(d.type=="e2e"){ - return imgmap[1]; - }else if(d.type=="ns"){ - return imgmap[2]; - }else if(d.type=="vnf"){ - return imgmap[3]; - } - - }) - .style('width', '12%') - .style("cursor","pointer") - .attr("x", 0) - .attr("y", 0) - .attr("rx", 3); - - - } - -} diff --git a/usecaseui-portal/src/app/components/e2e-detail/e2e-detail.component.ts b/usecaseui-portal/src/app/components/e2e-detail/e2e-detail.component.ts deleted file mode 100644 index 5affeb97..00000000 --- a/usecaseui-portal/src/app/components/e2e-detail/e2e-detail.component.ts +++ /dev/null @@ -1,243 +0,0 @@ -/* - Copyright (C) 2019 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'; -import * as d3 from 'd3'; - -@Component({ - selector: 'app-e2e-detail', - templateUrl: './e2e-detail.component.html', - styleUrls: ['./e2e-detail.component.less'] -}) -export class E2eDetailComponent implements OnInit { - - constructor(private myhttp: MyhttpService) { - } - - ngOnInit() { - this.dataInit(); - } - - @Input() detailParams; - - @Output() closeDetail = new EventEmitter(); - serviceInstanceName: any; - serviceType: any; - input_parameters: any; - - // e2e - service = { - name: "", - description: "", - }; - e2e_nestedTemplates = []; - e2e_requestInputs: any; - - ns_service = { - name:"", - description:"" - }; - ns_nestedTemplates = []; - ns_requestInputs = {}; - roote2e = { - "name": "e2e", - "type": "e2e", - "children": [] - }; - - rootns = { - "name": "ns", - "type": "ns", - "children": [] - }; - - imgmap = { - '1': './assets/images/create-e2e.png', - '2': './assets/images/create-ns.png', - '3': './assets/images/create-vnf.png', - }; - - getKeys(item) { - return Object.keys(item); - } - - dataInit() { - console.log(this.detailParams); - this.serviceInstanceName = this.detailParams['service-instance-name'] || this.detailParams["nsName"]; - if (this.detailParams.serviceDomain == 'E2E Service'){ - this.input_parameters = JSON.stringify(this.detailParams['input-parameters']); - this.input_parameters = JSON.parse(this.input_parameters); - console.log(this.input_parameters); - this.service = { - name:this.input_parameters.service.name, - description: this.input_parameters.service.description, - }; - if(this.input_parameters.service.parameters.requestInputs!=undefined && Object.keys(this.input_parameters.service.parameters.requestInputs).length>0){ - this.e2e_requestInputs = this.input_parameters.service.parameters.requestInputs; - } - if(this.input_parameters.service.parameters.resources!=undefined && this.input_parameters.service.parameters.resources.length>0){ - this.input_parameters.service.parameters.resources.map((item,i) => { - let nestedTemplates={ - name:null, - vnfs:[] - }; - nestedTemplates.name= item.resourceName; - item.parameters.locationConstraints.map((its,k) => { - nestedTemplates.vnfs.push({ - "vf_location":its.locationConstraints.cloudOwner - }) - }); - this.e2e_nestedTemplates.push(nestedTemplates); - - let nsIndex={ - "name": "ns", - "type": "ns", - "children": [] - }; - nsIndex.children=item.parameters.locationConstraints.map((itemits,index) => { - return { - "name": "vnf", - "type": "vnf", - } - }); - this.roote2e.children.push(nsIndex); - }); - console.log(this.e2e_nestedTemplates); - console.log(this.e2e_requestInputs); - } - }else if(this.detailParams.serviceDomain == 'Network Service'){ - this.ns_service = { - name:this.detailParams.name || this.detailParams['service-instance-name'], - description: this.detailParams.description || null - }; - if(this.detailParams.requestInputs!=undefined && Object.keys(this.detailParams.requestInputs).length>0){ - this.ns_requestInputs = this.detailParams.requestInputs; - } - this.ns_nestedTemplates = this.detailParams.childServiceInstances; - this.rootns.children=this.ns_nestedTemplates.map((item,index) => { - return { - "name": "vnf", - "type": "vnf" - } - }); - console.log(this.ns_nestedTemplates); - console.log(this.ns_requestInputs); - } - this.drawImage(this.detailParams.serviceDomain) - } - - goback() { - this.closeDetail.emit(); - } - - drawImage(type) { - if (type == "E2E Service") { - this.render(this.roote2e, this.imgmap) - } else if (type == "Network Service") { - this.render(this.rootns, this.imgmap) - } - - - } - - // draw d3 charts - render(data, imgmap) { - let width = document.getElementById("createChart").clientWidth, - height = document.getElementById("createChart").clientHeight; - let cluster = d3.layout.tree() - .size([width, height]); - let diagonal = d3.svg.diagonal() - .projection(function (d) { - return [d.x-18, d.y+40]; - }); - let svg = d3.select("svg"); - - //marker - let marker = - svg.append("marker") - .attr("id", "resolved") - .attr("markerUnits", "strokeWidth") - .attr("markerUnits", "userSpaceOnUse") - .attr("viewBox", "0 -5 10 10") - .attr("refX", 22) - .attr("refY", 0) - .attr("markerWidth", 20) - .attr("markerHeight", 20) - .attr("orient", "auto") - .attr("stroke-width", 1) - .append("circle") - .attr("cx", 5) - .attr("cy", 0) - .attr("r", 2) - .attr("stroke-width", 1) - .style("stroke", "#2F8BF7") - .attr('fill', 'white'); - let i = 0; - let nodes = cluster.nodes(data).reverse(); - nodes.forEach(function (d) { - d.y = d.depth * 200+100; - - }); - - let links = cluster.links(nodes); - - let linkEnter = svg.selectAll("path.link") - .data(links); - - linkEnter.enter().append("path") - .attr("class", "link") - .attr("d", diagonal) - .style("stroke", "#2F8BF7") - .style('stroke-width', '1px') - .attr("marker-end", "url(#resolved)") - .style("fill", "none") - // .style("fill-opacity", 1) - .attr("id", function (d, i) { - return "mypath" + i; - }); - - let node = svg.selectAll(".node") - .data(nodes) - .enter() - .append("g") - .attr("class", "node") - .attr("transform", function (d) { - return "translate(" + (d.x + -50) + "," + (d.y) + ")"; - }); - - node.append('image') - .attr('xlink:href', function (d) { - if(d.type=="e2e"){ - return imgmap[1]; - }else if(d.type=="ns"){ - return imgmap[2]; - }else if(d.type=="vnf"){ - return imgmap[3]; - } - - }) - .style('width', '12%') - .style("cursor","pointer") - .attr("x", 0) - .attr("y", 0) - .attr("rx", 3); - - - } - - -} diff --git a/usecaseui-portal/src/app/dataInterface.ts b/usecaseui-portal/src/app/core/models/dataInterface.ts index e092bd03..e092bd03 100644 --- a/usecaseui-portal/src/app/dataInterface.ts +++ b/usecaseui-portal/src/app/core/models/dataInterface.ts diff --git a/usecaseui-portal/src/app/homes.service.spec.ts b/usecaseui-portal/src/app/core/services/homes.service.spec.ts index 9c03dcb2..9c03dcb2 100644 --- a/usecaseui-portal/src/app/homes.service.spec.ts +++ b/usecaseui-portal/src/app/core/services/homes.service.spec.ts diff --git a/usecaseui-portal/src/app/homes.service.ts b/usecaseui-portal/src/app/core/services/homes.service.ts index b9b9d5bf..8d3f4684 100644 --- a/usecaseui-portal/src/app/homes.service.ts +++ b/usecaseui-portal/src/app/core/services/homes.service.ts @@ -16,7 +16,7 @@ import { Injectable } from '@angular/core'; import { HttpClient, HttpHeaders, HttpParams, HttpResponse } from '@angular/common/http'; import { Observable } from 'rxjs/Observable'; -import { homeData, homeVmLineData, servicesSelectData, servicesTableData, creatensData, onboardTableData, onboardDataVNF, onboardDataPNF , baseUrl} from './dataInterface'; +import { homeData, homeVmLineData, servicesSelectData, servicesTableData, creatensData, onboardTableData, onboardDataVNF, onboardDataPNF, baseUrl } from '../models/dataInterface'; @Injectable() export class HomesService { @@ -29,18 +29,17 @@ export class HomesService { home_performanceData: this.baseUrl + "/performance/queryAllSourceNames", home_alarmData: this.baseUrl + "/alarm/statusCount", home_alarmChartData: this.baseUrl + "/alarm/diagram", - home_servicebarData:this.baseUrl + "", + home_servicebarData: this.baseUrl + "", home_servicebarnsData: this.baseUrlbar + "ns-packages", home_servicebarvnfData: this.baseUrlbar + "vnf-packages", - home_servicebarpnfData: this.baseUrlbar + "pnf-packages", + home_servicebarpnfData: this.baseUrlbar + "pnf-packages", sourceNames: this.baseUrl + "/alarm/getSourceNames", - listSortMasters:this.baseUrl+"/listSortMasters", - currentLanguage:"/api/portal-auxapi/languageSetting/user/", - + listSortMasters: this.baseUrl + "/listSortMasters", + currentLanguage: "/api/portal-auxapi/languageSetting/user/", } - // Time formatting milliseconds to normal - dateformater(vmstime) { + // Time formatting milliseconds to normal + dateformater(vmstime) { if (!vmstime) { return '' } @@ -71,22 +70,22 @@ export class HomesService { let params = new HttpParams({ fromObject: paramsObj }); return this.http.get<any>(this.url.home_alarmChartData, { params }); } - - getHomeServiceBarData(){ + + getHomeServiceBarData() { return this.http.get<any>(this.url.home_servicebarData); } - getHomeServiceBarNsData(){ + getHomeServiceBarNsData() { return this.http.get<any>(this.url.home_servicebarnsData); } - getHomeServiceBarVnfData(){ + getHomeServiceBarVnfData() { return this.http.get<any>(this.url.home_servicebarvnfData); } - getHomeServiceBarPnfData(){ + getHomeServiceBarPnfData() { return this.http.get<any>(this.url.home_servicebarpnfData); } - // alarm data - getAlarmFormData(currentPage: number, pageSize: number, sourceName?: string, priority?: string, startTime?: string, endTime?: string, vfStatus?: string) { + // alarm data + getAlarmFormData(currentPage: number, pageSize: number, sourceName?: string, priority?: string, startTime?: string, endTime?: string, vfStatus?: string) { return this.http.get<any>(this.baseUrl + '/alarm/' + '/' + currentPage + '/' + pageSize + '?sourceName=' + sourceName + '&priority=' + priority + '&startTime=' + startTime + '&endTime=' + endTime + '&vfStatus=' + vfStatus); } @@ -121,12 +120,12 @@ export class HomesService { } - getListSortMasters(){ - return this.http.get<any>(this.url.listSortMasters); - } + getListSortMasters() { + return this.http.get<any>(this.url.listSortMasters); + } - getCurrentLanguage(currentloginId){ - let url=this.url.currentLanguage+currentloginId; - return this.http.get<any>(url); - } + getCurrentLanguage(currentloginId) { + let url = this.url.currentLanguage + currentloginId; + return this.http.get<any>(url); + } } diff --git a/usecaseui-portal/src/app/managemencs.service.ts b/usecaseui-portal/src/app/core/services/managemencs.service.ts index 03ddb2e2..a28885d8 100644 --- a/usecaseui-portal/src/app/managemencs.service.ts +++ b/usecaseui-portal/src/app/core/services/managemencs.service.ts @@ -1,57 +1,57 @@ import { Injectable } from '@angular/core'; import { HttpClient, HttpHeaders, HttpParams, HttpResponse } from '@angular/common/http'; import { Observable } from 'rxjs/Observable'; -import {baseUrl} from './dataInterface'; +import { baseUrl } from '../models/dataInterface'; @Injectable() export class ManagemencsService { - constructor(private http: HttpClient) { } + constructor(private http: HttpClient) { } baseUrl = baseUrl.baseUrl; - + /* line up */ url = { - customers:this.baseUrl + "/uui-lcm/customers", /* get */ - serviceType:this.baseUrl + "/uui-lcm/customers/"+"*_*"+"/service-subscriptions", /* get */ - CustomersPir:this.baseUrl + "/uui-lcm/serviceNumByCustomer", /* get */ - CustomersColumn:this.baseUrl + "/uui-lcm/serviceNumByServiceType/"+"*_*", /* get */ - createCustomer:this.baseUrl+"/uui-lcm/customers/", /* put */ - createServiceType:this.baseUrl+"/uui-lcm/customers/*_*/service-subscriptions/*+*", /* put */ - getCustomerresourceVersion:this.baseUrl+"/uui-lcm/customers/*_*", /* put */ - deleteCustomer:this.baseUrl+"/uui-lcm/customers?customerId=*_*&resourceVersion=*+*", - getServiceTypeResourceVersion:this.baseUrl+"/uui-lcm/customers/*_*/service-subscriptions/*+*", - deleteServiceType:this.baseUrl+"/uui-lcm/customers/*_*/service-subscriptions/*+*?resourceVersion=*@* ", + customers: this.baseUrl + "/uui-lcm/customers", /* get */ + serviceType: this.baseUrl + "/uui-lcm/customers/" + "*_*" + "/service-subscriptions", /* get */ + CustomersPir: this.baseUrl + "/uui-lcm/serviceNumByCustomer", /* get */ + CustomersColumn: this.baseUrl + "/uui-lcm/serviceNumByServiceType/" + "*_*", /* get */ + createCustomer: this.baseUrl + "/uui-lcm/customers/", /* put */ + createServiceType: this.baseUrl + "/uui-lcm/customers/*_*/service-subscriptions/*+*", /* put */ + getCustomerresourceVersion: this.baseUrl + "/uui-lcm/customers/*_*", /* put */ + deleteCustomer: this.baseUrl + "/uui-lcm/customers?customerId=*_*&resourceVersion=*+*", + getServiceTypeResourceVersion: this.baseUrl + "/uui-lcm/customers/*_*/service-subscriptions/*+*", + deleteServiceType: this.baseUrl + "/uui-lcm/customers/*_*/service-subscriptions/*+*?resourceVersion=*@* ", }; // Get all customers getAllCustomers() { - return this.http.get<any>(this.url.customers); + return this.http.get<any>(this.url.customers); } // get all servicetype getServiceTypes(customer) { - let url = this.url.serviceType.replace("*_*", customer.id); - console.log(url) - return this.http.get<any>(url); + let url = this.url.serviceType.replace("*_*", customer.id); + console.log(url) + return this.http.get<any>(url); } // get Customer Pir - getCustomersPie(){ - return this.http.get<any>(this.url.CustomersPir); + getCustomersPie() { + return this.http.get<any>(this.url.CustomersPir); } // get Customer ber - getCustomersColumn(customer){ - let url = this.url.CustomersColumn.replace("*_*", customer.id); - return this.http.get<any>(url); + getCustomersColumn(customer) { + let url = this.url.CustomersColumn.replace("*_*", customer.id); + return this.http.get<any>(url); } // create New Customer createCustomer(customer, createParams) { let url = this.url.createCustomer + customer; // return this.http.get(url, createParams);//location - return this.http.put(url,createParams);//online + return this.http.put(url, createParams);//online } createServiceType(createParams) { diff --git a/usecaseui-portal/src/app/core/services/myhttp.service.ts b/usecaseui-portal/src/app/core/services/myhttp.service.ts new file mode 100644 index 00000000..9ed75b00 --- /dev/null +++ b/usecaseui-portal/src/app/core/services/myhttp.service.ts @@ -0,0 +1,235 @@ +/* + Copyright (C) 2019 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 { Injectable } from '@angular/core'; +import { HttpClient, HttpHeaders, HttpParams, HttpResponse } from '@angular/common/http'; +import { Observable } from 'rxjs/Observable'; +import { homeData, homeVmLineData, servicesSelectData, servicesTableData, creatensData, onboardTableData, onboardDataVNF, onboardDataPNF, baseUrl } from '../models/dataInterface'; + +@Injectable() +export class MyhttpService { + + constructor(private http: HttpClient) { } + baseUrl = baseUrl.baseUrl; + url = { + listSortMasters: this.baseUrl + "/listSortMasters", + customers: this.baseUrl + "/uui-lcm/customers", + orchestrators: this.baseUrl + "/uui-lcm/orchestrators", + serviceType: this.baseUrl + "/uui-lcm/customers/" + "*_*" + "/service-subscriptions", + servicesTableData: this.baseUrl + '/uui-lcm/service-instances', + serviceTemplates: this.baseUrl + "/uui-lcm/service-templates", + templateParameters: this.baseUrl + "/uui-lcm/fetchCCVPNTemplateData/*_*", + e2etemplateParameters: this.baseUrl + "/uui-lcm/service-templates/" + "*_*" + "?toscaModelPath=", + nstemplateParameters: this.baseUrl + "/uui-lcm/fetchNsTemplateData", + vimInfo: this.baseUrl + "/uui-lcm/locations/", + sdnControllers: this.baseUrl + "/uui-lcm/sdnc-controllers/", + addressData: this.baseUrl + "/uui-sotn/getOssInvenory", + createService: this.baseUrl + "/uui-lcm/services", + ns_createService: this.baseUrl + "/uui-lcm/createNetworkServiceInstance", + ns_createService2: this.baseUrl + "/uui-lcm/instantiateNetworkServiceInstance", + deleteService: this.baseUrl + "/uui-lcm/services/", + ns_deleteService: this.baseUrl + "/uui-lcm/deleteNetworkServiceInstance?ns_instance_id=", + ns_stopService: this.baseUrl + "/uui-lcm/terminateNetworkServiceInstance?ns_instance_id=", + ns_healService: this.baseUrl + "/uui-lcm/healNetworkServiceInstance?ns_instance_id=", + vnfInfo: this.baseUrl + "/uui-lcm/VnfInfo/", + progress: this.baseUrl + "/uui-lcm/services/" + "*_*" + "/operations/", + nsProgress: this.baseUrl + "/uui-lcm/jobs/getNsLcmJobStatus/" + "*_*" + "?responseId=0&serviceInstanceId=", + e2eScale: this.baseUrl + "/services/scaleServices/", + e2e_nsdata: this.baseUrl + "/getServiceInstanceById/customerId/", + updateccvpn: this.baseUrl + "/uui-lcm/services/updateService/", + + allottedResource: this.baseUrl + "/uui-sotn/getAllottedResources", + pnfDetail: this.baseUrl + "/uui-sotn/getPnfInfo/", + connectivity: this.baseUrl + "/uui-sotn/getConnectivityInfo/", + vpnBinding: this.baseUrl + "/uui-sotn/getPinterfaceByVpnId/", + } + + // serviceTable list + getServicesTableData(paramsObj): Observable<HttpResponse<servicesTableData>> { + let params = new HttpParams({ fromObject: paramsObj }); + return this.http.get<servicesTableData>(this.url.servicesTableData, { observe: 'response', params }); + } + + //--------------------------------------------------------------------------------- + + // Get all customers + getAllCustomers() { + return this.http.get<any>(this.url.customers); + } + + // Get all Orchestrators + getAllOrchestrators() { + return this.http.get<any>(this.url.orchestrators); + } + + // Get relevant serviceType + getServiceTypes(customer) { + let url = this.url.serviceType.replace("*_*", customer.id); + return this.http.get<any>(url); + } + + + // Get all template types + getAllServiceTemplates(type) { + if (type == "Network Service") { + let nsUrl = this.url.serviceTemplates.replace("service-templates", "listNsTemplates").replace("serviceTemplates2", "serviceTemplates-ns"); + console.log(nsUrl); + return this.http.get<any>(nsUrl); + } + return this.http.get<any>(this.url.serviceTemplates); + } + + + //Get template input parameters + getTemplateParameters(type, template) { + // let url = this.url.templateParameters.replace("*_*",type) + template.toscaModelURL; //Local simulation + if (type == "ns") { + let body = { + csarId: template.id, + inputs: "" + }; + return this.http.post<any>(this.url.nstemplateParameters, body); + } else if (type == "e2e") { + let url = this.url.e2etemplateParameters.replace("*_*", template.uuid) + template.toscaModelURL; + return this.http.get<any>(url); + } else { + let body = { + csarId: template.uuid, + packageType: "Service", + inputs: "" + }; + let url = this.url.templateParameters.replace("*_*", template.uuid); + return this.http.post<any>(url, body); + } + } + + getVimInfo() { + return this.http.get<any>(this.url.vimInfo); + }; + getSdnControllers() { + return this.http.get<any>(this.url.sdnControllers); + } + + // Create interface + createInstance(requestBody, createParams) { + // return this.http.get<any>(this.url.createService + createParams); //Local simulation + return this.http.post<any>(this.url.createService + createParams, requestBody); + } + nsCreateInstance(requestBody) { + // return this.http.get<any>(this.url.ns_createService); //Local simulation + return this.http.post<any>(this.url.ns_createService, requestBody); + } + nsCreateInstance2(params, requestBody) { + // return this.http.get<any>(this.url.ns_createService2 + params); //Local simulation + return this.http.post<any>(this.url.ns_createService2 + params, requestBody); + } + + updateccvpn(id, requestBody) { + console.log(id); + console.log(requestBody); + //return this.http.get<any>(this.url.updateccvpn + id); //local + return this.http.put<any>(this.url.updateccvpn + id, requestBody);// online + } + // Delete interface + deleteInstance(obj) { + let httpOptions = { + headers: new HttpHeaders({ + 'Content-Type': 'application/json', + 'Accept': 'application/json', + 'Authorization': 'Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==' + }), + body: { + 'globalSubscriberId': obj.globalSubscriberId, + 'serviceType': obj.serviceType.name + } + }; + // return this.http.get<any>(this.url.deleteService); //Local simulation + return this.http.delete<any>(this.url.deleteService + obj.serviceInstanceId, httpOptions); + } + nsDeleteInstance(id) { + // return this.http.get<any>(this.url.ns_deleteService); //Local simulation + return this.http.delete<any>(this.url.ns_deleteService + id); + } + stopNsService(id, requestBody) { //You need to terminate before deleting + // return this.http.get<any>(this.url.ns_stopService); //Local simulation + return this.http.post<any>(this.url.ns_stopService + id, requestBody); + } + + getVnfInfo(id) { + return this.http.get<any>(this.url.vnfInfo + id); + } + healNsService(id, requestBody) { + // return this.http.get<any>(this.url.ns_healService); //Local simulation + return this.http.post<any>(this.url.ns_healService + id, requestBody); + } + + // scale + scaleE2eService(id, requestBody) { + // return this.http.get<any>(this.url.e2eScale + id); + return this.http.post<any>(this.url.e2eScale + id, requestBody); + } + getE2e_nsData(paramsObj) { + let params = new HttpParams({ fromObject: paramsObj }); + return this.http.get<any>(this.url.e2e_nsdata, { params }); + } + + // Query progress interface + getProgress(obj) { + let url = this.url.progress.replace("*_*", obj.serviceId) + obj.operationId + "?operationType=" + obj.operationType; + return this.http.get<any>(url); + } + getNsProgress(jobid, serviceId, operationType) { + let url = this.url.nsProgress.replace("*_*", jobid) + serviceId + "&operationType=" + operationType; + return this.http.get<any>(url); + } + + // Get allotted-resource to get tp and pnf values + getAllottedResource(obj) { + let params = new HttpParams({ fromObject: obj }); + let url = this.url.allottedResource; + return this.http.get<any>(url, { params }); + } + //Get the corresponding domain (network-resource) by pnf value + getPnfDetail(name) { + let url = this.url.pnfDetail + name; + return this.http.get<any>(url); + } + //Get connectivity by sotn, find vpn-id + getSotnConnectivity(id) { + let url = this.url.connectivity + id; + return this.http.get<any>(url); + } + //Find tp and pnf by vpn-id + getVpnBinding(id) { + let url = this.url.vpnBinding + id; + return this.http.get<any>(url); + } + // Time formatting milliseconds to normal + dateformater(vmstime) { + if (!vmstime) { + return '' + } + let mstime = Number((vmstime + '').slice(0, 13)); + let time = new Date(mstime); + let year = time.getFullYear(); + let month = time.getMonth() + 1; + let day = time.getDate(); + let hours = time.getHours(); + let minutes = time.getMinutes(); + let seconds = time.getSeconds(); + let formattime = year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds; + return formattime; + } +} diff --git a/usecaseui-portal/src/app/networkHttpservice.service.ts b/usecaseui-portal/src/app/core/services/networkHttpservice.service.ts index d09f0025..8af6d292 100644 --- a/usecaseui-portal/src/app/networkHttpservice.service.ts +++ b/usecaseui-portal/src/app/core/services/networkHttpservice.service.ts @@ -15,13 +15,13 @@ */ import { Injectable } from '@angular/core'; import { HttpClient, HttpHeaders, HttpParams, HttpResponse } from '@angular/common/http'; -import { baseUrl} from './dataInterface'; +import { baseUrl } from '../models/dataInterface'; @Injectable() export class networkHttpservice { - constructor(private http:HttpClient) { } + constructor(private http: HttpClient) { } // baseUrl = "./assets/json/";//Local environment // url={ @@ -42,81 +42,81 @@ export class networkHttpservice { // baseUrl = "http://10.73.242.244:8082/uui-sotn/";//Online environment // baseUrl = "http://172.19.44.223/api/usecaseui-server/v1/uui-sotn/";//Online environment baseUrl = baseUrl.baseUrl + "/uui-sotn/";//Online environment - url={ - "getNetworkD3Data":this.baseUrl + "getNetWorkResources", - "getLogicalLinksData":this.baseUrl + "getLogicalLinks", - "getPInterfacesData1":this.baseUrl + "getPinterfaceByPnfName/", - "getPInterfacesData2":this.baseUrl + "getPinterfaceByPnfName/", - "createLink":this.baseUrl + "createLink/", - "querySpecificLinkInfo":this.baseUrl + "getSpecificLogicalLink/", - "queryCloudUrl":this.baseUrl + "getHostUrl/", - "queryExtAAIIdVersion":this.baseUrl + "getExtAaiId/", - "createNetwrok":this.baseUrl + "createTopoNetwork/", - "createPnf":this.baseUrl + "createPnf/", - "createTp":this.baseUrl + "pnf/", - "createCloudLink":this.baseUrl + "createLink/", - "createCloudUrl":this.baseUrl + "createHostUrl/", - "deleteLink":this.baseUrl + "deleteLink/", - "deleteCloud":this.baseUrl+"deleteExtNetWork" + url = { + "getNetworkD3Data": this.baseUrl + "getNetWorkResources", + "getLogicalLinksData": this.baseUrl + "getLogicalLinks", + "getPInterfacesData1": this.baseUrl + "getPinterfaceByPnfName/", + "getPInterfacesData2": this.baseUrl + "getPinterfaceByPnfName/", + "createLink": this.baseUrl + "createLink/", + "querySpecificLinkInfo": this.baseUrl + "getSpecificLogicalLink/", + "queryCloudUrl": this.baseUrl + "getHostUrl/", + "queryExtAAIIdVersion": this.baseUrl + "getExtAaiId/", + "createNetwrok": this.baseUrl + "createTopoNetwork/", + "createPnf": this.baseUrl + "createPnf/", + "createTp": this.baseUrl + "pnf/", + "createCloudLink": this.baseUrl + "createLink/", + "createCloudUrl": this.baseUrl + "createHostUrl/", + "deleteLink": this.baseUrl + "deleteLink/", + "deleteCloud": this.baseUrl + "deleteExtNetWork" }; //d3data - getNetworkD3Data(){ + getNetworkD3Data() { return this.http.get<any>(this.url["getNetworkD3Data"]); } //Initialize the connection logical-links - getLogicalLinksData(){ + getLogicalLinksData() { return this.http.get<any>(this.url["getLogicalLinksData"]); } //Query the tp data corresponding to the specified node - getPInterfacesData1(paramsObj){ - return this.http.get<any>(this.url['getPInterfacesData1']+paramsObj["pnfName"]); + getPInterfacesData1(paramsObj) { + return this.http.get<any>(this.url['getPInterfacesData1'] + paramsObj["pnfName"]); } - getPInterfacesData2(paramsObj){ - return this.http.get<any>(this.url["getPInterfacesData2"]+paramsObj["pnfName"]); + getPInterfacesData2(paramsObj) { + return this.http.get<any>(this.url["getPInterfacesData2"] + paramsObj["pnfName"]); } //Create a connection interface - createLink(paramsObj){ - return this.http.put<any>(this.url["createLink"]+paramsObj["link-name"],paramsObj); + createLink(paramsObj) { + return this.http.put<any>(this.url["createLink"] + paramsObj["link-name"], paramsObj); } //Query the specified single cable interface - querySpecificLinkInfo(paramsObj){ - return this.http.get<any>(this.url["querySpecificLinkInfo"]+paramsObj["link-name"]); + querySpecificLinkInfo(paramsObj) { + return this.http.get<any>(this.url["querySpecificLinkInfo"] + paramsObj["link-name"]); } //Query external cloud host this.url address interface - queryCloudUrl(aaiId){ - return this.http.get<any>(this.url["queryCloudUrl"]+aaiId); + queryCloudUrl(aaiId) { + return this.http.get<any>(this.url["queryCloudUrl"] + aaiId); } - queryExtAAIIdVersion(aaiId){ - return this.http.get<any>(this.url["queryExtAAIIdVersion"]+aaiId); + queryExtAAIIdVersion(aaiId) { + return this.http.get<any>(this.url["queryExtAAIIdVersion"] + aaiId); } //Create an external cloud newwork interface - createNetwrok(paramsObj){ - return this.http.put<any>(this.url["createNetwrok"]+paramsObj["network-id"],paramsObj); + createNetwrok(paramsObj) { + return this.http.put<any>(this.url["createNetwrok"] + paramsObj["network-id"], paramsObj); } //Create an external cloud pnf interface - createPnf(paramsObj){ - return this.http.put<any>(this.url["createPnf"]+paramsObj["pnf-name"],paramsObj); + createPnf(paramsObj) { + return this.http.put<any>(this.url["createPnf"] + paramsObj["pnf-name"], paramsObj); } //Create an external cloud Tp interface - createTp(paramsObj,cloudNodeName){ - let str=cloudNodeName+"/p-interfaces/p-interface/"+paramsObj["interface-name"]+"/createTerminationPoint"; - return this.http.put<any>(this.url["createTp"]+str,paramsObj); + createTp(paramsObj, cloudNodeName) { + let str = cloudNodeName + "/p-interfaces/p-interface/" + paramsObj["interface-name"] + "/createTerminationPoint"; + return this.http.put<any>(this.url["createTp"] + str, paramsObj); } //Create an external cloud link interface - createCloudLink(paramsObj){ - return this.http.put<any>(this.url["createCloudLink"]+paramsObj["link-name"],paramsObj); + createCloudLink(paramsObj) { + return this.http.put<any>(this.url["createCloudLink"] + paramsObj["link-name"], paramsObj); } //Create an external cloud host url interface - createCloudUrl(paramsObj){ - return this.http.put<any>(this.url["createCloudUrl"]+paramsObj["aai-id"],paramsObj); + createCloudUrl(paramsObj) { + return this.http.put<any>(this.url["createCloudUrl"] + paramsObj["aai-id"], paramsObj); } //Delete connection - deleteLink(paramsObj){ - let str=paramsObj["logical-link"]+"/"+paramsObj["resource-version"]; - return this.http.delete<any>((this.url["deleteLink"]+str)); + deleteLink(paramsObj) { + let str = paramsObj["logical-link"] + "/" + paramsObj["resource-version"]; + return this.http.delete<any>((this.url["deleteLink"] + str)); } - deleteCloudLink(paramsObj){ - let str="?extNetworkId="+paramsObj["aaiId"]+"&resourceVersion="+paramsObj["version"]; - return this.http.delete<any>((this.url["deleteCloud"]+str)); + deleteCloudLink(paramsObj) { + let str = "?extNetworkId=" + paramsObj["aaiId"] + "&resourceVersion=" + paramsObj["version"]; + return this.http.delete<any>((this.url["deleteCloud"] + str)); } } diff --git a/usecaseui-portal/src/app/onboard.service.ts b/usecaseui-portal/src/app/core/services/onboard.service.ts index 1c3778a4..fb5107b4 100644 --- a/usecaseui-portal/src/app/onboard.service.ts +++ b/usecaseui-portal/src/app/core/services/onboard.service.ts @@ -16,7 +16,7 @@ import { Injectable } from '@angular/core'; import { HttpClient, HttpHeaders, HttpParams, HttpResponse } from '@angular/common/http'; import { Observable } from 'rxjs/Observable'; -import { onboardTableData, onboardDataVNF, onboardDataPNF , baseUrl} from './dataInterface'; +import { onboardTableData, onboardDataVNF, onboardDataPNF, baseUrl } from '../models/dataInterface'; @Injectable() export class onboardService { @@ -84,9 +84,9 @@ export class onboardService { onboardVNF: this.baseUrl + "vf-packages", //POST //Delete ns package - deleteNspack: this.baseUrl + "deleteNsdPackage?nsdInfoId=", + deleteNspack: this.baseUrl + "deleteNsdPackage?nsdInfoId=", // Delete Vnf vfc package - deleteVnfPack: this.baseUrl + "deleteVnfPackage?vnfPkgId=", + deleteVnfPack: this.baseUrl + "deleteVnfPackage?vnfPkgId=", // Delete Pnf package deletePnfPack: this.baseUrl + "deletePnfPackage?pnfdInfoId=", @@ -109,7 +109,7 @@ export class onboardService { return this.http.get<any>(this.url["onboardTableData"]); } // NS SDC Data - getSDC_NSTableData(){ + getSDC_NSTableData() { // return this.http.get<any>(this.url.sdc_nsListData); return this.http.get<any>(this.url["sdc_nsListData"]); } @@ -121,7 +121,7 @@ export class onboardService { getSDC_VNFTableData() { return this.http.get<any>(this.url["sdc_vnfListData"]); } - + // PNF Data getOnboardTablePnfData() { return this.http.get<any>(this.url.onboardDataPNF); @@ -129,8 +129,8 @@ export class onboardService { //------------------------------------------------------------------------------------- //create--Get the id after dragging the file before uploading //on-line post - getCreatensData(url_upId,requestBody) { - return this.http.post<any>(this.url.creatensData.replace("_jsonData",url_upId),requestBody); //on-line + getCreatensData(url_upId, requestBody) { + return this.http.post<any>(this.url.creatensData.replace("_jsonData", url_upId), requestBody); //on-line } //create--Get the id after dragging the file before uploading //local json get @@ -170,7 +170,7 @@ export class onboardService { } // Delete Pnf package - deletePnfIdData(paramsObj){ + deletePnfIdData(paramsObj) { //Local test // return this.http.get<any>(this.url.deletePnfPack); //online test diff --git a/usecaseui-portal/src/app/core/services/text.service.spec.ts b/usecaseui-portal/src/app/core/services/text.service.spec.ts new file mode 100644 index 00000000..7b4d9efc --- /dev/null +++ b/usecaseui-portal/src/app/core/services/text.service.spec.ts @@ -0,0 +1,15 @@ +import { TestBed, inject } from '@angular/core/testing'; + +import { TextService } from './text.service'; + +describe('TextService', () => { + beforeEach(() => { + TestBed.configureTestingModule({ + providers: [TextService] + }); + }); + + it('should be created', inject([TextService], (service: TextService) => { + expect(service).toBeTruthy(); + })); +}); diff --git a/usecaseui-portal/src/app/core/services/text.service.ts b/usecaseui-portal/src/app/core/services/text.service.ts new file mode 100644 index 00000000..26a2caad --- /dev/null +++ b/usecaseui-portal/src/app/core/services/text.service.ts @@ -0,0 +1,43 @@ +/* + Copyright (C) 2019 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 { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; + +@Injectable() +export class TextService { + constructor(private http: HttpClient) { } + //--------------------------------------------------------------------------------------- + /* line up*/ + baseUrl = "/api"; + url = { + textInterface: this.baseUrl + "/user/login", + singleInterface: this.baseUrl + "/home", + doubleInterface: this.baseUrl + "/customer/info", + multipleInterface: this.baseUrl + "/alarm/formdata/multiple", + jsonInterface: this.baseUrl + "/xuran/test/data", + } + + //-----------------------------------Function-local-start------------------------------------------------------ + /* Query data list */ + getfakeData() { + return this.http.get<any>(this.url["singleInterface"]); + } + getjsonData() { + return this.http.get<any>(this.url["jsonInterface"]); + } + //------------------------------------------------------------------------------------- + +} diff --git a/usecaseui-portal/src/app/mock/fakedata.js b/usecaseui-portal/src/app/mock/fakedata.js new file mode 100644 index 00000000..a008c14a --- /dev/null +++ b/usecaseui-portal/src/app/mock/fakedata.js @@ -0,0 +1,24 @@ +const faker = require("faker"); +const _ = require("lodash"); +faker.locale = "en"; + +module.exports = { + customer: _.times(20, function (n) { + return { + id: n, + name: faker.name.findName(), + phone: faker.phone.phoneNumber(), + address: faker.address.streetAddress(), + avatar: faker.internet.avatar() + } + }), + home: _.times(10, function (n) { + return { + id: n, + name: faker.name.findName(), + phone: faker.phone.phoneNumber(), + address: faker.address.streetAddress(), + avatar: faker.internet.avatar() + } + }), +}
\ No newline at end of file diff --git a/usecaseui-portal/src/app/mock/json/LogicalLinksData.json b/usecaseui-portal/src/app/mock/json/LogicalLinksData.json new file mode 100644 index 00000000..99487f9d --- /dev/null +++ b/usecaseui-portal/src/app/mock/json/LogicalLinksData.json @@ -0,0 +1,168 @@ +{ + "logical-link": [ + { + "link-name": "cross-link-1", + "in-maint": false, + "link-type": "cross-link", + "resource-version": "1536029865021", + "operational-status": "up", + "relationship-list": { + "relationship": [ + { + "related-to": "p-interface", + "relationship-label": "tosca.relationships.network.LinksTo", + "related-link": "/aai/v13/network/pnfs/pnf/pnf2000/p-interfaces/p-interface/nodeId-78.78.78.78-ltpId-1", + "relationship-data": [ + { + "relationship-key": "pnf.pnf-name", + "relationship-value": "pnf2000" + }, + { + "relationship-key": "p-interface.interface-name", + "relationship-value": "nodeId-78.78.78.78-ltpId-1" + } + ], + "related-to-property": [ + { + "property-key": "p-interface.prov-status" + } + ] + }, + { + "related-to": "p-interface", + "relationship-label": "tosca.relationships.network.LinksTo", + "related-link": "/aai/v13/network/pnfs/pnf/pnf1000/p-interfaces/p-interface/nodeId-79.79.79.79-ltpId-1", + "relationship-data": [ + { + "relationship-key": "pnf.pnf-name", + "relationship-value": "pnf1000" + }, + { + "relationship-key": "p-interface.interface-name", + "relationship-value": "nodeId-79.79.79.79-ltpId-1" + } + ], + "related-to-property": [ + { + "property-key": "p-interface.prov-status" + } + ] + } + ] + } + }, + { + "link-name": "cross-link-3", + "in-maint": false, + "link-type": "cross-link", + "resource-version": "1536029865021", + "operational-status": "up", + "relationship-list": { + "relationship": [ + { + "related-to": "p-interface", + "relationship-label": "tosca.relationships.network.LinksTo", + "related-link": "/aai/v13/network/pnfs/pnf/pnf2000/p-interfaces/p-interface/nodeId-78.78.78.78-ltpId-3", + "relationship-data": [ + { + "relationship-key": "pnf.pnf-name", + "relationship-value": "pnf2000" + }, + { + "relationship-key": "p-interface.interface-name", + "relationship-value": "nodeId-78.78.78.78-ltpId-3" + } + ], + "related-to-property": [ + { + "property-key": "p-interface.prov-status" + } + ] + }, + { + "related-to": "p-interface", + "relationship-label": "tosca.relationships.network.LinksTo", + "related-link": "/aai/v13/network/pnfs/pnf/pnf1000/p-interfaces/p-interface/nodeId-79.79.79.79-ltpId-3", + "relationship-data": [ + { + "relationship-key": "pnf.pnf-name", + "relationship-value": "pnf1000" + }, + { + "relationship-key": "p-interface.interface-name", + "relationship-value": "nodeId-79.79.79.79-ltpId-3" + } + ], + "related-to-property": [ + { + "property-key": "p-interface.prov-status" + } + ] + } + ] + } + }, + { + "link-name": "cross-link-2", + "in-maint": false, + "link-type": "cross-link", + "resource-version": "1536029865021", + "operational-status": "up", + "relationship-list": { + "relationship": [ + { + "related-to": "p-interface", + "relationship-label": "tosca.relationships.network.LinksTo", + "related-link": "/aai/v13/network/pnfs/pnf/pnf3000/p-interfaces/p-interface/nodeId-80.80.80.80-ltpId-1", + "relationship-data": [ + { + "relationship-key": "pnf.pnf-name", + "relationship-value": "pnf3000" + }, + { + "relationship-key": "p-interface.interface-name", + "relationship-value": "nodeId-80.80.80.80-ltpId-1" + } + ], + "related-to-property": [ + { + "property-key": "p-interface.prov-status" + } + ] + }, + { + "related-to": "p-interface", + "relationship-label": "tosca.relationships.network.LinksTo", + "related-link": "/aai/v13/network/pnfs/pnf/pnf-cloud/p-interfaces/p-interface/cloud-tp", + "relationship-data": [ + { + "relationship-key": "pnf.pnf-name", + "relationship-value": "pnf-cloud" + }, + { + "relationship-key": "p-interface.interface-name", + "relationship-value": "cloud-tp" + } + ], + "related-to-property": [ + { + "property-key": "p-interface.prov-status" + } + ] + }, + { + "related-to": "ext-aai-network", + "relationship-label": "org.onap.relationships.inventory.BelongsTo", + "related-link": "/aai/v13/network/ext-aai-networks/ext-aai-network/gongjie666", + "relationship-data": [ + { + "relationship-key": "ext-aai-network.aai-id", + "relationship-value": "gongjie666" + } + ] + } + ] + } + } + ] +} diff --git a/usecaseui-portal/src/app/mock/json/alarmFormData.json b/usecaseui-portal/src/app/mock/json/alarmFormData.json new file mode 100644 index 00000000..fc97ae0c --- /dev/null +++ b/usecaseui-portal/src/app/mock/json/alarmFormData.json @@ -0,0 +1,371 @@ +{ + "totalRecolds": 22, + "list": [ + { + "id": 11, + "version": "3", + "eventName": "Fault_MultiCloud_VMFailureCleared", + "domain": "fault", + "eventId": "ab305d54-85b4-a31b-7db2-fb6b9e546015", + "eventType": null, + "nfcNamingCode": null, + "nfNamingCode": null, + "sourceId": "shentao-test-1001", + "sourceName": "shentao-test-1001", + "reportingEntityId": null, + "reportingEntityName": "Multi-Cloud", + "priority": "High", + "startEpochMicrosec": "1513630880000000", + "lastEpochMicroSec": "1513630880000000", + "startEpochMicrosecCleared": "112", + "lastEpochMicroSecCleared": "112", + "sequence": "0", + "faultFieldsVersion": "2", + "eventServrity": "CRITICAL", + "eventSourceType": "other", + "eventCategory": null, + "alarmCondition": "Guest_Os_Failure", + "specificProblem": "Fault_MultiCloud_VMFailure", + "vfStatus": "Active", + "alarmInterfaceA": "aaaa", + "status": "active" + }, + { + "id": 12, + "version": "3", + "eventName": "Fault_MultiCloud_VMFailureCleared", + "domain": "fault", + "eventId": "ab305d54-85b4-a31b-7db2-fb6b9e546015", + "eventType": null, + "nfcNamingCode": null, + "nfNamingCode": null, + "sourceId": "shentao-test-1002", + "sourceName": "shentao-test-1002", + "reportingEntityId": null, + "reportingEntityName": "Multi-Cloud", + "priority": "High", + "startEpochMicrosec": "1513630880000000", + "lastEpochMicroSec": "1513630880000000", + "startEpochMicrosecCleared": "112", + "lastEpochMicroSecCleared": "112", + "sequence": "0", + "faultFieldsVersion": "2", + "eventServrity": "CRITICAL", + "eventSourceType": "other", + "eventCategory": null, + "alarmCondition": "Guest_Os_Failure", + "specificProblem": "Fault_MultiCloud_VMFailure", + "vfStatus": "Active", + "alarmInterfaceA": "aaaa", + "status": "active" + }, + { + "id": 13, + "version": "3", + "eventName": "Fault_MultiCloud_VMFailureCleared", + "domain": "fault", + "eventId": "ab305d54-85b4-a31b-7db2-fb6b9e546015", + "eventType": null, + "nfcNamingCode": null, + "nfNamingCode": null, + "sourceId": "shentao-test-1003", + "sourceName": "shentao-test-1003", + "reportingEntityId": null, + "reportingEntityName": "Multi-Cloud", + "priority": "High", + "startEpochMicrosec": "1513630880000000", + "lastEpochMicroSec": "1513630880000000", + "startEpochMicrosecCleared": "112", + "lastEpochMicroSecCleared": "112", + "sequence": "0", + "faultFieldsVersion": "2", + "eventServrity": "CRITICAL", + "eventSourceType": "other", + "eventCategory": null, + "alarmCondition": "Guest_Os_Failure", + "specificProblem": "Fault_MultiCloud_VMFailure", + "vfStatus": "Active", + "alarmInterfaceA": "aaaa", + "status": "active" + }, + { + "id": 14, + "version": "3", + "eventName": "Fault_MultiCloud_VMFailureCleared", + "domain": "fault", + "eventId": "ab305d54-85b4-a31b-7db2-fb6b9e546015", + "eventType": null, + "nfcNamingCode": null, + "nfNamingCode": null, + "sourceId": "shentao-test-2001", + "sourceName": "shentao-test-2001", + "reportingEntityId": null, + "reportingEntityName": "Multi-Cloud", + "priority": "High", + "startEpochMicrosec": "1513630880000000", + "lastEpochMicroSec": "1513630880000000", + "startEpochMicrosecCleared": "112", + "lastEpochMicroSecCleared": "112", + "sequence": "0", + "faultFieldsVersion": "2", + "eventServrity": "CRITICAL", + "eventSourceType": "other", + "eventCategory": null, + "alarmCondition": "Guest_Os_Failure", + "specificProblem": "Fault_MultiCloud_VMFailure", + "vfStatus": "Active", + "alarmInterfaceA": "aaaa", + "status": "active" + }, + { + "id": 15, + "version": "3", + "eventName": "Fault_MultiCloud_VMFailureCleared", + "domain": "fault", + "eventId": "ab305d54-85b4-a31b-7db2-fb6b9e546015", + "eventType": null, + "nfcNamingCode": null, + "nfNamingCode": null, + "sourceId": "shentao-test-2002", + "sourceName": "shentao-test-2002", + "reportingEntityId": null, + "reportingEntityName": "Multi-Cloud", + "priority": "High", + "startEpochMicrosec": "1513630880000000", + "lastEpochMicroSec": "1513630880000000", + "startEpochMicrosecCleared": "112", + "lastEpochMicroSecCleared": "112", + "sequence": "0", + "faultFieldsVersion": "2", + "eventServrity": "CRITICAL", + "eventSourceType": "other", + "eventCategory": null, + "alarmCondition": "Guest_Os_Failure", + "specificProblem": "Fault_MultiCloud_VMFailure", + "vfStatus": "Active", + "alarmInterfaceA": "aaaa", + "status": "active" + }, + { + "id": 16, + "version": "3", + "eventName": "Fault_MultiCloud_VMFailureCleared", + "domain": "fault", + "eventId": "ab305d54-85b4-a31b-7db2-fb6b9e546015", + "eventType": null, + "nfcNamingCode": null, + "nfNamingCode": null, + "sourceId": "shentao-test-2003", + "sourceName": "shentao-test-2003", + "reportingEntityId": null, + "reportingEntityName": "Multi-Cloud", + "priority": "High", + "startEpochMicrosec": "1513630880000000", + "lastEpochMicroSec": "1513630880000000", + "startEpochMicrosecCleared": "112", + "lastEpochMicroSecCleared": "112", + "sequence": "0", + "faultFieldsVersion": "2", + "eventServrity": "CRITICAL", + "eventSourceType": "other", + "eventCategory": null, + "alarmCondition": "Guest_Os_Failure", + "specificProblem": "Fault_MultiCloud_VMFailure", + "vfStatus": "Active", + "alarmInterfaceA": "aaaa", + "status": "active" + }, + { + "id": 17, + "version": "3", + "eventName": "Fault_MultiCloud_VMFailureCleared", + "domain": "fault", + "eventId": "ab305d54-85b4-a31b-7db2-fb6b9e546015", + "eventType": null, + "nfcNamingCode": null, + "nfNamingCode": null, + "sourceId": "shentao-test-2004", + "sourceName": "vnf_a_1", + "reportingEntityId": null, + "reportingEntityName": "Multi-Cloud", + "priority": "High", + "startEpochMicrosec": "1516784364860", + "lastEpochMicroSec": "1516784364860", + "startEpochMicrosecCleared": "112", + "lastEpochMicroSecCleared": "112", + "sequence": "0", + "faultFieldsVersion": "2", + "eventServrity": "CRITICAL", + "eventSourceType": "other", + "eventCategory": null, + "alarmCondition": "Guest_Os_Failure", + "specificProblem": "Fault_MultiCloud_VMFailure", + "vfStatus": "Active", + "alarmInterfaceA": "aaaa", + "status": "active" + }, + { + "id": 18, + "version": "3", + "eventName": "Fault_MultiCloud_VMFailureCleared", + "domain": "fault", + "eventId": "ab305d54-85b4-a31b-7db2-fb6b9e546015", + "eventType": null, + "nfcNamingCode": null, + "nfNamingCode": null, + "sourceId": "shentao-test-2005", + "sourceName": "shentao-test-2005", + "reportingEntityId": null, + "reportingEntityName": "Multi-Cloud", + "priority": "High", + "startEpochMicrosec": "1516784364860", + "lastEpochMicroSec": "1516784364860", + "startEpochMicrosecCleared": "112", + "lastEpochMicroSecCleared": "112", + "sequence": "0", + "faultFieldsVersion": "2", + "eventServrity": "CRITICAL", + "eventSourceType": "other", + "eventCategory": null, + "alarmCondition": "Guest_Os_Failure", + "specificProblem": "Fault_MultiCloud_VMFailure", + "vfStatus": "Active", + "alarmInterfaceA": "aaaa", + "status": "active" + }, + { + "id": 19, + "version": "3", + "eventName": "Fault_MultiCloud_VMFailureCleared", + "domain": "fault", + "eventId": "ab305d54-85b4-a31b-7db2-fb6b9e546015", + "eventType": null, + "nfcNamingCode": null, + "nfNamingCode": null, + "sourceId": "shentao-test-3001", + "sourceName": "shentao-test-3001", + "reportingEntityId": null, + "reportingEntityName": "Multi-Cloud", + "priority": "High", + "startEpochMicrosec": "1516784364860", + "lastEpochMicroSec": "1516784364860", + "startEpochMicrosecCleared": "112", + "lastEpochMicroSecCleared": "112", + "sequence": "0", + "faultFieldsVersion": "2", + "eventServrity": "CRITICAL", + "eventSourceType": "other", + "eventCategory": null, + "alarmCondition": "Guest_Os_Failure", + "specificProblem": "Fault_MultiCloud_VMFailure", + "vfStatus": "Active", + "alarmInterfaceA": "aaaa", + "status": "active" + }, + { + "id": 20, + "version": "3", + "eventName": "Fault_MultiCloud_VMFailureCleared", + "domain": "fault", + "eventId": "ab305d54-85b4-a31b-7db2-fb6b9e546015", + "eventType": null, + "nfcNamingCode": null, + "nfNamingCode": null, + "sourceId": "shentao-test-3003", + "sourceName": "vnf_a_3", + "reportingEntityId": null, + "reportingEntityName": "Multi-Cloud", + "priority": "High", + "startEpochMicrosec": "1516784364860", + "lastEpochMicroSec": "1516784364860", + "startEpochMicrosecCleared": "112", + "lastEpochMicroSecCleared": "112", + "sequence": "0", + "faultFieldsVersion": "2", + "eventServrity": "CRITICAL", + "eventSourceType": "other", + "eventCategory": null, + "alarmCondition": "Guest_Os_Failure", + "specificProblem": "Fault_MultiCloud_VMFailure", + "vfStatus": "Active", + "alarmInterfaceA": "aaaa", + "status": "active" + }, + { + "id": 21, + "version": "3", + "eventName": "Fault_MultiCloud_VMFailureCleared", + "domain": "fault", + "eventId": "ab305d54-85b4-a31b-7db2-fb6b9e546015", + "eventType": null, + "nfcNamingCode": null, + "nfNamingCode": null, + "sourceId": "shentao-test-3004", + "sourceName": "vnf_a_3", + "reportingEntityId": null, + "reportingEntityName": "Multi-Cloud", + "priority": "High", + "startEpochMicrosec": "1516784364860", + "lastEpochMicroSec": "1516784364860", + "startEpochMicrosecCleared": "112", + "lastEpochMicroSecCleared": "112", + "sequence": "0", + "faultFieldsVersion": "2", + "eventServrity": "CRITICAL", + "eventSourceType": "other", + "eventCategory": null, + "alarmCondition": "Guest_Os_Failure", + "specificProblem": "Fault_MultiCloud_VMFailure", + "vfStatus": "Active", + "alarmInterfaceA": "aaaa", + "status": "active" + }, + { + "id": 22, + "version": "3", + "eventName": "Fault_MultiCloud_VMFailure", + "domain": "fault", + "eventId": "ab305d54-85b4-a31b-7db2-fb6b9e546015", + "eventType": null, + "nfcNamingCode": null, + "nfNamingCode": null, + "sourceId": "vnf_a_20180205_2", + "sourceName": "vnf_b_3", + "reportingEntityId": null, + "reportingEntityName": "vnf_a_20180205_2", + "priority": "High", + "startEpochMicrosec": "1516784364860", + "lastEpochMicroSec": "1516784364860", + "startEpochMicrosecCleared": "", + "lastEpochMicroSecCleared": "", + "sequence": "0", + "faultFieldsVersion": "2", + "eventServrity": "CRITICAL", + "eventSourceType": "other", + "eventCategory": null, + "alarmCondition": "Guest_Os_Failure", + "specificProblem": "Fault_MultiCloud_VMFailure", + "vfStatus": "Active", + "alarmInterfaceA": "aaaa", + "status": "active" + } + ], + "countActive": 12, + "reportingEntityNameList": [ + "vnf_a_20180205_2", + "Multi-Cloud" + ], + "sourceNameList": [ + "shentao-test-2001", + "shentao-test-3001", + "shentao-test-1001", + "shentao-test-2002", + "vnf_a_3", + "shentao-test-1002", + "shentao-test-2003", + "vnf_b_3", + "shentao-test-1003", + "vnf_a_1", + "shentao-test-2005" + ] +}
\ No newline at end of file diff --git a/usecaseui-portal/src/app/mock/json/allotted-resources2.json b/usecaseui-portal/src/app/mock/json/allotted-resources2.json new file mode 100644 index 00000000..29262e5d --- /dev/null +++ b/usecaseui-portal/src/app/mock/json/allotted-resources2.json @@ -0,0 +1 @@ +{"allotted-resource":[{"id":"8beee9a7-abf0-4c98-8073-1d4d03e50033","description":"sdwan-attachment","selflink":"","model-invariant-id":"3d369bb8-5546-41d4-a3e7-a2557295ae40","model-version-id":"78ed8099-90a5-49b4-a400-89f38a7cbe6e","resource-version":"1537857961665","orchestration-status":"","operational-status":"","type":"","role":"spoke","allotted-resource-name":"sdwan ar","access-provider-id":"","access-client-id":"","access-topology-id":"","access-node-id":"","access-ltp-id":"","cvlan":"","vpn-name":"SDWANVPNInfra","relationship-list":{"relationship":[{"related-to":"service-instance","relationship-label":"org.onap.relationships.inventory.Uses","related-link":"/aai/v13/business/customers/customer/demo/service-subscriptions/service-subscription/ccvpn/service-instances/service-instance/15e88f8e-473f-4d88-92f8-6739a42baa2g","relationship-data":[{"relationship-key":"customer.global-customer-id","relationship-value":"demo"},{"relationship-key":"service-subscription.service-type","relationship-value":"ccvpn"},{"relationship-key":"service-instance.service-instance-id","relationship-value":"15e88f8e-473f-4d88-92f8-6739a42baa2g"}],"related-to-property":[{"property-key":"service-instance.service-instance-name","property-value":"SDWANVPNInfra"}]}]}},{"id":"28f2b69e-c489-48fa-b974-166104eb15c9","description":"sotn-attachment","selflink":"","model-invariant-id":"d92ce7ca-ca87-4830-972e-83ae9857ded7","model-version-id":"3704879e-b07e-4a15-b8fd-f047f966a261","resource-version":"1537858263268","orchestration-status":"","operational-status":"","type":"","role":"spoke","allotted-resource-name":"sotn ar","access-provider-id":"","access-client-id":"","access-topology-id":"","access-node-id":"","access-ltp-id":"","cvlan":"","vpn-name":"SOTNVPNInfra","relationship-list":{"relationship":[{"related-to":"service-instance","relationship-label":"org.onap.relationships.inventory.Uses","related-link":"/aai/v13/business/customers/customer/demo/service-subscriptions/service-subscription/ccvpn/service-instances/service-instance/32cd906f-ee7a-4ecf-b1c3-2fce4d59f8c0","relationship-data":[{"relationship-key":"customer.global-customer-id","relationship-value":"demo"},{"relationship-key":"service-subscription.service-type","relationship-value":"ccvpn"},{"relationship-key":"service-instance.service-instance-id","relationship-value":"32cd906f-ee7a-4ecf-b1c3-2fce4d59f8c0"}],"related-to-property":[{"property-key":"service-instance.service-instance-name","property-value":"SOTNVPNInfra"}]},{"related-to":"p-interface","relationship-label":"org.onap.relationships.inventory.Uses","related-link":"/aai/v13/network/pnfs/pnf/11.11.11.11/p-interfaces/p-interface/nodeId-11.11.11.11-ltpId-36","relationship-data":[{"relationship-key":"pnf.pnf-name","relationship-value":"11.11.11.11"},{"relationship-key":"p-interface.interface-name","relationship-value":"nodeId-79.79.79.79-ltpId-2"}],"related-to-property":[{"property-key":"p-interface.prov-status"}]}]}}]}
\ No newline at end of file diff --git a/usecaseui-portal/src/app/mock/json/createService.json b/usecaseui-portal/src/app/mock/json/createService.json new file mode 100644 index 00000000..f1d64485 --- /dev/null +++ b/usecaseui-portal/src/app/mock/json/createService.json @@ -0,0 +1,7 @@ + +{ + "service":{ + "serviceId":"044377e5-3dd4-4f84-86a0-02dab3c43bc5", + "operationId":"1e606677-7864-4bec-b50c-adcd858e4cd8" + } +}
\ No newline at end of file diff --git a/usecaseui-portal/src/app/mock/json/customers.json b/usecaseui-portal/src/app/mock/json/customers.json new file mode 100644 index 00000000..9c66eff4 --- /dev/null +++ b/usecaseui-portal/src/app/mock/json/customers.json @@ -0,0 +1,82 @@ + + +[ + { + "global-customer-id": "Democcy", + "subscriber-name": "Democcy", + "subscriber-type": "INFRA", + "resource-version": "1535601196964" + }, + { + "global-customer-id": "support", + "subscriber-name": "testccccccccsssssssssseeeeeeeeeee", + "subscriber-type": "CUST", + "resource-version": "1536069070995" + }, + { + "global-customer-id": "Demonstration", + "subscriber-name": "Demonstration", + "subscriber-type": "INFRA", + "resource-version": "1535080521665" + }, + { + "global-customer-id": "Orange", + "subscriber-name": "test", + "subscriber-type": "CUST", + "resource-version": "1535865156826" + }, + { + "global-customer-id": "Orange5", + "subscriber-name": "test", + "subscriber-type": "CUST", + "resource-version": "1529978907607" + }, + { + "global-customer-id": "wale", + "subscriber-name": "test", + "subscriber-type": "CUST", + "resource-version": "1536058660948" + }, + { + "global-customer-id": "kiwi", + "subscriber-name": "test", + "subscriber-type": "CUST", + "resource-version": "1536042103511" + }, + { + "global-customer-id": "Apple", + "subscriber-name": "test", + "subscriber-type": "CUST", + "resource-version": "1535971300786" + }, + { + "global-customer-id": "Tiger", + "subscriber-name": "test", + "subscriber-type": "CUST", + "resource-version": "1535977578133" + }, + { + "global-customer-id": "Deer", + "subscriber-name": "test", + "subscriber-type": "CUST", + "resource-version": "1535988232470" + }, + { + "global-customer-id": "Bear", + "subscriber-name": "test", + "subscriber-type": "CUST", + "resource-version": "1536041229105" + }, + { + "global-customer-id": "Panda", + "subscriber-name": "test", + "subscriber-type": "CUST", + "resource-version": "1536038628045" + }, + { + "global-customer-id": "Lion", + "subscriber-name": "test", + "subscriber-type": "CUST", + "resource-version": "1535986050695" + } +] diff --git a/usecaseui-portal/src/app/mock/json/deleteService.json b/usecaseui-portal/src/app/mock/json/deleteService.json new file mode 100644 index 00000000..19a7ab5e --- /dev/null +++ b/usecaseui-portal/src/app/mock/json/deleteService.json @@ -0,0 +1,4 @@ + +{ + "operationId":"1e606677-7864-4bec-b50c-adcd858e4cd8" +}
\ No newline at end of file diff --git a/usecaseui-portal/src/app/mock/json/detailsData.json b/usecaseui-portal/src/app/mock/json/detailsData.json new file mode 100644 index 00000000..41ee87b8 --- /dev/null +++ b/usecaseui-portal/src/app/mock/json/detailsData.json @@ -0,0 +1,19 @@ +{ + "sotnVpnInfo":{ + "name":"xdwgwe","description":"hahahah", + "startTime":"2017-07-03","endTime":"2018-07-05", + "COS":"premium","reroute":"Yes", + "SLS":"sfsadf","dualLink":"Yes", + "CIR":"dafdafd","EIR":"sddddddd", + "CBS":"dafdaf","EBS":"qqqqqqqwwwwwww", + "colorAware":"Yes","couplingFlag":"No" + }, + "siteList":[ + {"name":"xiaoming","description":"congming","postcode":"xxxx","address":"beijing","sotnVpnName":"buzhid","vlan":"aaa"}, + {"name":"xiaogang","description":"congming","postcode":"xxxx","address":"guangzhou","sotnVpnName":"buzhid","vlan":"aaa"} + ], + "siteGroupList":[ + {"id":"123","name":"sssiy","topology":"hahahha","sites":"xxxxx","rloe":"eeexxxx"}, + {"id":"3333","name":"sssiy","topology":"hahahha","sites":"xxxxx","rloe":"eeexxxx"} + ] +}
\ No newline at end of file diff --git a/usecaseui-portal/src/app/mock/json/e2eServiceTemplateParameters.json b/usecaseui-portal/src/app/mock/json/e2eServiceTemplateParameters.json new file mode 100644 index 00000000..5ad5b102 --- /dev/null +++ b/usecaseui-portal/src/app/mock/json/e2eServiceTemplateParameters.json @@ -0,0 +1,71 @@ +{ + "templateParameters": { + "inputs": [ + { + "name": "11111", + "type": "string", + "description": "3333333", + "defaultValue": "44444444", + "isRequired": "", + "readonly": "" + }, + { + "name": "22222", + "type": "boolean", + "description": "3333333", + "defaultValue": "44444444", + "isRequired": "", + "readonly": "" + }, + { + "name": "33333", + "type": "integer", + "description": "3333333", + "defaultValue": "44444444", + "isRequired": "", + "readonly": "" + }, + { + "name": "44444", + "type": "vf_location", + "description": "3333333", + "defaultValue": "44444444", + "isRequired": "", + "readonly": "" + }, + { + "name": "55555", + "type": "sdn_controller", + "description": "3333333", + "defaultValue": "44444444", + "isRequired": "", + "readonly": "" + } + ], + "nestedTemplate": [ + { + "name": "demo_vims_e2e_zte", + "invariantUUID": "1", + "uuid": "1", + "type": "", + "parameters": "", + "inputs": [ + { + "type": "vf_location", + "description": "", + "name": "r1_spgw_zte*", + "isRequired": "", + "value": "1111" + }, + { + "type": "sdn_controller", + "description": "", + "name": "sdncontroller*", + "isRequired": "", + "value": "22222" + } + ] + } + ] + } +}
\ No newline at end of file diff --git a/usecaseui-portal/src/app/mock/json/homeAllData.json b/usecaseui-portal/src/app/mock/json/homeAllData.json new file mode 100644 index 00000000..ce4e5d6e --- /dev/null +++ b/usecaseui-portal/src/app/mock/json/homeAllData.json @@ -0,0 +1,23 @@ +{ + "services":{ + "number":200, + "chartdata":[ + {"value":125, "name":"user1"}, + {"value":290, "name":"user2"}, + {"value":220, "name":"user3"} + ] + }, + "performance":{ + "per_Vnf":154, + "per_VmPm":325 + }, + "alarm":{ + "chartdata":[ + {"value":325,"name":"Active"}, + {"value":200,"name":"Closed"} + ] + }, + "Vm_performance":{ + "names":["aaaaa","bbbbb","ccccc","ddddd","eeeee"] + } +} diff --git a/usecaseui-portal/src/app/mock/json/homePerformanceChartData.json b/usecaseui-portal/src/app/mock/json/homePerformanceChartData.json new file mode 100644 index 00000000..c3848893 --- /dev/null +++ b/usecaseui-portal/src/app/mock/json/homePerformanceChartData.json @@ -0,0 +1,4 @@ +{ + "CPU":[30,43,24,32,34,35,42,62,52,35,34,33,43], + "Memory":[24,23,24,12,34,15,22,22,32,15,24,13,23] +} diff --git a/usecaseui-portal/src/app/mock/json/instanceTableData.json b/usecaseui-portal/src/app/mock/json/instanceTableData.json new file mode 100644 index 00000000..73f12873 --- /dev/null +++ b/usecaseui-portal/src/app/mock/json/instanceTableData.json @@ -0,0 +1,505 @@ +{ + "service-instance": [ + { + "service-instance-id": "35e88f8e-473f-4d88-92f8-6739a42baa23", + "service-instance-name": "SDWANVPNInfra1", + "service-type": "E2E Service", + "service-role": "E2E Service", + "model-invariant-id": "88dcb2f0-085b-4548-8b93-0882e37d25d8", + "model-version-id": "462f84e5-f0e5-44c5-ab95-38fb4bf77064", + "resource-version": "1535687551051", + "input-parameters": "{\n \"service\":{\n \"name\":\"SDWANVPNInfra\",\n \"description\":\"SDWANVPNInfra\",\n \"serviceInvariantUuid\":\"88dcb2f0-085b-4548-8b93-0882e37d25d8\",\n \"serviceUuid\":\"462f84e5-f0e5-44c5-ab95-38fb4bf77064\",\n \"globalSubscriberId\":\"Demonstration\",\n \"serviceType\":\"CCVPN\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n {\n \"resourceName\":\"SDWANConnectivity 0\",\n \"resourceInvariantUuid\":\"f99a9a23-c88e-44ff-a4dc-22b88675d278\",\n \"resourceUuid\":\"7baa7742-3a13-4288-8330-868015adc340\",\n \"resourceCustomizationUuid\":\"94ec574b-2306-4cbd-8214-09662b040f73\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"SPPartnerVF 0\",\n \"resourceInvariantUuid\":\"072f9238-15b0-4bc5-a5f5-f18548739470\",\n \"resourceUuid\":\"81b9430b-8abe-45d6-8bf9-f41a8f5c735f\",\n \"resourceCustomizationUuid\":\"a7baba5d-6ac3-42b5-b47d-070841303ab1\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n }\n ],\n \"requestInputs\":{\n \"sdwanconnectivity0_name\":\"CMCCVPN\",\n \"sdwanconnectivity0_topology\":\"hub-spoke\"\n }\n }\n }\n}", + "relationship-list": { + "relationship": [ + { + "related-to": "sdwan-vpn", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/network/sdwan-vpns/sdwan-vpn/4efe6dff-acfc-4d13-a3fd-1177d3c08e89", + "relationship-data": [ + { + "relationship-key": "sdwan-vpn.sdwan-vpn-id", + "relationship-value": "4efe6dff-acfc-4d13-a3fd-1177d3c08e89" + } + ], + "related-to-property": [ + { + "property-key": "sdwan-vpn.sdwan-vpn-name", + "property-value": "vdfvpn" + } + ] + }, + { + "related-to": "sp-partner", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/business/sp-partners/sp-partner/1b9c677d-fddf-4b70-938b-925a7fa57d00", + "relationship-data": [ + { + "relationship-key": "sp-partner.sp-partner-id", + "relationship-value": "1b9c677d-fddf-4b70-938b-925a7fa57d00" + } + ], + "related-to-property": [ + { + "property-key": "sp-partner.sp-partner-id", + "property-value": "1b9c677d-fddf-4b70-938b-925a7fa57d00" + } + ] + }, + { + "related-to": "allotted-resource", + "relationship-label": "org.onap.relationships.inventory.Uses", + "related-link": "/aai/v13/business/customers/customer/Democcy/service-subscriptions/service-subscription/CCVPN/service-instances/service-instance/189b87a5-72fe-4197-a307-6929c3831f81/allotted-resources/allotted-resource/2214feec-1aef-4890-abba-f8f3a906935f", + "relationship-data": [ + { + "relationship-key": "customer.global-customer-id", + "relationship-value": "Democcy" + }, + { + "relationship-key": "service-subscription.service-type", + "relationship-value": "CCVPN" + }, + { + "relationship-key": "service-instance.service-instance-id", + "relationship-value": "189b87a5-72fe-4197-a307-6929c3831f81" + }, + { + "relationship-key": "allotted-resource.id", + "relationship-value": "2214feec-1aef-4890-abba-f8f3a906935f" + } + ], + "related-to-property": [ + { + "property-key": "allotted-resource.description", + "property-value": "2214feec-1aef-4890-abba-f8f3a906935f" + }, + { + "property-key": "allotted-resource.allotted-resource-name", + "property-value": "sdwan ar" + } + ] + }, + { + "related-to": "allotted-resource", + "relationship-label": "org.onap.relationships.inventory.Uses", + "related-link": "/aai/v13/business/customers/customer/Democcy/service-subscriptions/service-subscription/CCVPN/service-instances/service-instance/089b87a5-72fe-4197-a307-6929c3831f80/allotted-resources/allotted-resource/1114feec-1aef-4890-abba-f8f3a906935f", + "relationship-data": [ + { + "relationship-key": "customer.global-customer-id", + "relationship-value": "Democcy" + }, + { + "relationship-key": "service-subscription.service-type", + "relationship-value": "CCVPN" + }, + { + "relationship-key": "service-instance.service-instance-id", + "relationship-value": "089b87a5-72fe-4197-a307-6929c3831f80" + }, + { + "relationship-key": "allotted-resource.id", + "relationship-value": "1114feec-1aef-4890-abba-f8f3a906935f" + } + ], + "related-to-property": [ + { + "property-key": "allotted-resource.description", + "property-value": "1114feec-1aef-4890-abba-f8f3a906935f" + }, + { + "property-key": "allotted-resource.allotted-resource-name", + "property-value": "sdwan ar" + } + ] + } + ] + } + }, + { + "service-instance-id": "15e88f8e-473f-4d88-92f8-6739a42baa2g", + "service-instance-name": "SDWANVPNInfra", + "service-type": "E2E Service", + "service-role": "E2E Service", + "model-invariant-id": "88dcb2f0-085b-4548-8b93-0882e37d25d8", + "model-version-id": "462f84e5-f0e5-44c5-ab95-38fb4bf77064", + "resource-version": "1535687578298", + "input-parameters": "{\n \"service\":{\n \"name\":\"SDWANVPNInfra\",\n \"description\":\"SDWANVPNInfra\",\n \"serviceInvariantUuid\":\"88dcb2f0-085b-4548-8b93-0882e37d25d8\",\n \"serviceUuid\":\"462f84e5-f0e5-44c5-ab95-38fb4bf77064\",\n \"globalSubscriberId\":\"Demonstration\",\n \"serviceType\":\"CCVPN\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n {\n \"resourceName\":\"SDWANConnectivity 0\",\n \"resourceInvariantUuid\":\"f99a9a23-c88e-44ff-a4dc-22b88675d278\",\n \"resourceUuid\":\"7baa7742-3a13-4288-8330-868015adc340\",\n \"resourceCustomizationUuid\":\"94ec574b-2306-4cbd-8214-09662b040f73\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"SPPartnerVF 0\",\n \"resourceInvariantUuid\":\"072f9238-15b0-4bc5-a5f5-f18548739470\",\n \"resourceUuid\":\"81b9430b-8abe-45d6-8bf9-f41a8f5c735f\",\n \"resourceCustomizationUuid\":\"a7baba5d-6ac3-42b5-b47d-070841303ab1\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n }\n ],\n \"requestInputs\":{\n \"sdwanconnectivity0_name\":\"CMCCVPN\",\n \"sdwanconnectivity0_topology\":\"hub-spoke\"\n }\n }\n }\n}", + "relationship-list": { + "relationship": [ + { + "related-to": "sdwan-vpn", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/network/sdwan-vpns/sdwan-vpn/4efe6dff-acfc-4d13-a3fd-1177d3c08e86", + "relationship-data": [ + { + "relationship-key": "sdwan-vpn.sdwan-vpn-id", + "relationship-value": "4efe6dff-acfc-4d13-a3fd-1177d3c08e86" + } + ], + "related-to-property": [ + { + "property-key": "sdwan-vpn.sdwan-vpn-name", + "property-value": "cmccvpn" + } + ] + }, + { + "related-to": "sp-partner", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/business/sp-partners/sp-partner/1b9c677d-fddf-4b70-938b-925a7fa57d11", + "relationship-data": [ + { + "relationship-key": "sp-partner.sp-partner-id", + "relationship-value": "1b9c677d-fddf-4b70-938b-925a7fa57d11" + } + ], + "related-to-property": [ + { + "property-key": "sp-partner.sp-partner-id", + "property-value": "1b9c677d-fddf-4b70-938b-925a7fa57d11" + } + ] + } + ] + } + }, + { + "service-instance-id": "089b87a5-72fe-4197-a307-6929c3831f80", + "service-instance-name": "SiteBeijing", + "service-type": "E2E Service", + "service-role": "E2E Service", + "model-invariant-id": "5c13f3fb-2744-4635-9f1f-c59c92dc8f70", + "model-version-id": "3a76b1f5-fb0d-4b6b-82d5-0e8a4ebc3838", + "resource-version": "1535686434430", + "input-parameters": "{\n \"service\":{\n \"name\":\"SiteService\",\n \"description\":\"SiteService\",\n \"serviceInvariantUuid\":\"5c13f3fb-2744-4635-9f1f-c59c92dc8f70\",\n \"serviceUuid\":\"3a76b1f5-fb0d-4b6b-82d5-0e8a4ebc3838\",\n \"globalSubscriberId\":\"Demonstration\",\n \"serviceType\":\"CCVPN\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n {\n \"resourceName\":\"SiteVF\",\n \"resourceInvariantUuid\":\"0c0e1cbe-6e01-4f9e-8c45-a9700ebc14df\",\n \"resourceUuid\":\"4ad2d390-5c51-45f5-9710-b467a4ec7a73\",\n \"resourceCustomizationUuid\":\"66590e07-0777-415c-af44-36347cf3ddd3\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"mpls\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"205456e7-3dc0-40c4-8cb0-28e6c1877042\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"deviceVF\",\n \"resourceInvariantUuid\":\"c726490a-0ce2-4bc7-abea-dade66bfb13d\",\n \"resourceUuid\":\"0e2de9d8-d76b-4134-b5f1-41e79056adbe\",\n \"resourceCustomizationUuid\":\"5bc1373e-9a36-4a00-8c62-784e0bc417ad\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sdwanvpnattachmentVF\",\n \"resourceInvariantUuid\":\"f714feec-1aef-4890-abba-f8f3a906935f\",\n \"resourceUuid\":\"709919b7-75fd-4e49-8398-67853323ff55\",\n \"resourceCustomizationUuid\":\"debd988f-fe04-4940-a5cb-37f61d84eab4\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"internet\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"64b8e8ba-62b9-4db6-b420-1ca7067d63e0\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sotnvpnattachmentvF\",\n \"resourceInvariantUuid\":\"97c4a3c6-2943-41af-8717-2f3183f944be\",\n \"resourceUuid\":\"44b777ee-9793-465d-8053-d8e86d2e2362\",\n \"resourceCustomizationUuid\":\"37aeb073-c75d-4cf6-a7fa-a1af862ef58a\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"SPPartnerVF\",\n \"resourceInvariantUuid\":\"072f9238-15b0-4bc5-a5f5-f18548739470\",\n \"resourceUuid\":\"81b9430b-8abe-45d6-8bf9-f41a8f5c735f\",\n \"resourceCustomizationUuid\":\"cd0b4b9c-66c6-49c5-b346-7580e4b6c394\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n }\n ],\n \"requestInputs\":{\n \"devicevf_device_class\":\"PNF\",\n \"devicevf_device_esn\":\"2102351BTJ10HB000075\",\n \"devicevf_device_name\":\"50.47\",\n \"devicevf_device_systemIp\":\"192.168.1.47\",\n \"devicevf_device_type\":\"AR161EW\",\n \"devicevf_device_vendor\":\"huawei\",\n \"devicevf_device_version\":\"1.0\",\n \"internet_sitewanport_description\":\"internet\",\n \"internet_sitewanport_deviceName\":\"50.47\",\n \"internet_sitewanport_inputBandwidth\":\"100\",\n \"internet_sitewanport_ipAddress\":\"100.2.30.9\",\n \"internet_sitewanport_name\":\"internet\",\n \"internet_sitewanport_outputBandwidth\":\"100\",\n \"internet_sitewanport_portNumber\":\"0/0/2\",\n \"internet_sitewanport_portType\":\"GE\",\n \"internet_sitewanport_providerIpAddress\":\"100.2.30.10\",\n \"internet_sitewanport_transportNetworkName\":\"internet\",\n \"mpls_sitewanport_description\":\"mpls\",\n \"mpls_sitewanport_deviceName\":\"50.47\",\n \"mpls_sitewanport_inputBandwidth\":\"100\",\n \"mpls_sitewanport_ipAddress\":\"10.2.30.7\",\n \"mpls_sitewanport_name\":\"mpls\",\n \"mpls_sitewanport_outputBandwidth\":\"100\",\n \"mpls_sitewanport_portNumber\":\"0/0/1\",\n \"mpls_sitewanport_portType\":\"GE\",\n \"mpls_sitewanport_providerIpAddress\":\"10.2.30.8\",\n \"mpls_sitewanport_transportNetworkName\":\"internet\",\n \"sdwanvpnattachmentvf_sdwancondition_role\":\"spoke\",\n \"sdwanvpnattachmentvf_sdwancondition_sdwanVpnName\":\"CMCCVPN\",\n \"sitevf_site_address\":\"beijing beiqing road\",\n \"sitevf_site_controlPoint\":\"CMCC_VCPE\",\n \"sitevf_site_description\":\"CMCC_CPE\",\n \"sitevf_site_emails\":\"\",\n \"sitevf_site_latitude\":\"\",\n \"sitevf_site_longitude\":\"\",\n \"sitevf_site_name\":\"CMCC_CPE1\",\n \"sitevf_site_postcode\":\"100095\",\n \"sitevf_site_role\":\"sd-wan-edge\",\n \"sitevf_site_type\":\"single-gateway\",\n \"sotnvpnattachmentvf_sotncondition_clientSignal\":\"\",\n \"sotnvpnattachmentvf_sotncondition_cVLAN\":\"\",\n \"sotnvpnattachmentvf_sotncondition_sotnVpnName\":\"SOTN L2\"\n }\n }\n }\n}", + "relationship-list": { + "relationship": [ + { + "related-to": "sp-partner", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/business/sp-partners/sp-partner/1b9c677d-fddf-4b70-938b-925a7fa57d22", + "relationship-data": [ + { + "relationship-key": "sp-partner.sp-partner-id", + "relationship-value": "1b9c677d-fddf-4b70-938b-925a7fa57d22" + } + ], + "related-to-property": [ + { + "property-key": "sp-partner.sp-partner-id", + "property-value": "1b9c677d-fddf-4b70-938b-925a7fa57d22" + } + ] + }, + { + "related-to": "device", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/network/devices/device/6e0d83f3-f4f5-4a24-9462-712b52ac6700", + "relationship-data": [ + { + "relationship-key": "device.device-id", + "relationship-value": "6e0d83f3-f4f5-4a24-9462-712b52ac6700" + } + ], + "related-to-property": [ + { + "property-key": "device.device-name" + } + ] + }, + { + "related-to": "wan-port-config", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/network/wan-port-configs/wan-port-config/aaa3e552-08c4-4697-aeeb-d8d3e09ce58e", + "relationship-data": [ + { + "relationship-key": "wan-port-config.wan-port-config-id", + "relationship-value": "aaa3e552-08c4-4697-aeeb-d8d3e09ce58e" + } + ], + "related-to-property": [ + { + "property-key": "wan-port-config.wan-port-config-name", + "property-value": "mpls" + } + ] + }, + { + "related-to": "site-resource", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/network/site-resources/site-resource/aa2de9d8-d76b-4134-b5f1-41e79056adbe", + "relationship-data": [ + { + "relationship-key": "site-resource.site-resource-id", + "relationship-value": "aa2de9d8-d76b-4134-b5f1-41e79056adbe" + } + ], + "related-to-property": [ + { + "property-key": "site-resource.site-resource-name", + "property-value": "cmcc-spokesite" + } + ] + } + ] + } + }, + { + "service-instance-id": "189b87a5-72fe-4197-a307-6929c3831f81", + "service-instance-name": "SiteBeijingDC", + "service-type": "E2E Service", + "service-role": "E2E Service", + "model-invariant-id": "5c13f3fb-2744-4635-9f1f-c59c92dc8f70", + "model-version-id": "3a76b1f5-fb0d-4b6b-82d5-0e8a4ebc3838", + "resource-version": "1535686458510", + "input-parameters": "{\n \"service\":{\n \"name\":\"SiteService\",\n \"description\":\"SiteService\",\n \"serviceInvariantUuid\":\"5c13f3fb-2744-4635-9f1f-c59c92dc8f70\",\n \"serviceUuid\":\"3a76b1f5-fb0d-4b6b-82d5-0e8a4ebc3838\",\n \"globalSubscriberId\":\"Demonstration\",\n \"serviceType\":\"CCVPN\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n {\n \"resourceName\":\"SiteVF\",\n \"resourceInvariantUuid\":\"0c0e1cbe-6e01-4f9e-8c45-a9700ebc14df\",\n \"resourceUuid\":\"4ad2d390-5c51-45f5-9710-b467a4ec7a73\",\n \"resourceCustomizationUuid\":\"66590e07-0777-415c-af44-36347cf3ddd3\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"mpls\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"205456e7-3dc0-40c4-8cb0-28e6c1877042\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"deviceVF\",\n \"resourceInvariantUuid\":\"c726490a-0ce2-4bc7-abea-dade66bfb13d\",\n \"resourceUuid\":\"0e2de9d8-d76b-4134-b5f1-41e79056adbe\",\n \"resourceCustomizationUuid\":\"5bc1373e-9a36-4a00-8c62-784e0bc417ad\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sdwanvpnattachmentVF\",\n \"resourceInvariantUuid\":\"f714feec-1aef-4890-abba-f8f3a906935f\",\n \"resourceUuid\":\"709919b7-75fd-4e49-8398-67853323ff55\",\n \"resourceCustomizationUuid\":\"debd988f-fe04-4940-a5cb-37f61d84eab4\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"internet\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"64b8e8ba-62b9-4db6-b420-1ca7067d63e0\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sotnvpnattachmentvF\",\n \"resourceInvariantUuid\":\"97c4a3c6-2943-41af-8717-2f3183f944be\",\n \"resourceUuid\":\"44b777ee-9793-465d-8053-d8e86d2e2362\",\n \"resourceCustomizationUuid\":\"37aeb073-c75d-4cf6-a7fa-a1af862ef58a\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"SPPartnerVF\",\n \"resourceInvariantUuid\":\"072f9238-15b0-4bc5-a5f5-f18548739470\",\n \"resourceUuid\":\"81b9430b-8abe-45d6-8bf9-f41a8f5c735f\",\n \"resourceCustomizationUuid\":\"cd0b4b9c-66c6-49c5-b346-7580e4b6c394\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n }\n ],\n \"requestInputs\":{\n \"devicevf_device_class\":\"PNF\",\n \"devicevf_device_esn\":\"2102351BTJ10HB000075\",\n \"devicevf_device_name\":\"50.47\",\n \"devicevf_device_systemIp\":\"192.168.1.47\",\n \"devicevf_device_type\":\"AR161EW\",\n \"devicevf_device_vendor\":\"huawei\",\n \"devicevf_device_version\":\"1.0\",\n \"internet_sitewanport_description\":\"internet\",\n \"internet_sitewanport_deviceName\":\"50.47\",\n \"internet_sitewanport_inputBandwidth\":\"100\",\n \"internet_sitewanport_ipAddress\":\"100.2.30.9\",\n \"internet_sitewanport_name\":\"internet\",\n \"internet_sitewanport_outputBandwidth\":\"100\",\n \"internet_sitewanport_portNumber\":\"0/0/2\",\n \"internet_sitewanport_portType\":\"GE\",\n \"internet_sitewanport_providerIpAddress\":\"100.2.30.10\",\n \"internet_sitewanport_transportNetworkName\":\"internet\",\n \"mpls_sitewanport_description\":\"mpls\",\n \"mpls_sitewanport_deviceName\":\"50.47\",\n \"mpls_sitewanport_inputBandwidth\":\"100\",\n \"mpls_sitewanport_ipAddress\":\"10.2.30.7\",\n \"mpls_sitewanport_name\":\"mpls\",\n \"mpls_sitewanport_outputBandwidth\":\"100\",\n \"mpls_sitewanport_portNumber\":\"0/0/1\",\n \"mpls_sitewanport_portType\":\"GE\",\n \"mpls_sitewanport_providerIpAddress\":\"10.2.30.8\",\n \"mpls_sitewanport_transportNetworkName\":\"internet\",\n \"sdwanvpnattachmentvf_sdwancondition_role\":\"spoke\",\n \"sdwanvpnattachmentvf_sdwancondition_sdwanVpnName\":\"CMCCVPN\",\n \"sitevf_site_address\":\"beijing beiqing road\",\n \"sitevf_site_controlPoint\":\"CMCC_VCPE\",\n \"sitevf_site_description\":\"CMCC_CPE\",\n \"sitevf_site_emails\":\"\",\n \"sitevf_site_latitude\":\"\",\n \"sitevf_site_longitude\":\"\",\n \"sitevf_site_name\":\"CMCC_CPE2\",\n \"sitevf_site_postcode\":\"100095\",\n \"sitevf_site_role\":\"sd-wan-edge\",\n \"sitevf_site_type\":\"single-gateway\",\n \"sotnvpnattachmentvf_sotncondition_clientSignal\":\"\",\n \"sotnvpnattachmentvf_sotncondition_cVLAN\":\"\",\n \"sotnvpnattachmentvf_sotncondition_sotnVpnName\":\"SOTN L2\"\n }\n }\n }\n}", + "relationship-list": { + "relationship": [ + { + "related-to": "sp-partner", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/business/sp-partners/sp-partner/1b9c677d-fddf-4b70-938b-925a7fa57d33", + "relationship-data": [ + { + "relationship-key": "sp-partner.sp-partner-id", + "relationship-value": "1b9c677d-fddf-4b70-938b-925a7fa57d33" + } + ], + "related-to-property": [ + { + "property-key": "sp-partner.sp-partner-id", + "property-value": "1b9c677d-fddf-4b70-938b-925a7fa57d33" + } + ] + }, + { + "related-to": "site-resource", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/network/site-resources/site-resource/bb2de9d8-d76b-4134-b5f1-41e79056adbe", + "relationship-data": [ + { + "relationship-key": "site-resource.site-resource-id", + "relationship-value": "bb2de9d8-d76b-4134-b5f1-41e79056adbe" + } + ], + "related-to-property": [ + { + "property-key": "site-resource.site-resource-name", + "property-value": "cmcc-hubsite" + } + ] + }, + { + "related-to": "device", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/network/devices/device/6e0d83f3-f4f5-4a24-9462-712b52ac6711", + "relationship-data": [ + { + "relationship-key": "device.device-id", + "relationship-value": "6e0d83f3-f4f5-4a24-9462-712b52ac6711" + } + ], + "related-to-property": [ + { + "property-key": "device.device-name", + "property-value": "cmcc_hub" + } + ] + }, + { + "related-to": "wan-port-config", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/network/wan-port-configs/wan-port-config/bba3e552-08c4-4697-aeeb-d8d3e09ce58e", + "relationship-data": [ + { + "relationship-key": "wan-port-config.wan-port-config-id", + "relationship-value": "bba3e552-08c4-4697-aeeb-d8d3e09ce58e" + } + ], + "related-to-property": [ + { + "property-key": "wan-port-config.wan-port-config-name", + "property-value": "mpls" + } + ] + } + ] + } + }, + { + "service-instance-id": "289b87a5-72fe-4197-a307-6929c3831f82", + "service-instance-name": "SiteLondonDC", + "service-type": "E2E Service", + "service-role": "E2E Service", + "model-invariant-id": "5c13f3fb-2744-4635-9f1f-c59c92dc8f70", + "model-version-id": "3a76b1f5-fb0d-4b6b-82d5-0e8a4ebc3838", + "resource-version": "1535686481928", + "input-parameters": "{\n \"service\":{\n \"name\":\"SiteService\",\n \"description\":\"SiteService\",\n \"serviceInvariantUuid\":\"5c13f3fb-2744-4635-9f1f-c59c92dc8f70\",\n \"serviceUuid\":\"3a76b1f5-fb0d-4b6b-82d5-0e8a4ebc3838\",\n \"globalSubscriberId\":\"Demonstration\",\n \"serviceType\":\"CCVPN\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n {\n \"resourceName\":\"SiteVF\",\n \"resourceInvariantUuid\":\"0c0e1cbe-6e01-4f9e-8c45-a9700ebc14df\",\n \"resourceUuid\":\"4ad2d390-5c51-45f5-9710-b467a4ec7a73\",\n \"resourceCustomizationUuid\":\"66590e07-0777-415c-af44-36347cf3ddd3\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"mpls\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"205456e7-3dc0-40c4-8cb0-28e6c1877042\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"deviceVF\",\n \"resourceInvariantUuid\":\"c726490a-0ce2-4bc7-abea-dade66bfb13d\",\n \"resourceUuid\":\"0e2de9d8-d76b-4134-b5f1-41e79056adbe\",\n \"resourceCustomizationUuid\":\"5bc1373e-9a36-4a00-8c62-784e0bc417ad\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sdwanvpnattachmentVF\",\n \"resourceInvariantUuid\":\"f714feec-1aef-4890-abba-f8f3a906935f\",\n \"resourceUuid\":\"709919b7-75fd-4e49-8398-67853323ff55\",\n \"resourceCustomizationUuid\":\"debd988f-fe04-4940-a5cb-37f61d84eab4\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"internet\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"64b8e8ba-62b9-4db6-b420-1ca7067d63e0\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sotnvpnattachmentvF\",\n \"resourceInvariantUuid\":\"97c4a3c6-2943-41af-8717-2f3183f944be\",\n \"resourceUuid\":\"44b777ee-9793-465d-8053-d8e86d2e2362\",\n \"resourceCustomizationUuid\":\"37aeb073-c75d-4cf6-a7fa-a1af862ef58a\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"SPPartnerVF\",\n \"resourceInvariantUuid\":\"072f9238-15b0-4bc5-a5f5-f18548739470\",\n \"resourceUuid\":\"81b9430b-8abe-45d6-8bf9-f41a8f5c735f\",\n \"resourceCustomizationUuid\":\"cd0b4b9c-66c6-49c5-b346-7580e4b6c394\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n }\n ],\n \"requestInputs\":{\n \"devicevf_device_class\":\"PNF\",\n \"devicevf_device_esn\":\"2102351BTJ10HB000075\",\n \"devicevf_device_name\":\"50.47\",\n \"devicevf_device_systemIp\":\"192.168.1.47\",\n \"devicevf_device_type\":\"AR161EW\",\n \"devicevf_device_vendor\":\"huawei\",\n \"devicevf_device_version\":\"1.0\",\n \"internet_sitewanport_description\":\"internet\",\n \"internet_sitewanport_deviceName\":\"50.47\",\n \"internet_sitewanport_inputBandwidth\":\"100\",\n \"internet_sitewanport_ipAddress\":\"100.2.30.9\",\n \"internet_sitewanport_name\":\"internet\",\n \"internet_sitewanport_outputBandwidth\":\"100\",\n \"internet_sitewanport_portNumber\":\"0/0/2\",\n \"internet_sitewanport_portType\":\"GE\",\n \"internet_sitewanport_providerIpAddress\":\"100.2.30.10\",\n \"internet_sitewanport_transportNetworkName\":\"internet\",\n \"mpls_sitewanport_description\":\"mpls\",\n \"mpls_sitewanport_deviceName\":\"50.47\",\n \"mpls_sitewanport_inputBandwidth\":\"100\",\n \"mpls_sitewanport_ipAddress\":\"10.2.30.7\",\n \"mpls_sitewanport_name\":\"mpls\",\n \"mpls_sitewanport_outputBandwidth\":\"100\",\n \"mpls_sitewanport_portNumber\":\"0/0/1\",\n \"mpls_sitewanport_portType\":\"GE\",\n \"mpls_sitewanport_providerIpAddress\":\"10.2.30.8\",\n \"mpls_sitewanport_transportNetworkName\":\"internet\",\n \"sdwanvpnattachmentvf_sdwancondition_role\":\"spoke\",\n \"sdwanvpnattachmentvf_sdwancondition_sdwanVpnName\":\"CMCCVPN\",\n \"sitevf_site_address\":\"beijing beiqing road\",\n \"sitevf_site_controlPoint\":\"CMCC_VCPE\",\n \"sitevf_site_description\":\"CMCC_CPE\",\n \"sitevf_site_emails\":\"\",\n \"sitevf_site_latitude\":\"\",\n \"sitevf_site_longitude\":\"\",\n \"sitevf_site_name\":\"CMCC_CPE3\",\n \"sitevf_site_postcode\":\"100095\",\n \"sitevf_site_role\":\"sd-wan-edge\",\n \"sitevf_site_type\":\"single-gateway\",\n \"sotnvpnattachmentvf_sotncondition_clientSignal\":\"\",\n \"sotnvpnattachmentvf_sotncondition_cVLAN\":\"\",\n \"sotnvpnattachmentvf_sotncondition_sotnVpnName\":\"SOTN L2\"\n }\n }\n }\n}", + "relationship-list": { + "relationship": [ + { + "related-to": "sp-partner", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/business/sp-partners/sp-partner/1b9c677d-fddf-4b70-938b-925a7fa57d44", + "relationship-data": [ + { + "relationship-key": "sp-partner.sp-partner-id", + "relationship-value": "1b9c677d-fddf-4b70-938b-925a7fa57d44" + } + ], + "related-to-property": [ + { + "property-key": "sp-partner.sp-partner-id", + "property-value": "1b9c677d-fddf-4b70-938b-925a7fa57d44" + } + ] + } + ] + } + }, + { + "service-instance-id": "389b87a5-72fe-4197-a307-6929c3831f83", + "service-instance-name": "SiteLondon", + "service-type": "E2E Service", + "service-role": "E2E Service", + "model-invariant-id": "5c13f3fb-2744-4635-9f1f-c59c92dc8f70", + "model-version-id": "3a76b1f5-fb0d-4b6b-82d5-0e8a4ebc3838", + "resource-version": "1535686521672", + "input-parameters": "{\n \"service\":{\n \"name\":\"SiteService\",\n \"description\":\"SiteService\",\n \"serviceInvariantUuid\":\"5c13f3fb-2744-4635-9f1f-c59c92dc8f70\",\n \"serviceUuid\":\"3a76b1f5-fb0d-4b6b-82d5-0e8a4ebc3838\",\n \"globalSubscriberId\":\"Demonstration\",\n \"serviceType\":\"CCVPN\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n {\n \"resourceName\":\"SiteVF\",\n \"resourceInvariantUuid\":\"0c0e1cbe-6e01-4f9e-8c45-a9700ebc14df\",\n \"resourceUuid\":\"4ad2d390-5c51-45f5-9710-b467a4ec7a73\",\n \"resourceCustomizationUuid\":\"66590e07-0777-415c-af44-36347cf3ddd3\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"mpls\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"205456e7-3dc0-40c4-8cb0-28e6c1877042\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"deviceVF\",\n \"resourceInvariantUuid\":\"c726490a-0ce2-4bc7-abea-dade66bfb13d\",\n \"resourceUuid\":\"0e2de9d8-d76b-4134-b5f1-41e79056adbe\",\n \"resourceCustomizationUuid\":\"5bc1373e-9a36-4a00-8c62-784e0bc417ad\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sdwanvpnattachmentVF\",\n \"resourceInvariantUuid\":\"f714feec-1aef-4890-abba-f8f3a906935f\",\n \"resourceUuid\":\"709919b7-75fd-4e49-8398-67853323ff55\",\n \"resourceCustomizationUuid\":\"debd988f-fe04-4940-a5cb-37f61d84eab4\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"internet\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"64b8e8ba-62b9-4db6-b420-1ca7067d63e0\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sotnvpnattachmentvF\",\n \"resourceInvariantUuid\":\"97c4a3c6-2943-41af-8717-2f3183f944be\",\n \"resourceUuid\":\"44b777ee-9793-465d-8053-d8e86d2e2362\",\n \"resourceCustomizationUuid\":\"37aeb073-c75d-4cf6-a7fa-a1af862ef58a\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"SPPartnerVF\",\n \"resourceInvariantUuid\":\"072f9238-15b0-4bc5-a5f5-f18548739470\",\n \"resourceUuid\":\"81b9430b-8abe-45d6-8bf9-f41a8f5c735f\",\n \"resourceCustomizationUuid\":\"cd0b4b9c-66c6-49c5-b346-7580e4b6c394\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n }\n ],\n \"requestInputs\":{\n \"devicevf_device_class\":\"PNF\",\n \"devicevf_device_esn\":\"2102351BTJ10HB000075\",\n \"devicevf_device_name\":\"50.47\",\n \"devicevf_device_systemIp\":\"192.168.1.47\",\n \"devicevf_device_type\":\"AR161EW\",\n \"devicevf_device_vendor\":\"huawei\",\n \"devicevf_device_version\":\"1.0\",\n \"internet_sitewanport_description\":\"internet\",\n \"internet_sitewanport_deviceName\":\"50.47\",\n \"internet_sitewanport_inputBandwidth\":\"100\",\n \"internet_sitewanport_ipAddress\":\"100.2.30.9\",\n \"internet_sitewanport_name\":\"internet\",\n \"internet_sitewanport_outputBandwidth\":\"100\",\n \"internet_sitewanport_portNumber\":\"0/0/2\",\n \"internet_sitewanport_portType\":\"GE\",\n \"internet_sitewanport_providerIpAddress\":\"100.2.30.10\",\n \"internet_sitewanport_transportNetworkName\":\"internet\",\n \"mpls_sitewanport_description\":\"mpls\",\n \"mpls_sitewanport_deviceName\":\"50.47\",\n \"mpls_sitewanport_inputBandwidth\":\"100\",\n \"mpls_sitewanport_ipAddress\":\"10.2.30.7\",\n \"mpls_sitewanport_name\":\"mpls\",\n \"mpls_sitewanport_outputBandwidth\":\"100\",\n \"mpls_sitewanport_portNumber\":\"0/0/1\",\n \"mpls_sitewanport_portType\":\"GE\",\n \"mpls_sitewanport_providerIpAddress\":\"10.2.30.8\",\n \"mpls_sitewanport_transportNetworkName\":\"internet\",\n \"sdwanvpnattachmentvf_sdwancondition_role\":\"spoke\",\n \"sdwanvpnattachmentvf_sdwancondition_sdwanVpnName\":\"CMCCVPN\",\n \"sitevf_site_address\":\"beijing beiqing road\",\n \"sitevf_site_controlPoint\":\"CMCC_VCPE\",\n \"sitevf_site_description\":\"CMCC_CPE\",\n \"sitevf_site_emails\":\"\",\n \"sitevf_site_latitude\":\"\",\n \"sitevf_site_longitude\":\"\",\n \"sitevf_site_name\":\"CMCC_CPE4\",\n \"sitevf_site_postcode\":\"100095\",\n \"sitevf_site_role\":\"sd-wan-edge\",\n \"sitevf_site_type\":\"single-gateway\",\n \"sotnvpnattachmentvf_sotncondition_clientSignal\":\"\",\n \"sotnvpnattachmentvf_sotncondition_cVLAN\":\"\",\n \"sotnvpnattachmentvf_sotncondition_sotnVpnName\":\"SOTN L2\"\n }\n }\n }\n}", + "relationship-list": { + "relationship": [ + { + "related-to": "sp-partner", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/business/sp-partners/sp-partner/1b9c677d-fddf-4b70-938b-925a7fa57d55", + "relationship-data": [ + { + "relationship-key": "sp-partner.sp-partner-id", + "relationship-value": "1b9c677d-fddf-4b70-938b-925a7fa57d55" + } + ], + "related-to-property": [ + { + "property-key": "sp-partner.sp-partner-id", + "property-value": "1b9c677d-fddf-4b70-938b-925a7fa57d55" + } + ] + } + ] + } + }, + { + "service-instance-id": "32cd906f-ee7a-4ecf-b1c3-2fce4d59f8c0", + "service-instance-name": "SOTNVPNInfra", + "service-type": "E2E Service", + "service-role": "E2E Service", + "model-invariant-id": "21886a96-0664-47a3-beae-766952f2059f", + "model-version-id": "54836196-c411-4690-af98-900c1c3aadd7", + "resource-version": "1535685742159", + "input-parameters": "{\n \"service\":{\n \"name\":\"SOTNVPNInfra\",\n \"description\":\"SOTNVPNInfra\",\n \"serviceInvariantUuid\":\"21886a96-0664-47a3-beae-766952f2059f\",\n \"serviceUuid\":\"54836196-c411-4690-af98-900c1c3aadd7\",\n \"globalSubscriberId\":\"Demonstration\",\n \"serviceType\":\"CCVPN\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n {\n \"resourceName\":\"SOTNConnectivity 0\",\n \"resourceInvariantUuid\":\"1b9c677d-fddf-4b70-938b-925a7fa57d43\",\n \"resourceUuid\":\"218df3c3-50dd-4c26-9e36-4771387bb771\",\n \"resourceCustomizationUuid\":\"b44071c8-04fd-4d6b-b6af-772cbfaa1129\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"SPPartnerVF 0\",\n \"resourceInvariantUuid\":\"072f9238-15b0-4bc5-a5f5-f18548739470\",\n \"resourceUuid\":\"81b9430b-8abe-45d6-8bf9-f41a8f5c735f\",\n \"resourceCustomizationUuid\":\"c3612284-6c67-4d8c-8b41-b699cc90e76d\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n }\n ],\n \"requestInputs\":{\n \"sotnconnectivity0_eir\":\"1000\",\n \"sotnconnectivity0_cir\":\"1000\",\n \"sotnconnectivity0_endTime\":\"2018-8-8 10:00\",\n \"sotnconnectivity0_ebs\":\"1000\",\n \"sotnconnectivity0_startTime\":\"2018-8-1 10:00\",\n \"sotnconnectivity0_dualLink\":\"true\",\n \"sotnconnectivity0_reroute\":\"false\",\n \"sotnconnectivity0_cbs\":\"1000\",\n \"sotnconnectivity0_name\":\"SOTN L2\",\n \"sotnconnectivity0_SLS\":\"\",\n \"sotnconnectivity0_description\":\"\",\n \"sotnconnectivity0_couplingFlag\":\"\",\n \"sotnconnectivity0_colorAware\":\"\",\n \"sotnconnectivity0_COS\":\"standard\"\n }\n }\n }\n}", + "relationship-list": { + "relationship": [ + { + "related-to": "sp-partner", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/business/sp-partners/sp-partner/1b9c677d-fddf-4b70-938b-925a7fa57d99", + "relationship-data": [ + { + "relationship-key": "sp-partner.sp-partner-id", + "relationship-value": "1b9c677d-fddf-4b70-938b-925a7fa57d99" + } + ], + "related-to-property": [ + { + "property-key": "sp-partner.sp-partner-id", + "property-value": "1b9c677d-fddf-4b70-938b-925a7fa57d99" + } + ] + }, + { + "related-to": "connectivity", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/network/connectivities/connectivity/4efe6dff-acfc-4d13-a3fd-1177d3c08e84", + "relationship-data": [ + { + "relationship-key": "connectivity.connectivity-id", + "relationship-value": "4efe6dff-acfc-4d13-a3fd-1177d3c08e84" + } + ], + "related-to-property": [ + { + "property-key": "connectivity.etht-svc-name", + "property-value": "SOTNVPNInfra" + } + ] + }, + { + "related-to": "allotted-resource", + "relationship-label": "org.onap.relationships.inventory.Uses", + "related-link": "/aai/v13/business/customers/customer/Democcy/service-subscriptions/service-subscription/CCVPN/service-instances/service-instance/189b87a5-72fe-4197-a307-6929c3831f81/allotted-resources/allotted-resource/bb14feec-1aef-4890-abba-f8f3a906935f", + "relationship-data": [ + { + "relationship-key": "customer.global-customer-id", + "relationship-value": "Democcy" + }, + { + "relationship-key": "service-subscription.service-type", + "relationship-value": "CCVPN" + }, + { + "relationship-key": "service-instance.service-instance-id", + "relationship-value": "189b87a5-72fe-4197-a307-6929c3831f81" + }, + { + "relationship-key": "allotted-resource.id", + "relationship-value": "bb14feec-1aef-4890-abba-f8f3a906935f" + } + ], + "related-to-property": [ + { + "property-key": "allotted-resource.description", + "property-value": "bb14feec-1aef-4890-abba-f8f3a906935f" + }, + { + "property-key": "allotted-resource.allotted-resource-name", + "property-value": "ston ar" + } + ] + }, + { + "related-to": "allotted-resource", + "relationship-label": "org.onap.relationships.inventory.Uses", + "related-link": "/aai/v13/business/customers/customer/Democcy/service-subscriptions/service-subscription/CCVPN/service-instances/service-instance/089b87a5-72fe-4197-a307-6929c3831f80/allotted-resources/allotted-resource/aa14feec-1aef-4890-abba-f8f3a906935f", + "relationship-data": [ + { + "relationship-key": "customer.global-customer-id", + "relationship-value": "Democcy" + }, + { + "relationship-key": "service-subscription.service-type", + "relationship-value": "CCVPN" + }, + { + "relationship-key": "service-instance.service-instance-id", + "relationship-value": "089b87a5-72fe-4197-a307-6929c3831f80" + }, + { + "relationship-key": "allotted-resource.id", + "relationship-value": "aa14feec-1aef-4890-abba-f8f3a906935f" + } + ], + "related-to-property": [ + { + "property-key": "allotted-resource.description", + "property-value": "aa14feec-1aef-4890-abba-f8f3a906935f" + }, + { + "property-key": "allotted-resource.allotted-resource-name", + "property-value": "ston ar" + } + ] + } + ] + } + } + ] +}
\ No newline at end of file diff --git a/usecaseui-portal/src/app/mock/json/instanceTableData2.json b/usecaseui-portal/src/app/mock/json/instanceTableData2.json new file mode 100644 index 00000000..d29f5f59 --- /dev/null +++ b/usecaseui-portal/src/app/mock/json/instanceTableData2.json @@ -0,0 +1,388 @@ +{ + "results": [ + { + "service-subscription": { + "service-type": "{service-type}", + "temp-ub-sub-account-id": "some sub account", + "service-type-id":"sotn", + "service-instances": { + "service-instance": [ + { + "service-instance-id": "uuidxxx", + "service-instance-name": "dddd1", + "environment-context": "some context 1", + "workload-context": "some workload 1", + "input-parameters": "request parameters 1", + "relationship-list": { + "relationship" : [ + ] + } + }, + { + "service-instance-id": "some id 2", + "service-instance-name": "some name 2", + "environment-context": "some context 2", + "workload-context": "some workload 2", + "input-parameters": "request parameters 2", + "relationship-list": { + "relationship" : [ + ] + } + }, + { + "service-instance-id": "some id 3", + "service-instance-name": "some name 3", + "environment-context": "some context 3", + "workload-context": "some workload 3", + "input-parameters": "request parameters 3", + "relationship-list": { + "relationship" : [ + ] + } + } + ] + }, + "relationship-list": { + "relationship" : [ + ] + } + } + }, + { + "service-subscription": { + "service-type": "{service-type}", + "temp-ub-sub-account-id": "some sub account", + "service-type-id":"sotn", + "service-instances": { + "service-instance": [ + { + "service-instance-id": "some id 1", + "service-instance-name": "some name 1", + "environment-context": "some context 1", + "workload-context": "some workload 1", + "input-parameters": "request parameters 1", + "relationship-list": { + "relationship" : [ + ] + } + }, + { + "service-instance-id": "some id 2", + "service-instance-name": "some name 2", + "environment-context": "some context 2", + "workload-context": "some workload 2", + "input-parameters": "request parameters 2", + "relationship-list": { + "relationship" : [ + ] + } + }, + { + "service-instance-id": "some id 3", + "service-instance-name": "some name 3", + "environment-context": "some context 3", + "workload-context": "some workload 3", + "input-parameters": "request parameters 3", + "relationship-list": { + "relationship" : [ + ] + } + } + ] + }, + "relationship-list": { + "relationship" : [ + ] + } + } + }, + { + "service-subscription": { + "service-type": "{service-type}", + "temp-ub-sub-account-id": "some sub account", + "service-type-id":"sotn", + "service-instances": { + "service-instance": [ + { + "service-instance-id": "some id 1", + "service-instance-name": "some name 1", + "environment-context": "some context 1", + "workload-context": "some workload 1", + "input-parameters": "request parameters 1", + "relationship-list": { + "relationship" : [ + ] + } + }, + { + "service-instance-id": "uuidaaaa", + "service-instance-name": "dddd6", + "environment-context": "some context 2", + "workload-context": "some workload 2", + "input-parameters": "request parameters 2", + "relationship-list": { + "relationship" : [ + ] + } + }, + { + "service-instance-id": "some id 3", + "service-instance-name": "some name 3", + "environment-context": "some context 3", + "workload-context": "some workload 3", + "input-parameters": "request parameters 3", + "relationship-list": { + "relationship" : [ + ] + } + } + ] + }, + "relationship-list": { + "relationship" : [ + ] + } + } + }, + { + "service-subscription": { + "service-type": "{service-type}", + "temp-ub-sub-account-id": "some sub account", + "service-type-id":"ccvpn", + "service-instances": { + "service-instance": [ + { + "service-instance-id": "some id 1", + "service-instance-name": "some name 1", + "environment-context": "some context 1", + "workload-context": "some workload 1", + "input-parameters": "request parameters 1", + "relationship-list": { + "relationship" : [ + ] + } + }, + { + "service-instance-id": "some id 2", + "service-instance-name": "some name 2", + "environment-context": "some context 2", + "workload-context": "some workload 2", + "input-parameters": "request parameters 2", + "relationship-list": { + "relationship" : [ + ] + } + }, + { + "service-instance-id": "some id 3", + "service-instance-name": "some name 3", + "environment-context": "some context 3", + "workload-context": "some workload 3", + "input-parameters": "request parameters 3", + "relationship-list": { + "relationship" : [ + ] + } + } + ] + }, + "relationship-list": { + "relationship" : [ + ] + } + } + }, + { + "service-subscription": { + "service-type": "{service-type}", + "temp-ub-sub-account-id": "some sub account", + "service-type-id":"ccvpn", + "service-instances": { + "service-instance": [ + { + "service-instance-id": "some id 1", + "service-instance-name": "some name 1", + "environment-context": "some context 1", + "workload-context": "some workload 1", + "input-parameters": "request parameters 1", + "relationship-list": { + "relationship" : [ + ] + } + }, + { + "service-instance-id": "some id 2", + "service-instance-name": "some name 2", + "environment-context": "some context 2", + "workload-context": "some workload 2", + "input-parameters": "request parameters 2", + "relationship-list": { + "relationship" : [ + ] + } + }, + { + "service-instance-id": "some id 3", + "service-instance-name": "some name 3", + "environment-context": "some context 3", + "workload-context": "some workload 3", + "input-parameters": "request parameters 3", + "relationship-list": { + "relationship" : [ + ] + } + } + ] + }, + "relationship-list": { + "relationship" : [ + ] + } + } + }, + { + "service-subscription": { + "service-type": "{service-type}", + "temp-ub-sub-account-id": "some sub account", + "service-type-id":"ccvpn", + "service-instances": { + "service-instance": [ + { + "service-instance-id": "some id 1", + "service-instance-name": "some name 1", + "environment-context": "some context 1", + "workload-context": "some workload 1", + "input-parameters": "request parameters 1", + "relationship-list": { + "relationship" : [ + ] + } + }, + { + "service-instance-id": "some id 2", + "service-instance-name": "some name 2", + "environment-context": "some context 2", + "workload-context": "some workload 2", + "input-parameters": "request parameters 2", + "relationship-list": { + "relationship" : [ + ] + } + }, + { + "service-instance-id": "some id 3", + "service-instance-name": "some name 3", + "environment-context": "some context 3", + "workload-context": "some workload 3", + "input-parameters": "request parameters 3", + "relationship-list": { + "relationship" : [ + ] + } + } + ] + }, + "relationship-list": { + "relationship" : [ + ] + } + } + }, + { + "service-subscription": { + "service-type": "{service-type}", + "temp-ub-sub-account-id": "some sub account", + "service-type-id":"ccvpn", + "service-instances": { + "service-instance": [ + { + "service-instance-id": "some id 1", + "service-instance-name": "some name 1", + "environment-context": "some context 1", + "workload-context": "some workload 1", + "input-parameters": "request parameters 1", + "relationship-list": { + "relationship" : [ + ] + } + }, + { + "service-instance-id": "some id 2", + "service-instance-name": "some name 2", + "environment-context": "some context 2", + "workload-context": "some workload 2", + "input-parameters": "request parameters 2", + "relationship-list": { + "relationship" : [ + ] + } + }, + { + "service-instance-id": "some id 3", + "service-instance-name": "some name 3", + "environment-context": "some context 3", + "workload-context": "some workload 3", + "input-parameters": "request parameters 3", + "relationship-list": { + "relationship" : [ + ] + } + } + ] + }, + "relationship-list": { + "relationship" : [ + ] + } + } + }, + { + "service-subscription": { + "service-type": "{service-type}", + "temp-ub-sub-account-id": "some sub account", + "service-type-id":"ccvpn", + "service-instances": { + "service-instance": [ + { + "service-instance-id": "some id 1", + "service-instance-name": "some name 1", + "environment-context": "some context 1", + "workload-context": "some workload 1", + "input-parameters": "request parameters 1", + "relationship-list": { + "relationship" : [ + ] + } + }, + { + "service-instance-id": "some id 2", + "service-instance-name": "some name 2", + "environment-context": "some context 2", + "workload-context": "some workload 2", + "input-parameters": "request parameters 2", + "relationship-list": { + "relationship" : [ + ] + } + }, + { + "service-instance-id": "some id 3", + "service-instance-name": "some name 3", + "environment-context": "some context 3", + "workload-context": "some workload 3", + "input-parameters": "request parameters 3", + "relationship-list": { + "relationship" : [ + ] + } + } + ] + }, + "relationship-list": { + "relationship" : [ + ] + } + } + } + ] +}
\ No newline at end of file diff --git a/usecaseui-portal/src/app/mock/json/instanceTableData3.json b/usecaseui-portal/src/app/mock/json/instanceTableData3.json new file mode 100644 index 00000000..98777289 --- /dev/null +++ b/usecaseui-portal/src/app/mock/json/instanceTableData3.json @@ -0,0 +1,2 @@ + +{"service-instance":[{"service-instance-id":"8e07f832-3f50-4657-9b44-010049e8b488","service-instance-name":"SOTNVPNInfra","service-type":"E2E Service","service-role":"E2E Service","model-invariant-id":"bafa365f-4056-4ad3-a039-d6b3e3e0fd35","model-version-id":"fdbb8ddd-3325-4840-a156-9ad601b9366c","resource-version":"1537769390960","input-parameters":"{\n \"service\":{\n \"name\":\"SOTNVPNInfra\",\n \"description\":\"SOTNVPNInfra\",\n \"serviceInvariantUuid\":\"bafa365f-4056-4ad3-a039-d6b3e3e0fd35\",\n \"serviceUuid\":\"fdbb8ddd-3325-4840-a156-9ad601b9366c\",\n \"globalSubscriberId\":\"demo\",\n \"serviceType\":\"ccvpn\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n {\n \"resourceName\":\"SOTNConnectivity 0\",\n \"resourceInvariantUuid\":\"1b9c677d-fddf-4b70-938b-925a7fa57d43\",\n \"resourceUuid\":\"218df3c3-50dd-4c26-9e36-4771387bb771\",\n \"resourceCustomizationUuid\":\"b44071c8-04fd-4d6b-b6af-772cbfaa1129\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"SPPartnerVF 0\",\n \"resourceInvariantUuid\":\"072f9238-15b0-4bc5-a5f5-f18548739470\",\n \"resourceUuid\":\"81b9430b-8abe-45d6-8bf9-f41a8f5c735f\",\n \"resourceCustomizationUuid\":\"c3612284-6c67-4d8c-8b41-b699cc90e76d\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n }\n ],\n \"requestInputs\":{\n \"sotnconnectivity0_eir\":\"1000\",\n \"sotnconnectivity0_cir\":\"1000\",\n \"sotnconnectivity0_endTime\":\"2018-8-8 10:00\",\n \"sotnconnectivity0_ebs\":\"1000\",\n \"sotnconnectivity0_startTime\":\"2018-8-1 10:00\",\n \"sotnconnectivity0_dualLink\":\"true\",\n \"sotnconnectivity0_reroute\":\"false\",\n \"sotnconnectivity0_cbs\":\"1000\",\n \"sotnconnectivity0_name\":\"SOTN L2\",\n \"sotnconnectivity0_SLS\":\"\",\n \"sotnconnectivity0_description\":\"\",\n \"sotnconnectivity0_couplingFlag\":\"\",\n \"sotnconnectivity0_colorAware\":\"\",\n \"sotnconnectivity0_COS\":\"standard\"\n }\n }\n }\n}","relationship-list":{"relationship":[{"related-to":"connectivity","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/network/connectivities/connectivity/2e359c75-2af3-4fea-9550-a893edeab8b5","relationship-data":[{"relationship-key":"connectivity.connectivity-id","relationship-value":"2e359c75-2af3-4fea-9550-a893edeab8b5"}],"related-to-property":[{"property-key":"connectivity.etht-svc-name","property-value":"vpn1"}]},{"related-to":"sp-partner","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/business/sp-partners/sp-partner/32cd906f-ee7a-4ecf-b1c3-2fce4d59f8c0","relationship-data":[{"relationship-key":"sp-partner.sp-partner-id","relationship-value":"32cd906f-ee7a-4ecf-b1c3-2fce4d59f8c0"}],"related-to-property":[{"property-key":"sp-partner.sp-partner-id","property-value":"32cd906f-ee7a-4ecf-b1c3-2fce4d59f8c0"}]}]}},{"service-instance-id":"a6d69c62-75b5-4f04-8cd7-9ca5dfcc4205","service-instance-name":"DcLondon","service-type":"E2E Service","service-role":"E2E Service","model-invariant-id":"499e5e60-c8b2-4ea6-8c4e-7739420673a9","model-version-id":"8ec97da1-1e0a-4198-9c9a-3da2c60d7974","resource-version":"1537769721422","input-parameters":"{\n \"service\":{\n \"name\":\"DcLondon\",\n \"description\":\"SiteService\",\n \"serviceInvariantUuid\":\"499e5e60-c8b2-4ea6-8c4e-7739420673a9\",\n \"serviceUuid\":\"8ec97da1-1e0a-4198-9c9a-3da2c60d7974\",\n \"globalSubscriberId\":\"demo\",\n \"serviceType\":\"ccvpn\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n {\n \"resourceName\":\"SiteVF\",\n \"resourceInvariantUuid\":\"0c0e1cbe-6e01-4f9e-8c45-a9700ebc14df\",\n \"resourceUuid\":\"4ad2d390-5c51-45f5-9710-b467a4ec7a73\",\n \"resourceCustomizationUuid\":\"66590e07-0777-415c-af44-36347cf3ddd3\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"mpls\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"205456e7-3dc0-40c4-8cb0-28e6c1877042\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"deviceVF\",\n \"resourceInvariantUuid\":\"c726490a-0ce2-4bc7-abea-dade66bfb13d\",\n \"resourceUuid\":\"0e2de9d8-d76b-4134-b5f1-41e79056adbe\",\n \"resourceCustomizationUuid\":\"5bc1373e-9a36-4a00-8c62-784e0bc417ad\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sdwanvpnattachmentVF\",\n \"resourceInvariantUuid\":\"f714feec-1aef-4890-abba-f8f3a906935f\",\n \"resourceUuid\":\"709919b7-75fd-4e49-8398-67853323ff55\",\n \"resourceCustomizationUuid\":\"debd988f-fe04-4940-a5cb-37f61d84eab4\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"internet\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"64b8e8ba-62b9-4db6-b420-1ca7067d63e0\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sotnvpnattachmentvF\",\n \"resourceInvariantUuid\":\"97c4a3c6-2943-41af-8717-2f3183f944be\",\n \"resourceUuid\":\"44b777ee-9793-465d-8053-d8e86d2e2362\",\n \"resourceCustomizationUuid\":\"37aeb073-c75d-4cf6-a7fa-a1af862ef58a\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"SPPartnerVF\",\n \"resourceInvariantUuid\":\"072f9238-15b0-4bc5-a5f5-f18548739470\",\n \"resourceUuid\":\"81b9430b-8abe-45d6-8bf9-f41a8f5c735f\",\n \"resourceCustomizationUuid\":\"cd0b4b9c-66c6-49c5-b346-7580e4b6c394\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n }\n ],\n \"requestInputs\":{\n \"devicevf_device_class\":\"PNF\",\n \"devicevf_device_esn\":\"2102351BTJ10HB000075\",\n \"devicevf_device_name\":\"50.47\",\n \"devicevf_device_systemIp\":\"192.168.1.47\",\n \"devicevf_device_type\":\"AR161EW\",\n \"devicevf_device_vendor\":\"huawei\",\n \"devicevf_device_version\":\"1.0\",\n \"internet_sitewanport_description\":\"internet\",\n \"internet_sitewanport_deviceName\":\"50.47\",\n \"internet_sitewanport_inputBandwidth\":\"100\",\n \"internet_sitewanport_ipAddress\":\"100.2.30.9\",\n \"internet_sitewanport_name\":\"internet\",\n \"internet_sitewanport_outputBandwidth\":\"100\",\n \"internet_sitewanport_portNumber\":\"0/0/2\",\n \"internet_sitewanport_portType\":\"GE\",\n \"internet_sitewanport_providerIpAddress\":\"100.2.30.10\",\n \"internet_sitewanport_transportNetworkName\":\"internet\",\n \"mpls_sitewanport_description\":\"mpls\",\n \"mpls_sitewanport_deviceName\":\"50.47\",\n \"mpls_sitewanport_inputBandwidth\":\"100\",\n \"mpls_sitewanport_ipAddress\":\"10.2.30.7\",\n \"mpls_sitewanport_name\":\"mpls\",\n \"mpls_sitewanport_outputBandwidth\":\"100\",\n \"mpls_sitewanport_portNumber\":\"0/0/1\",\n \"mpls_sitewanport_portType\":\"GE\",\n \"mpls_sitewanport_providerIpAddress\":\"10.2.30.8\",\n \"mpls_sitewanport_transportNetworkName\":\"internet\",\n \"sdwanvpnattachmentvf_sdwancondition_role\":\"spoke\",\n \"sdwanvpnattachmentvf_sdwancondition_sdwanVpnName\":\"CMCCVPN\",\n \"sitevf_site_address\":\"beijing beiqing road\",\n \"sitevf_site_controlPoint\":\"CMCC_VCPE\",\n \"sitevf_site_description\":\"CMCC_CPE\",\n \"sitevf_site_emails\":\"\",\n \"sitevf_site_latitude\":\"\",\n \"sitevf_site_longitude\":\"\",\n \"sitevf_site_name\":\"CMCC_CPE\",\n \"sitevf_site_postcode\":\"100095\",\n \"sitevf_site_role\":\"sd-wan-edge\",\n \"sitevf_site_type\":\"single-gateway\",\n \"sotnvpnattachmentvf_sotncondition_clientSignal\":\"\",\n \"sotnvpnattachmentvf_sotncondition_cVLAN\":\"\",\n \"sotnvpnattachmentvf_sotncondition_sotnVpnName\":\"SOTN L2\"\n }\n }\n }\n}","relationship-list":{"relationship":[{"related-to":"device","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/network/devices/device/2cacf49c-7c09-4155-b18a-4468dce34083","relationship-data":[{"relationship-key":"device.device-id","relationship-value":"2cacf49c-7c09-4155-b18a-4468dce34083"}],"related-to-property":[{"property-key":"device.device-name","property-value":"TravelDevice"}]},{"related-to":"site-resource","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/network/site-resources/site-resource/f288d54e-be09-46d3-bb1f-38729ec74bb5","relationship-data":[{"relationship-key":"site-resource.site-resource-id","relationship-value":"f288d54e-be09-46d3-bb1f-38729ec74bb5"}],"related-to-property":[{"property-key":"site-resource.site-resource-name","property-value":"travelSite"}]},{"related-to":"wan-port-config","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/network/wan-port-configs/wan-port-config/99866f05-9749-456e-8909-61eebf08373e","relationship-data":[{"relationship-key":"wan-port-config.wan-port-config-id","relationship-value":"99866f05-9749-456e-8909-61eebf08373e"}],"related-to-property":[{"property-key":"wan-port-config.wan-port-config-name","property-value":"intenet"}]},{"related-to":"wan-port-config","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/network/wan-port-configs/wan-port-config/afab2cc0-28c9-4fd3-bf03-01c8034f8191","relationship-data":[{"relationship-key":"wan-port-config.wan-port-config-id","relationship-value":"afab2cc0-28c9-4fd3-bf03-01c8034f8191"}],"related-to-property":[{"property-key":"wan-port-config.wan-port-config-name","property-value":"mpls"}]},{"related-to":"sp-partner","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/business/sp-partners/sp-partner/167a285b-0875-41ff-8ed1-1178db6f3133","relationship-data":[{"relationship-key":"sp-partner.sp-partner-id","relationship-value":"167a285b-0875-41ff-8ed1-1178db6f3133"}],"related-to-property":[{"property-key":"sp-partner.sp-partner-id","property-value":"167a285b-0875-41ff-8ed1-1178db6f3133"}]},{"related-to":"allotted-resource","relationship-label":"org.onap.relationships.inventory.Uses","related-link":"/aai/v13/business/customers/customer/demo/service-subscriptions/service-subscription/ccvpn/service-instances/service-instance/0ea94797-3772-40ff-b6fb-69f06c533be3/allotted-resources/allotted-resource/d519761d-c89c-4164-86c7-8f74952eea65","relationship-data":[{"relationship-key":"customer.global-customer-id","relationship-value":"demo"},{"relationship-key":"service-subscription.service-type","relationship-value":"ccvpn"},{"relationship-key":"service-instance.service-instance-id","relationship-value":"0ea94797-3772-40ff-b6fb-69f06c533be3"},{"relationship-key":"allotted-resource.id","relationship-value":"d519761d-c89c-4164-86c7-8f74952eea65"}],"related-to-property":[{"property-key":"allotted-resource.description","property-value":"sdwan-attachment"},{"property-key":"allotted-resource.allotted-resource-name","property-value":"sdwan ar"}]},{"related-to":"allotted-resource","relationship-label":"org.onap.relationships.inventory.Uses","related-link":"/aai/v13/business/customers/customer/demo/service-subscriptions/service-subscription/ccvpn/service-instances/service-instance/8e07f832-3f50-4657-9b44-010049e8b488/allotted-resources/allotted-resource/65f21c28-8b19-4769-8f08-174e2afa5488","relationship-data":[{"relationship-key":"customer.global-customer-id","relationship-value":"demo"},{"relationship-key":"service-subscription.service-type","relationship-value":"ccvpn"},{"relationship-key":"service-instance.service-instance-id","relationship-value":"8e07f832-3f50-4657-9b44-010049e8b488"},{"relationship-key":"allotted-resource.id","relationship-value":"65f21c28-8b19-4769-8f08-174e2afa5488"}],"related-to-property":[{"property-key":"allotted-resource.description","property-value":"sotn attachment"},{"property-key":"allotted-resource.allotted-resource-name","property-value":"ston ar"}]}]}},{"service-instance-id":"0ea94797-3772-40ff-b6fb-69f06c533be3","service-instance-name":"SDWANVPNInfra","service-type":"E2E Service","service-role":"E2E Service","model-invariant-id":"e2b217d6-7cac-4156-9f44-f9b010b350a6","model-version-id":"20d9e7dc-f030-4230-af79-ba0bde7cbe2e","resource-version":"1537769801383","input-parameters":"{\n \"service\":{\n \"name\":\"SDWANVPNInfra\",\n \"description\":\"SDWANVPNInfra\",\n \"serviceInvariantUuid\":\"e2b217d6-7cac-4156-9f44-f9b010b350a6\",\n \"serviceUuid\":\"20d9e7dc-f030-4230-af79-ba0bde7cbe2e\",\n \"globalSubscriberId\":\"demo\",\n \"serviceType\":\"ccvpn\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n {\n \"resourceName\":\"SDWANConnectivity 0\",\n \"resourceInvariantUuid\":\"f99a9a23-c88e-44ff-a4dc-22b88675d278\",\n \"resourceUuid\":\"7baa7742-3a13-4288-8330-868015adc340\",\n \"resourceCustomizationUuid\":\"94ec574b-2306-4cbd-8214-09662b040f73\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"SPPartnerVF 0\",\n \"resourceInvariantUuid\":\"072f9238-15b0-4bc5-a5f5-f18548739470\",\n \"resourceUuid\":\"81b9430b-8abe-45d6-8bf9-f41a8f5c735f\",\n \"resourceCustomizationUuid\":\"a7baba5d-6ac3-42b5-b47d-070841303ab1\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n }\n ],\n \"requestInputs\":{\n \"sdwanconnectivity0_name\":\"CMCCVPN\",\n \"sdwanconnectivity0_topology\":\"hub-spoke\"\n }\n }\n }\n}","relationship-list":{"relationship":[{"related-to":"sdwan-vpn","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/network/sdwan-vpns/sdwan-vpn/0d8707cd-9d27-4503-a0b0-e9b1b1a83b1e","relationship-data":[{"relationship-key":"sdwan-vpn.sdwan-vpn-id","relationship-value":"0d8707cd-9d27-4503-a0b0-e9b1b1a83b1e"}],"related-to-property":[{"property-key":"sdwan-vpn.sdwan-vpn-name"}]},{"related-to":"sp-partner","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/business/sp-partners/sp-partner/15e88f8e-473f-4d88-92f8-6739a42baa2g","relationship-data":[{"relationship-key":"sp-partner.sp-partner-id","relationship-value":"15e88f8e-473f-4d88-92f8-6739a42baa2g"}],"related-to-property":[{"property-key":"sp-partner.sp-partner-id","property-value":"15e88f8e-473f-4d88-92f8-6739a42baa2g"}]}]}},{"service-instance-id":"f08067b8-a07b-4c41-b750-5f9b35281e67","service-instance-name":"siteFangshanQu","service-type":"E2E Service","service-role":"E2E Service","model-invariant-id":"499e5e60-c8b2-4ea6-8c4e-7739420673a9","model-version-id":"8ec97da1-1e0a-4198-9c9a-3da2c60d7974","resource-version":"1537779181775","selflink":"restconf/config/GENERIC-RESOURCE-API:services/service/506b87a5-72fe-4197-a307-6929c3871ab2/service-data/service-topology/","input-parameters":"{\n \"service\":{\n \"name\":\"siteFangshanQu\",\n \"description\":\"SiteService\",\n \"serviceInvariantUuid\":\"499e5e60-c8b2-4ea6-8c4e-7739420673a9\",\n \"serviceUuid\":\"8ec97da1-1e0a-4198-9c9a-3da2c60d7974\",\n \"globalSubscriberId\":\"demo\",\n \"serviceType\":\"ccvpn\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n {\n \"resourceName\":\"SiteVF\",\n \"resourceInvariantUuid\":\"0c0e1cbe-6e01-4f9e-8c45-a9700ebc14df\",\n \"resourceUuid\":\"4ad2d390-5c51-45f5-9710-b467a4ec7a73\",\n \"resourceCustomizationUuid\":\"66590e07-0777-415c-af44-36347cf3ddd3\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"mpls\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"205456e7-3dc0-40c4-8cb0-28e6c1877042\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"deviceVF\",\n \"resourceInvariantUuid\":\"c726490a-0ce2-4bc7-abea-dade66bfb13d\",\n \"resourceUuid\":\"0e2de9d8-d76b-4134-b5f1-41e79056adbe\",\n \"resourceCustomizationUuid\":\"5bc1373e-9a36-4a00-8c62-784e0bc417ad\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sdwanvpnattachmentVF\",\n \"resourceInvariantUuid\":\"f714feec-1aef-4890-abba-f8f3a906935f\",\n \"resourceUuid\":\"709919b7-75fd-4e49-8398-67853323ff55\",\n \"resourceCustomizationUuid\":\"debd988f-fe04-4940-a5cb-37f61d84eab4\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"internet\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"64b8e8ba-62b9-4db6-b420-1ca7067d63e0\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sotnvpnattachmentvF\",\n \"resourceInvariantUuid\":\"97c4a3c6-2943-41af-8717-2f3183f944be\",\n \"resourceUuid\":\"44b777ee-9793-465d-8053-d8e86d2e2362\",\n \"resourceCustomizationUuid\":\"37aeb073-c75d-4cf6-a7fa-a1af862ef58a\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"SPPartnerVF\",\n \"resourceInvariantUuid\":\"072f9238-15b0-4bc5-a5f5-f18548739470\",\n \"resourceUuid\":\"81b9430b-8abe-45d6-8bf9-f41a8f5c735f\",\n \"resourceCustomizationUuid\":\"cd0b4b9c-66c6-49c5-b346-7580e4b6c394\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n }\n ],\n \"requestInputs\":{\n \"devicevf_device_class\":\"PNF\",\n \"devicevf_device_esn\":\"2102351BTJ10HB000075\",\n \"devicevf_device_name\":\"50.47\",\n \"devicevf_device_systemIp\":\"192.168.1.47\",\n \"devicevf_device_type\":\"AR161EW\",\n \"devicevf_device_vendor\":\"huawei\",\n \"devicevf_device_version\":\"1.0\",\n \"internet_sitewanport_description\":\"internet\",\n \"internet_sitewanport_deviceName\":\"50.47\",\n \"internet_sitewanport_inputBandwidth\":\"100\",\n \"internet_sitewanport_ipAddress\":\"100.2.30.9\",\n \"internet_sitewanport_name\":\"internet\",\n \"internet_sitewanport_outputBandwidth\":\"100\",\n \"internet_sitewanport_portNumber\":\"0/0/2\",\n \"internet_sitewanport_portType\":\"GE\",\n \"internet_sitewanport_providerIpAddress\":\"100.2.30.10\",\n \"internet_sitewanport_transportNetworkName\":\"internet\",\n \"mpls_sitewanport_description\":\"mpls\",\n \"mpls_sitewanport_deviceName\":\"50.47\",\n \"mpls_sitewanport_inputBandwidth\":\"100\",\n \"mpls_sitewanport_ipAddress\":\"10.2.30.7\",\n \"mpls_sitewanport_name\":\"mpls\",\n \"mpls_sitewanport_outputBandwidth\":\"100\",\n \"mpls_sitewanport_portNumber\":\"0/0/1\",\n \"mpls_sitewanport_portType\":\"GE\",\n \"mpls_sitewanport_providerIpAddress\":\"10.2.30.8\",\n \"mpls_sitewanport_transportNetworkName\":\"internet\",\n \"sdwanvpnattachmentvf_sdwancondition_role\":\"spoke\",\n \"sdwanvpnattachmentvf_sdwancondition_sdwanVpnName\":\"CMCCVPN\",\n \"sitevf_site_address\":\"beijing beiqing road\",\n \"sitevf_site_controlPoint\":\"CMCC_VCPE\",\n \"sitevf_site_description\":\"CMCC_CPE\",\n \"sitevf_site_emails\":\"\",\n \"sitevf_site_latitude\":\"\",\n \"sitevf_site_longitude\":\"\",\n \"sitevf_site_name\":\"CMCC_CPE\",\n \"sitevf_site_postcode\":\"100095\",\n \"sitevf_site_role\":\"sd-wan-edge\",\n \"sitevf_site_type\":\"single-gateway\",\n \"sotnvpnattachmentvf_sotncondition_clientSignal\":\"\",\n \"sotnvpnattachmentvf_sotncondition_cVLAN\":\"\",\n \"sotnvpnattachmentvf_sotncondition_sotnVpnName\":\"SOTN L2\"\n }\n }\n }\n}","relationship-list":{"relationship":[{"related-to":"sp-partner","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/business/sp-partners/sp-partner/506b87a5-72fe-4197-a307-6929c3871ab2","relationship-data":[{"relationship-key":"sp-partner.sp-partner-id","relationship-value":"506b87a5-72fe-4197-a307-6929c3871ab2"}],"related-to-property":[{"property-key":"sp-partner.sp-partner-id","property-value":"506b87a5-72fe-4197-a307-6929c3871ab2"}]}]}},{"service-instance-id":"6a6478d1-f62f-439c-8f16-6038a44af8c3","service-instance-name":"SDWANVPNInfra-2","service-type":"E2E Service","service-role":"E2E Service","model-invariant-id":"e2b217d6-7cac-4156-9f44-f9b010b350a6","model-version-id":"20d9e7dc-f030-4230-af79-ba0bde7cbe2e","resource-version":"1537779569094","input-parameters":"{\n \"service\":{\n \"name\":\"SDWANVPNInfra-2\",\n \"description\":\"SDWANVPNInfra\",\n \"serviceInvariantUuid\":\"e2b217d6-7cac-4156-9f44-f9b010b350a6\",\n \"serviceUuid\":\"20d9e7dc-f030-4230-af79-ba0bde7cbe2e\",\n \"globalSubscriberId\":\"demo\",\n \"serviceType\":\"ccvpn\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n {\n \"resourceName\":\"SDWANConnectivity 0\",\n \"resourceInvariantUuid\":\"f99a9a23-c88e-44ff-a4dc-22b88675d278\",\n \"resourceUuid\":\"7baa7742-3a13-4288-8330-868015adc340\",\n \"resourceCustomizationUuid\":\"94ec574b-2306-4cbd-8214-09662b040f73\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"SPPartnerVF 0\",\n \"resourceInvariantUuid\":\"072f9238-15b0-4bc5-a5f5-f18548739470\",\n \"resourceUuid\":\"81b9430b-8abe-45d6-8bf9-f41a8f5c735f\",\n \"resourceCustomizationUuid\":\"a7baba5d-6ac3-42b5-b47d-070841303ab1\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n }\n ],\n \"requestInputs\":{\n \"sdwanconnectivity0_name\":\"CMCCVPN\",\n \"sdwanconnectivity0_topology\":\"hub-spoke\"\n }\n }\n }\n}","relationship-list":{"relationship":[{"related-to":"sp-partner","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/business/sp-partners/sp-partner/de888731-eac8-454c-bbb2-927a85ba2d1c","relationship-data":[{"relationship-key":"sp-partner.sp-partner-id","relationship-value":"de888731-eac8-454c-bbb2-927a85ba2d1c"}],"related-to-property":[{"property-key":"sp-partner.sp-partner-id","property-value":"de888731-eac8-454c-bbb2-927a85ba2d1c"}]}]}},{"service-instance-id":"fd0b9f0a-0d5c-4f69-a3dc-fb9cabde9db8","service-instance-name":"DcXichengQuBeijing","service-type":"E2E Service","service-role":"E2E Service","model-invariant-id":"499e5e60-c8b2-4ea6-8c4e-7739420673a9","model-version-id":"8ec97da1-1e0a-4198-9c9a-3da2c60d7974","resource-version":"1537779392307","selflink":"restconf/config/GENERIC-RESOURCE-API:services/service/289b87a5-72fe-4197-a307-6929c3831f82/service-data/service-topology/","input-parameters":"{\n \"service\":{\n \"name\":\"DcXichengQuBeijing\",\n \"description\":\"SiteService\",\n \"serviceInvariantUuid\":\"499e5e60-c8b2-4ea6-8c4e-7739420673a9\",\n \"serviceUuid\":\"8ec97da1-1e0a-4198-9c9a-3da2c60d7974\",\n \"globalSubscriberId\":\"demo\",\n \"serviceType\":\"ccvpn\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n {\n \"resourceName\":\"SiteVF\",\n \"resourceInvariantUuid\":\"0c0e1cbe-6e01-4f9e-8c45-a9700ebc14df\",\n \"resourceUuid\":\"4ad2d390-5c51-45f5-9710-b467a4ec7a73\",\n \"resourceCustomizationUuid\":\"66590e07-0777-415c-af44-36347cf3ddd3\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"mpls\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"205456e7-3dc0-40c4-8cb0-28e6c1877042\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"deviceVF\",\n \"resourceInvariantUuid\":\"c726490a-0ce2-4bc7-abea-dade66bfb13d\",\n \"resourceUuid\":\"0e2de9d8-d76b-4134-b5f1-41e79056adbe\",\n \"resourceCustomizationUuid\":\"5bc1373e-9a36-4a00-8c62-784e0bc417ad\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sdwanvpnattachmentVF\",\n \"resourceInvariantUuid\":\"f714feec-1aef-4890-abba-f8f3a906935f\",\n \"resourceUuid\":\"709919b7-75fd-4e49-8398-67853323ff55\",\n \"resourceCustomizationUuid\":\"debd988f-fe04-4940-a5cb-37f61d84eab4\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"internet\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"64b8e8ba-62b9-4db6-b420-1ca7067d63e0\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sotnvpnattachmentvF\",\n \"resourceInvariantUuid\":\"97c4a3c6-2943-41af-8717-2f3183f944be\",\n \"resourceUuid\":\"44b777ee-9793-465d-8053-d8e86d2e2362\",\n \"resourceCustomizationUuid\":\"37aeb073-c75d-4cf6-a7fa-a1af862ef58a\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"SPPartnerVF\",\n \"resourceInvariantUuid\":\"072f9238-15b0-4bc5-a5f5-f18548739470\",\n \"resourceUuid\":\"81b9430b-8abe-45d6-8bf9-f41a8f5c735f\",\n \"resourceCustomizationUuid\":\"cd0b4b9c-66c6-49c5-b346-7580e4b6c394\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n }\n ],\n \"requestInputs\":{\n \"devicevf_device_class\":\"PNF\",\n \"devicevf_device_esn\":\"2102351BTJ10HB000075\",\n \"devicevf_device_name\":\"50.47\",\n \"devicevf_device_systemIp\":\"192.168.1.47\",\n \"devicevf_device_type\":\"AR161EW\",\n \"devicevf_device_vendor\":\"huawei\",\n \"devicevf_device_version\":\"1.0\",\n \"internet_sitewanport_description\":\"internet\",\n \"internet_sitewanport_deviceName\":\"50.47\",\n \"internet_sitewanport_inputBandwidth\":\"100\",\n \"internet_sitewanport_ipAddress\":\"100.2.30.9\",\n \"internet_sitewanport_name\":\"internet\",\n \"internet_sitewanport_outputBandwidth\":\"100\",\n \"internet_sitewanport_portNumber\":\"0/0/2\",\n \"internet_sitewanport_portType\":\"GE\",\n \"internet_sitewanport_providerIpAddress\":\"100.2.30.10\",\n \"internet_sitewanport_transportNetworkName\":\"internet\",\n \"mpls_sitewanport_description\":\"mpls\",\n \"mpls_sitewanport_deviceName\":\"50.47\",\n \"mpls_sitewanport_inputBandwidth\":\"100\",\n \"mpls_sitewanport_ipAddress\":\"10.2.30.7\",\n \"mpls_sitewanport_name\":\"mpls\",\n \"mpls_sitewanport_outputBandwidth\":\"100\",\n \"mpls_sitewanport_portNumber\":\"0/0/1\",\n \"mpls_sitewanport_portType\":\"GE\",\n \"mpls_sitewanport_providerIpAddress\":\"10.2.30.8\",\n \"mpls_sitewanport_transportNetworkName\":\"internet\",\n \"sdwanvpnattachmentvf_sdwancondition_role\":\"spoke\",\n \"sdwanvpnattachmentvf_sdwancondition_sdwanVpnName\":\"CMCCVPN\",\n \"sitevf_site_address\":\"beijing beiqing road\",\n \"sitevf_site_controlPoint\":\"CMCC_VCPE\",\n \"sitevf_site_description\":\"CMCC_CPE\",\n \"sitevf_site_emails\":\"\",\n \"sitevf_site_latitude\":\"\",\n \"sitevf_site_longitude\":\"\",\n \"sitevf_site_name\":\"CMCC_CPE\",\n \"sitevf_site_postcode\":\"100095\",\n \"sitevf_site_role\":\"sd-wan-edge\",\n \"sitevf_site_type\":\"single-gateway\",\n \"sotnvpnattachmentvf_sotncondition_clientSignal\":\"\",\n \"sotnvpnattachmentvf_sotncondition_cVLAN\":\"\",\n \"sotnvpnattachmentvf_sotncondition_sotnVpnName\":\"SOTN L2\"\n }\n }\n }\n}","relationship-list":{"relationship":[{"related-to":"sp-partner","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/business/sp-partners/sp-partner/289b87a5-72fe-4197-a307-6929c3831f82","relationship-data":[{"relationship-key":"sp-partner.sp-partner-id","relationship-value":"289b87a5-72fe-4197-a307-6929c3831f82"}],"related-to-property":[{"property-key":"sp-partner.sp-partner-id","property-value":"289b87a5-72fe-4197-a307-6929c3831f82"}]}]}},{"service-instance-id":"2d55a540-f6d3-4108-9bb4-290574b87a6c","service-instance-name":"siteLondon","service-type":"E2E Service","service-role":"E2E Service","model-invariant-id":"499e5e60-c8b2-4ea6-8c4e-7739420673a9","model-version-id":"8ec97da1-1e0a-4198-9c9a-3da2c60d7974","resource-version":"1537770265132","input-parameters":"{\n \"service\":{\n \"name\":\"siteLondon\",\n \"description\":\"SiteService\",\n \"serviceInvariantUuid\":\"499e5e60-c8b2-4ea6-8c4e-7739420673a9\",\n \"serviceUuid\":\"8ec97da1-1e0a-4198-9c9a-3da2c60d7974\",\n \"globalSubscriberId\":\"demo\",\n \"serviceType\":\"ccvpn\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n {\n \"resourceName\":\"SiteVF\",\n \"resourceInvariantUuid\":\"0c0e1cbe-6e01-4f9e-8c45-a9700ebc14df\",\n \"resourceUuid\":\"4ad2d390-5c51-45f5-9710-b467a4ec7a73\",\n \"resourceCustomizationUuid\":\"66590e07-0777-415c-af44-36347cf3ddd3\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"mpls\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"205456e7-3dc0-40c4-8cb0-28e6c1877042\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"deviceVF\",\n \"resourceInvariantUuid\":\"c726490a-0ce2-4bc7-abea-dade66bfb13d\",\n \"resourceUuid\":\"0e2de9d8-d76b-4134-b5f1-41e79056adbe\",\n \"resourceCustomizationUuid\":\"5bc1373e-9a36-4a00-8c62-784e0bc417ad\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sdwanvpnattachmentVF\",\n \"resourceInvariantUuid\":\"f714feec-1aef-4890-abba-f8f3a906935f\",\n \"resourceUuid\":\"709919b7-75fd-4e49-8398-67853323ff55\",\n \"resourceCustomizationUuid\":\"debd988f-fe04-4940-a5cb-37f61d84eab4\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"internet\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"64b8e8ba-62b9-4db6-b420-1ca7067d63e0\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sotnvpnattachmentvF\",\n \"resourceInvariantUuid\":\"97c4a3c6-2943-41af-8717-2f3183f944be\",\n \"resourceUuid\":\"44b777ee-9793-465d-8053-d8e86d2e2362\",\n \"resourceCustomizationUuid\":\"37aeb073-c75d-4cf6-a7fa-a1af862ef58a\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"SPPartnerVF\",\n \"resourceInvariantUuid\":\"072f9238-15b0-4bc5-a5f5-f18548739470\",\n \"resourceUuid\":\"81b9430b-8abe-45d6-8bf9-f41a8f5c735f\",\n \"resourceCustomizationUuid\":\"cd0b4b9c-66c6-49c5-b346-7580e4b6c394\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n }\n ],\n \"requestInputs\":{\n \"devicevf_device_class\":\"PNF\",\n \"devicevf_device_esn\":\"2102351BTJ10HB000075\",\n \"devicevf_device_name\":\"50.47\",\n \"devicevf_device_systemIp\":\"192.168.1.47\",\n \"devicevf_device_type\":\"AR161EW\",\n \"devicevf_device_vendor\":\"huawei\",\n \"devicevf_device_version\":\"1.0\",\n \"internet_sitewanport_description\":\"internet\",\n \"internet_sitewanport_deviceName\":\"50.47\",\n \"internet_sitewanport_inputBandwidth\":\"100\",\n \"internet_sitewanport_ipAddress\":\"100.2.30.9\",\n \"internet_sitewanport_name\":\"internet\",\n \"internet_sitewanport_outputBandwidth\":\"100\",\n \"internet_sitewanport_portNumber\":\"0/0/2\",\n \"internet_sitewanport_portType\":\"GE\",\n \"internet_sitewanport_providerIpAddress\":\"100.2.30.10\",\n \"internet_sitewanport_transportNetworkName\":\"internet\",\n \"mpls_sitewanport_description\":\"mpls\",\n \"mpls_sitewanport_deviceName\":\"50.47\",\n \"mpls_sitewanport_inputBandwidth\":\"100\",\n \"mpls_sitewanport_ipAddress\":\"10.2.30.7\",\n \"mpls_sitewanport_name\":\"mpls\",\n \"mpls_sitewanport_outputBandwidth\":\"100\",\n \"mpls_sitewanport_portNumber\":\"0/0/1\",\n \"mpls_sitewanport_portType\":\"GE\",\n \"mpls_sitewanport_providerIpAddress\":\"10.2.30.8\",\n \"mpls_sitewanport_transportNetworkName\":\"internet\",\n \"sdwanvpnattachmentvf_sdwancondition_role\":\"spoke\",\n \"sdwanvpnattachmentvf_sdwancondition_sdwanVpnName\":\"CMCCVPN\",\n \"sitevf_site_address\":\"beijing beiqing road\",\n \"sitevf_site_controlPoint\":\"CMCC_VCPE\",\n \"sitevf_site_description\":\"CMCC_CPE\",\n \"sitevf_site_emails\":\"\",\n \"sitevf_site_latitude\":\"\",\n \"sitevf_site_longitude\":\"\",\n \"sitevf_site_name\":\"CMCC_CPE\",\n \"sitevf_site_postcode\":\"100095\",\n \"sitevf_site_role\":\"sd-wan-edge\",\n \"sitevf_site_type\":\"single-gateway\",\n \"sotnvpnattachmentvf_sotncondition_clientSignal\":\"\",\n \"sotnvpnattachmentvf_sotncondition_cVLAN\":\"\",\n \"sotnvpnattachmentvf_sotncondition_sotnVpnName\":\"SOTN L2\"\n }\n }\n }\n}","relationship-list":{"relationship":[{"related-to":"wan-port-config","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/network/wan-port-configs/wan-port-config/52ae7944-12b3-4766-848e-e43088947af9","relationship-data":[{"relationship-key":"wan-port-config.wan-port-config-id","relationship-value":"52ae7944-12b3-4766-848e-e43088947af9"}],"related-to-property":[{"property-key":"wan-port-config.wan-port-config-name","property-value":"intenet"}]},{"related-to":"site-resource","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/network/site-resources/site-resource/a22193fc-d1b5-41a7-9033-14339838b0c5","relationship-data":[{"relationship-key":"site-resource.site-resource-id","relationship-value":"a22193fc-d1b5-41a7-9033-14339838b0c5"}],"related-to-property":[{"property-key":"site-resource.site-resource-name","property-value":"travelSite"}]},{"related-to":"wan-port-config","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/network/wan-port-configs/wan-port-config/9fc7c231-1b71-49e6-8390-e92b707e7615","relationship-data":[{"relationship-key":"wan-port-config.wan-port-config-id","relationship-value":"9fc7c231-1b71-49e6-8390-e92b707e7615"}],"related-to-property":[{"property-key":"wan-port-config.wan-port-config-name","property-value":"mpls"}]},{"related-to":"device","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/network/devices/device/f0cf1e06-7be8-4602-83cb-60d87d8e7ef3","relationship-data":[{"relationship-key":"device.device-id","relationship-value":"f0cf1e06-7be8-4602-83cb-60d87d8e7ef3"}],"related-to-property":[{"property-key":"device.device-name","property-value":"CentSpokeDevice"}]},{"related-to":"sp-partner","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/business/sp-partners/sp-partner/3addd6b9-b05f-4841-881c-1ce2c753513f","relationship-data":[{"relationship-key":"sp-partner.sp-partner-id","relationship-value":"3addd6b9-b05f-4841-881c-1ce2c753513f"}],"related-to-property":[{"property-key":"sp-partner.sp-partner-id","property-value":"3addd6b9-b05f-4841-881c-1ce2c753513f"}]},{"related-to":"allotted-resource","relationship-label":"org.onap.relationships.inventory.Uses","related-link":"/aai/v13/business/customers/customer/demo/service-subscriptions/service-subscription/ccvpn/service-instances/service-instance/0ea94797-3772-40ff-b6fb-69f06c533be3/allotted-resources/allotted-resource/f1523ca9-6b56-482e-b3a4-a2f8dcbfba12","relationship-data":[{"relationship-key":"customer.global-customer-id","relationship-value":"demo"},{"relationship-key":"service-subscription.service-type","relationship-value":"ccvpn"},{"relationship-key":"service-instance.service-instance-id","relationship-value":"0ea94797-3772-40ff-b6fb-69f06c533be3"},{"relationship-key":"allotted-resource.id","relationship-value":"f1523ca9-6b56-482e-b3a4-a2f8dcbfba12"}],"related-to-property":[{"property-key":"allotted-resource.description","property-value":"sdwan-attachment"},{"property-key":"allotted-resource.allotted-resource-name","property-value":"sdwan ar"}]},{"related-to":"allotted-resource","relationship-label":"org.onap.relationships.inventory.Uses","related-link":"/aai/v13/business/customers/customer/demo/service-subscriptions/service-subscription/ccvpn/service-instances/service-instance/8e07f832-3f50-4657-9b44-010049e8b488/allotted-resources/allotted-resource/d1a6b573-0595-4468-bab9-02465c295618","relationship-data":[{"relationship-key":"customer.global-customer-id","relationship-value":"demo"},{"relationship-key":"service-subscription.service-type","relationship-value":"ccvpn"},{"relationship-key":"service-instance.service-instance-id","relationship-value":"8e07f832-3f50-4657-9b44-010049e8b488"},{"relationship-key":"allotted-resource.id","relationship-value":"d1a6b573-0595-4468-bab9-02465c295618"}],"related-to-property":[{"property-key":"allotted-resource.description","property-value":"sotn attachment"},{"property-key":"allotted-resource.allotted-resource-name","property-value":"sotn ar"}]}]}}]}
\ No newline at end of file diff --git a/usecaseui-portal/src/app/mock/json/instanceTableData4.json b/usecaseui-portal/src/app/mock/json/instanceTableData4.json new file mode 100644 index 00000000..d952af97 --- /dev/null +++ b/usecaseui-portal/src/app/mock/json/instanceTableData4.json @@ -0,0 +1,656 @@ +{ + "service-instance": [ + { + "service-instance-id": "8e07f832-3f50-4657-9b44-010049e8b488", + "service-instance-name": "SOTNVPNInfra", + "service-type": "E2E Service", + "service-role": "E2E Service", + "model-invariant-id": "bafa365f-4056-4ad3-a039-d6b3e3e0fd35", + "model-version-id": "fdbb8ddd-3325-4840-a156-9ad601b9366c", + "resource-version": "1537769390960", + "input-parameters": "{\n \"service\":{\n \"name\":\"SOTNVPNInfra\",\n \"description\":\"SOTNVPNInfra\",\n \"serviceInvariantUuid\":\"bafa365f-4056-4ad3-a039-d6b3e3e0fd35\",\n \"serviceUuid\":\"fdbb8ddd-3325-4840-a156-9ad601b9366c\",\n \"globalSubscriberId\":\"demo\",\n \"serviceType\":\"ccvpn\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n {\n \"resourceName\":\"SOTNConnectivity 0\",\n \"resourceInvariantUuid\":\"1b9c677d-fddf-4b70-938b-925a7fa57d43\",\n \"resourceUuid\":\"218df3c3-50dd-4c26-9e36-4771387bb771\",\n \"resourceCustomizationUuid\":\"b44071c8-04fd-4d6b-b6af-772cbfaa1129\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"SPPartnerVF 0\",\n \"resourceInvariantUuid\":\"072f9238-15b0-4bc5-a5f5-f18548739470\",\n \"resourceUuid\":\"81b9430b-8abe-45d6-8bf9-f41a8f5c735f\",\n \"resourceCustomizationUuid\":\"c3612284-6c67-4d8c-8b41-b699cc90e76d\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n }\n ],\n \"requestInputs\":{\n \"sotnconnectivity0_eir\":\"1000\",\n \"sotnconnectivity0_cir\":\"1000\",\n \"sotnconnectivity0_endTime\":\"2018-8-8 10:00\",\n \"sotnconnectivity0_ebs\":\"1000\",\n \"sotnconnectivity0_startTime\":\"2018-8-1 10:00\",\n \"sotnconnectivity0_dualLink\":\"true\",\n \"sotnconnectivity0_reroute\":\"false\",\n \"sotnconnectivity0_cbs\":\"1000\",\n \"sotnconnectivity0_name\":\"SOTN L2\",\n \"sotnconnectivity0_SLS\":\"\",\n \"sotnconnectivity0_description\":\"\",\n \"sotnconnectivity0_couplingFlag\":\"\",\n \"sotnconnectivity0_colorAware\":\"\",\n \"sotnconnectivity0_COS\":\"standard\"\n }\n }\n }\n}", + "relationship-list": { + "relationship": [ + { + "related-to": "connectivity", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/network/connectivities/connectivity/2e359c75-2af3-4fea-9550-a893edeab8b5", + "relationship-data": [ + { + "relationship-key": "connectivity.connectivity-id", + "relationship-value": "2e359c75-2af3-4fea-9550-a893edeab8b5" + } + ], + "related-to-property": [ + { + "property-key": "connectivity.etht-svc-name", + "property-value": "vpn1" + } + ] + }, + { + "related-to": "sp-partner", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/business/sp-partners/sp-partner/32cd906f-ee7a-4ecf-b1c3-2fce4d59f8c0", + "relationship-data": [ + { + "relationship-key": "sp-partner.sp-partner-id", + "relationship-value": "32cd906f-ee7a-4ecf-b1c3-2fce4d59f8c0" + } + ], + "related-to-property": [ + { + "property-key": "sp-partner.sp-partner-id", + "property-value": "32cd906f-ee7a-4ecf-b1c3-2fce4d59f8c0" + } + ] + }, + { + "related-to": "allotted-resource", + "relationship-label": "org.onap.relationships.inventory.Uses", + "related-link": "/aai/v13/business/customers/customer/demo/service-subscriptions/service-subscription/ccvpn/service-instances/service-instance/2d55a540-f6d3-4108-9bb4-290574b87a6c/allotted-resources/allotted-resource/666085a7-132e-4a32-b9de-e58ecea3476a", + "relationship-data": [ + { + "relationship-key": "customer.global-customer-id", + "relationship-value": "demo" + }, + { + "relationship-key": "service-subscription.service-type", + "relationship-value": "ccvpn" + }, + { + "relationship-key": "service-instance.service-instance-id", + "relationship-value": "2d55a540-f6d3-4108-9bb4-290574b87a6c" + }, + { + "relationship-key": "allotted-resource.id", + "relationship-value": "666085a7-132e-4a32-b9de-e58ecea3476a" + } + ], + "related-to-property": [ + { + "property-key": "allotted-resource.description", + "property-value": "sotn-attachment" + }, + { + "property-key": "allotted-resource.allotted-resource-name", + "property-value": "sotn ar" + } + ] + }, + { + "related-to": "allotted-resource", + "relationship-label": "org.onap.relationships.inventory.Uses", + "related-link": "/aai/v13/business/customers/customer/demo/service-subscriptions/service-subscription/ccvpn/service-instances/service-instance/a6d69c62-75b5-4f04-8cd7-9ca5dfcc4205/allotted-resources/allotted-resource/562adc96-7fbe-435e-bd6d-ff4b8a0a7920", + "relationship-data": [ + { + "relationship-key": "customer.global-customer-id", + "relationship-value": "demo" + }, + { + "relationship-key": "service-subscription.service-type", + "relationship-value": "ccvpn" + }, + { + "relationship-key": "service-instance.service-instance-id", + "relationship-value": "a6d69c62-75b5-4f04-8cd7-9ca5dfcc4205" + }, + { + "relationship-key": "allotted-resource.id", + "relationship-value": "562adc96-7fbe-435e-bd6d-ff4b8a0a7920" + } + ], + "related-to-property": [ + { + "property-key": "allotted-resource.description", + "property-value": "sotn-attachment" + }, + { + "property-key": "allotted-resource.allotted-resource-name", + "property-value": "sotn ar" + } + ] + } + ] + } + }, + { + "service-instance-id": "a6d69c62-75b5-4f04-8cd7-9ca5dfcc4205", + "service-instance-name": "DcLondon", + "service-type": "E2E Service", + "service-role": "E2E Service", + "model-invariant-id": "499e5e60-c8b2-4ea6-8c4e-7739420673a9", + "model-version-id": "8ec97da1-1e0a-4198-9c9a-3da2c60d7974", + "resource-version": "1537866016457", + "input-parameters": "{\n \"service\":{\n \"name\":\"DcLondon\",\n \"description\":\"SiteService\",\n \"serviceInvariantUuid\":\"499e5e60-c8b2-4ea6-8c4e-7739420673a9\",\n \"serviceUuid\":\"8ec97da1-1e0a-4198-9c9a-3da2c60d7974\",\n \"globalSubscriberId\":\"demo\",\n \"serviceType\":\"ccvpn\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n {\n \"resourceName\":\"SiteVF\",\n \"resourceInvariantUuid\":\"0c0e1cbe-6e01-4f9e-8c45-a9700ebc14df\",\n \"resourceUuid\":\"4ad2d390-5c51-45f5-9710-b467a4ec7a73\",\n \"resourceCustomizationUuid\":\"66590e07-0777-415c-af44-36347cf3ddd3\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"mpls\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"205456e7-3dc0-40c4-8cb0-28e6c1877042\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"deviceVF\",\n \"resourceInvariantUuid\":\"c726490a-0ce2-4bc7-abea-dade66bfb13d\",\n \"resourceUuid\":\"0e2de9d8-d76b-4134-b5f1-41e79056adbe\",\n \"resourceCustomizationUuid\":\"5bc1373e-9a36-4a00-8c62-784e0bc417ad\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sdwanvpnattachmentVF\",\n \"resourceInvariantUuid\":\"f714feec-1aef-4890-abba-f8f3a906935f\",\n \"resourceUuid\":\"709919b7-75fd-4e49-8398-67853323ff55\",\n \"resourceCustomizationUuid\":\"debd988f-fe04-4940-a5cb-37f61d84eab4\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"internet\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"64b8e8ba-62b9-4db6-b420-1ca7067d63e0\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sotnvpnattachmentvF\",\n \"resourceInvariantUuid\":\"97c4a3c6-2943-41af-8717-2f3183f944be\",\n \"resourceUuid\":\"44b777ee-9793-465d-8053-d8e86d2e2362\",\n \"resourceCustomizationUuid\":\"37aeb073-c75d-4cf6-a7fa-a1af862ef58a\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"SPPartnerVF\",\n \"resourceInvariantUuid\":\"072f9238-15b0-4bc5-a5f5-f18548739470\",\n \"resourceUuid\":\"81b9430b-8abe-45d6-8bf9-f41a8f5c735f\",\n \"resourceCustomizationUuid\":\"cd0b4b9c-66c6-49c5-b346-7580e4b6c394\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n }\n ],\n \"requestInputs\":{\n \"devicevf_device_class\":\"PNF\",\n \"devicevf_device_esn\":\"2102351BTJ10HB000075\",\n \"devicevf_device_name\":\"50.47\",\n \"devicevf_device_systemIp\":\"192.168.1.47\",\n \"devicevf_device_type\":\"AR161EW\",\n \"devicevf_device_vendor\":\"huawei\",\n \"devicevf_device_version\":\"1.0\",\n \"internet_sitewanport_description\":\"internet\",\n \"internet_sitewanport_deviceName\":\"50.47\",\n \"internet_sitewanport_inputBandwidth\":\"100\",\n \"internet_sitewanport_ipAddress\":\"100.2.30.9\",\n \"internet_sitewanport_name\":\"internet\",\n \"internet_sitewanport_outputBandwidth\":\"100\",\n \"internet_sitewanport_portNumber\":\"0/0/2\",\n \"internet_sitewanport_portType\":\"GE\",\n \"internet_sitewanport_providerIpAddress\":\"100.2.30.10\",\n \"internet_sitewanport_transportNetworkName\":\"internet\",\n \"mpls_sitewanport_description\":\"mpls\",\n \"mpls_sitewanport_deviceName\":\"50.47\",\n \"mpls_sitewanport_inputBandwidth\":\"100\",\n \"mpls_sitewanport_ipAddress\":\"10.2.30.7\",\n \"mpls_sitewanport_name\":\"mpls\",\n \"mpls_sitewanport_outputBandwidth\":\"100\",\n \"mpls_sitewanport_portNumber\":\"0/0/1\",\n \"mpls_sitewanport_portType\":\"GE\",\n \"mpls_sitewanport_providerIpAddress\":\"10.2.30.8\",\n \"mpls_sitewanport_transportNetworkName\":\"internet\",\n \"sdwanvpnattachmentvf_sdwancondition_role\":\"spoke\",\n \"sdwanvpnattachmentvf_sdwancondition_sdwanVpnName\":\"SDWANVPNInfra\",\n \"sitevf_site_address\":\"University College London,Gower Street,London\",\n \"sitevf_site_controlPoint\":\"VDF_VCPE\",\n \"sitevf_site_description\":\"VDF_vGW\",\n \"sitevf_site_emails\":\"\",\n \"sitevf_site_latitude\":\"\",\n \"sitevf_site_longitude\":\"\",\n \"sitevf_site_name\":\"DcLondon\",\n \"sitevf_site_postcode\":\"N200095\",\n \"sitevf_site_role\":\"sd-wan-edge\",\n \"sitevf_site_type\":\"single-gateway\",\n \"sotnvpnattachmentvf_sotncondition_clientSignal\":\"\",\n \"sotnvpnattachmentvf_sotncondition_cVLAN\":\"\",\n \"sotnvpnattachmentvf_sotncondition_sotnVpnName\":\"SOTN L2\"\n }\n }\n }\n}", + "relationship-list": { + "relationship": [ + { + "related-to": "device", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/network/devices/device/2cacf49c-7c09-4155-b18a-4468dce34083", + "relationship-data": [ + { + "relationship-key": "device.device-id", + "relationship-value": "2cacf49c-7c09-4155-b18a-4468dce34083" + } + ], + "related-to-property": [ + { + "property-key": "device.device-name", + "property-value": "TravelDevice" + } + ] + }, + { + "related-to": "site-resource", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/network/site-resources/site-resource/f288d54e-be09-46d3-bb1f-38729ec74bb5", + "relationship-data": [ + { + "relationship-key": "site-resource.site-resource-id", + "relationship-value": "f288d54e-be09-46d3-bb1f-38729ec74bb5" + } + ], + "related-to-property": [ + { + "property-key": "site-resource.site-resource-name", + "property-value": "travelSite" + } + ] + }, + { + "related-to": "wan-port-config", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/network/wan-port-configs/wan-port-config/99866f05-9749-456e-8909-61eebf08373e", + "relationship-data": [ + { + "relationship-key": "wan-port-config.wan-port-config-id", + "relationship-value": "99866f05-9749-456e-8909-61eebf08373e" + } + ], + "related-to-property": [ + { + "property-key": "wan-port-config.wan-port-config-name", + "property-value": "intenet" + } + ] + }, + { + "related-to": "wan-port-config", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/network/wan-port-configs/wan-port-config/afab2cc0-28c9-4fd3-bf03-01c8034f8191", + "relationship-data": [ + { + "relationship-key": "wan-port-config.wan-port-config-id", + "relationship-value": "afab2cc0-28c9-4fd3-bf03-01c8034f8191" + } + ], + "related-to-property": [ + { + "property-key": "wan-port-config.wan-port-config-name", + "property-value": "mpls" + } + ] + }, + { + "related-to": "sp-partner", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/business/sp-partners/sp-partner/167a285b-0875-41ff-8ed1-1178db6f3133", + "relationship-data": [ + { + "relationship-key": "sp-partner.sp-partner-id", + "relationship-value": "167a285b-0875-41ff-8ed1-1178db6f3133" + } + ], + "related-to-property": [ + { + "property-key": "sp-partner.sp-partner-id", + "property-value": "167a285b-0875-41ff-8ed1-1178db6f3133" + } + ] + }, + { + "related-to": "allotted-resource", + "relationship-label": "org.onap.relationships.inventory.Uses", + "related-link": "/aai/v13/business/customers/customer/demo/service-subscriptions/service-subscription/ccvpn/service-instances/service-instance/0ea94797-3772-40ff-b6fb-69f06c533be3/allotted-resources/allotted-resource/d519761d-c89c-4164-86c7-8f74952eea65", + "relationship-data": [ + { + "relationship-key": "customer.global-customer-id", + "relationship-value": "demo" + }, + { + "relationship-key": "service-subscription.service-type", + "relationship-value": "ccvpn" + }, + { + "relationship-key": "service-instance.service-instance-id", + "relationship-value": "0ea94797-3772-40ff-b6fb-69f06c533be3" + }, + { + "relationship-key": "allotted-resource.id", + "relationship-value": "d519761d-c89c-4164-86c7-8f74952eea65" + } + ], + "related-to-property": [ + { + "property-key": "allotted-resource.description", + "property-value": "sdwan-attachment" + }, + { + "property-key": "allotted-resource.allotted-resource-name", + "property-value": "sdwan ar" + } + ] + }, + { + "related-to": "allotted-resource", + "relationship-label": "org.onap.relationships.inventory.Uses", + "related-link": "/aai/v13/business/customers/customer/demo/service-subscriptions/service-subscription/ccvpn/service-instances/service-instance/8e07f832-3f50-4657-9b44-010049e8b488/allotted-resources/allotted-resource/65f21c28-8b19-4769-8f08-174e2afa5488", + "relationship-data": [ + { + "relationship-key": "customer.global-customer-id", + "relationship-value": "demo" + }, + { + "relationship-key": "service-subscription.service-type", + "relationship-value": "ccvpn" + }, + { + "relationship-key": "service-instance.service-instance-id", + "relationship-value": "8e07f832-3f50-4657-9b44-010049e8b488" + }, + { + "relationship-key": "allotted-resource.id", + "relationship-value": "65f21c28-8b19-4769-8f08-174e2afa5488" + } + ], + "related-to-property": [ + { + "property-key": "allotted-resource.description", + "property-value": "sotn attachment" + }, + { + "property-key": "allotted-resource.allotted-resource-name", + "property-value": "ston ar" + } + ] + } + ] + } + }, + { + "service-instance-id": "0ea94797-3772-40ff-b6fb-69f06c533be3", + "service-instance-name": "SDWANVPNInfra", + "service-type": "E2E Service", + "service-role": "E2E Service", + "model-invariant-id": "e2b217d6-7cac-4156-9f44-f9b010b350a6", + "model-version-id": "20d9e7dc-f030-4230-af79-ba0bde7cbe2e", + "resource-version": "1537864894560", + "input-parameters": "{\n \"service\":{\n \"name\":\"SDWANVPNInfra\",\n \"description\":\"SDWANVPNInfra\",\n \"serviceInvariantUuid\":\"e2b217d6-7cac-4156-9f44-f9b010b350a6\",\n \"serviceUuid\":\"20d9e7dc-f030-4230-af79-ba0bde7cbe2e\",\n \"globalSubscriberId\":\"demo\",\n \"serviceType\":\"ccvpn\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n {\n \"resourceName\":\"SDWANConnectivity 0\",\n \"resourceInvariantUuid\":\"f99a9a23-c88e-44ff-a4dc-22b88675d278\",\n \"resourceUuid\":\"7baa7742-3a13-4288-8330-868015adc340\",\n \"resourceCustomizationUuid\":\"94ec574b-2306-4cbd-8214-09662b040f73\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"SPPartnerVF 0\",\n \"resourceInvariantUuid\":\"072f9238-15b0-4bc5-a5f5-f18548739470\",\n \"resourceUuid\":\"81b9430b-8abe-45d6-8bf9-f41a8f5c735f\",\n \"resourceCustomizationUuid\":\"a7baba5d-6ac3-42b5-b47d-070841303ab1\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n }\n ],\n \"requestInputs\":{\n \"sdwanconnectivity0_name\":\"SDWANVPNInfra\",\n \"sdwanconnectivity0_topology\":\"hub-spoke\"\n }\n }\n }\n}", + "relationship-list": { + "relationship": [ + { + "related-to": "sdwan-vpn", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/network/sdwan-vpns/sdwan-vpn/0d8707cd-9d27-4503-a0b0-e9b1b1a83b1e", + "relationship-data": [ + { + "relationship-key": "sdwan-vpn.sdwan-vpn-id", + "relationship-value": "0d8707cd-9d27-4503-a0b0-e9b1b1a83b1e" + } + ], + "related-to-property": [ + { + "property-key": "sdwan-vpn.sdwan-vpn-name" + } + ] + }, + { + "related-to": "sp-partner", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/business/sp-partners/sp-partner/15e88f8e-473f-4d88-92f8-6739a42baa2g", + "relationship-data": [ + { + "relationship-key": "sp-partner.sp-partner-id", + "relationship-value": "15e88f8e-473f-4d88-92f8-6739a42baa2g" + } + ], + "related-to-property": [ + { + "property-key": "sp-partner.sp-partner-id", + "property-value": "15e88f8e-473f-4d88-92f8-6739a42baa2g" + } + ] + }, + { + "related-to": "allotted-resource", + "relationship-label": "org.onap.relationships.inventory.Uses", + "related-link": "/aai/v13/business/customers/customer/demo/service-subscriptions/service-subscription/ccvpn/service-instances/service-instance/2d55a540-f6d3-4108-9bb4-290574b87a6c/allotted-resources/allotted-resource/c797bba9-eb90-4825-b1c2-adbd1a31101f", + "relationship-data": [ + { + "relationship-key": "customer.global-customer-id", + "relationship-value": "demo" + }, + { + "relationship-key": "service-subscription.service-type", + "relationship-value": "ccvpn" + }, + { + "relationship-key": "service-instance.service-instance-id", + "relationship-value": "2d55a540-f6d3-4108-9bb4-290574b87a6c" + }, + { + "relationship-key": "allotted-resource.id", + "relationship-value": "c797bba9-eb90-4825-b1c2-adbd1a31101f" + } + ], + "related-to-property": [ + { + "property-key": "allotted-resource.description", + "property-value": "sdwan-attachment" + }, + { + "property-key": "allotted-resource.allotted-resource-name", + "property-value": "sdwan ar" + } + ] + }, + { + "related-to": "allotted-resource", + "relationship-label": "org.onap.relationships.inventory.Uses", + "related-link": "/aai/v13/business/customers/customer/demo/service-subscriptions/service-subscription/ccvpn/service-instances/service-instance/a6d69c62-75b5-4f04-8cd7-9ca5dfcc4205/allotted-resources/allotted-resource/9a7329e6-8961-4008-9dbe-adeacfcd20da", + "relationship-data": [ + { + "relationship-key": "customer.global-customer-id", + "relationship-value": "demo" + }, + { + "relationship-key": "service-subscription.service-type", + "relationship-value": "ccvpn" + }, + { + "relationship-key": "service-instance.service-instance-id", + "relationship-value": "a6d69c62-75b5-4f04-8cd7-9ca5dfcc4205" + }, + { + "relationship-key": "allotted-resource.id", + "relationship-value": "9a7329e6-8961-4008-9dbe-adeacfcd20da" + } + ], + "related-to-property": [ + { + "property-key": "allotted-resource.description", + "property-value": "sdwan-attachment" + }, + { + "property-key": "allotted-resource.allotted-resource-name", + "property-value": "sdwan ar" + } + ] + } + ] + } + }, + { + "service-instance-id": "f08067b8-a07b-4c41-b750-5f9b35281e67", + "service-instance-name": "siteFangshanQu", + "service-type": "E2E Service", + "service-role": "E2E Service", + "model-invariant-id": "499e5e60-c8b2-4ea6-8c4e-7739420673a9", + "model-version-id": "8ec97da1-1e0a-4198-9c9a-3da2c60d7974", + "resource-version": "1537867265890", + "selflink": "restconf/config/GENERIC-RESOURCE-API:services/service/506b87a5-72fe-4197-a307-6929c3871ab2/service-data/service-topology/", + "input-parameters": "{\n \"service\":{\n \"name\":\"siteFangshanQu\",\n \"description\":\"SiteService\",\n \"serviceInvariantUuid\":\"499e5e60-c8b2-4ea6-8c4e-7739420673a9\",\n \"serviceUuid\":\"8ec97da1-1e0a-4198-9c9a-3da2c60d7974\",\n \"globalSubscriberId\":\"demo\",\n \"serviceType\":\"ccvpn\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n {\n \"resourceName\":\"SiteVF\",\n \"resourceInvariantUuid\":\"0c0e1cbe-6e01-4f9e-8c45-a9700ebc14df\",\n \"resourceUuid\":\"4ad2d390-5c51-45f5-9710-b467a4ec7a73\",\n \"resourceCustomizationUuid\":\"66590e07-0777-415c-af44-36347cf3ddd3\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"mpls\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"205456e7-3dc0-40c4-8cb0-28e6c1877042\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"deviceVF\",\n \"resourceInvariantUuid\":\"c726490a-0ce2-4bc7-abea-dade66bfb13d\",\n \"resourceUuid\":\"0e2de9d8-d76b-4134-b5f1-41e79056adbe\",\n \"resourceCustomizationUuid\":\"5bc1373e-9a36-4a00-8c62-784e0bc417ad\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sdwanvpnattachmentVF\",\n \"resourceInvariantUuid\":\"f714feec-1aef-4890-abba-f8f3a906935f\",\n \"resourceUuid\":\"709919b7-75fd-4e49-8398-67853323ff55\",\n \"resourceCustomizationUuid\":\"debd988f-fe04-4940-a5cb-37f61d84eab4\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"internet\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"64b8e8ba-62b9-4db6-b420-1ca7067d63e0\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sotnvpnattachmentvF\",\n \"resourceInvariantUuid\":\"97c4a3c6-2943-41af-8717-2f3183f944be\",\n \"resourceUuid\":\"44b777ee-9793-465d-8053-d8e86d2e2362\",\n \"resourceCustomizationUuid\":\"37aeb073-c75d-4cf6-a7fa-a1af862ef58a\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"SPPartnerVF\",\n \"resourceInvariantUuid\":\"072f9238-15b0-4bc5-a5f5-f18548739470\",\n \"resourceUuid\":\"81b9430b-8abe-45d6-8bf9-f41a8f5c735f\",\n \"resourceCustomizationUuid\":\"cd0b4b9c-66c6-49c5-b346-7580e4b6c394\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n }\n ],\n \"requestInputs\":{\n \"devicevf_device_class\":\"PNF\",\n \"devicevf_device_esn\":\"2102351BTJ10HB000075\",\n \"devicevf_device_name\":\"50.47\",\n \"devicevf_device_systemIp\":\"192.168.1.47\",\n \"devicevf_device_type\":\"AR161EW\",\n \"devicevf_device_vendor\":\"huawei\",\n \"devicevf_device_version\":\"1.0\",\n \"internet_sitewanport_description\":\"internet\",\n \"internet_sitewanport_deviceName\":\"50.47\",\n \"internet_sitewanport_inputBandwidth\":\"100\",\n \"internet_sitewanport_ipAddress\":\"100.2.30.9\",\n \"internet_sitewanport_name\":\"internet\",\n \"internet_sitewanport_outputBandwidth\":\"100\",\n \"internet_sitewanport_portNumber\":\"0/0/2\",\n \"internet_sitewanport_portType\":\"GE\",\n \"internet_sitewanport_providerIpAddress\":\"100.2.30.10\",\n \"internet_sitewanport_transportNetworkName\":\"internet\",\n \"mpls_sitewanport_description\":\"mpls\",\n \"mpls_sitewanport_deviceName\":\"50.47\",\n \"mpls_sitewanport_inputBandwidth\":\"100\",\n \"mpls_sitewanport_ipAddress\":\"10.2.30.7\",\n \"mpls_sitewanport_name\":\"mpls\",\n \"mpls_sitewanport_outputBandwidth\":\"100\",\n \"mpls_sitewanport_portNumber\":\"0/0/1\",\n \"mpls_sitewanport_portType\":\"GE\",\n \"mpls_sitewanport_providerIpAddress\":\"10.2.30.8\",\n \"mpls_sitewanport_transportNetworkName\":\"internet\",\n \"sdwanvpnattachmentvf_sdwancondition_role\":\"spoke\",\n \"sdwanvpnattachmentvf_sdwancondition_sdwanVpnName\":\"SDWANVPNInfra-2\",\n \"sitevf_site_address\":\"CMCC International Data Center,Hongkong\",\n \"sitevf_site_controlPoint\":\"CMCC_VCPE\",\n \"sitevf_site_description\":\"CMCC_vGW\",\n \"sitevf_site_emails\":\"\",\n \"sitevf_site_latitude\":\"\",\n \"sitevf_site_longitude\":\"\",\n \"sitevf_site_name\":\"siteFangshanQu\",\n \"sitevf_site_postcode\":\"999077\",\n \"sitevf_site_role\":\"sd-wan-edge\",\n \"sitevf_site_type\":\"single-gateway\",\n \"sotnvpnattachmentvf_sotncondition_clientSignal\":\"\",\n \"sotnvpnattachmentvf_sotncondition_cVLAN\":\"\",\n \"sotnvpnattachmentvf_sotncondition_sotnVpnName\":\"SOTN L2\"\n }\n }\n }\n}", + "relationship-list": { + "relationship": [ + { + "related-to": "sp-partner", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/business/sp-partners/sp-partner/506b87a5-72fe-4197-a307-6929c3871ab2", + "relationship-data": [ + { + "relationship-key": "sp-partner.sp-partner-id", + "relationship-value": "506b87a5-72fe-4197-a307-6929c3871ab2" + } + ], + "related-to-property": [ + { + "property-key": "sp-partner.sp-partner-id", + "property-value": "506b87a5-72fe-4197-a307-6929c3871ab2" + } + ] + } + ] + } + }, + { + "service-instance-id": "6a6478d1-f62f-439c-8f16-6038a44af8c3", + "service-instance-name": "SDWANVPNInfra-2", + "service-type": "E2E Service", + "service-role": "E2E Service", + "model-invariant-id": "e2b217d6-7cac-4156-9f44-f9b010b350a6", + "model-version-id": "20d9e7dc-f030-4230-af79-ba0bde7cbe2e", + "resource-version": "1537779569094", + "input-parameters": "{\n \"service\":{\n \"name\":\"SDWANVPNInfra-2\",\n \"description\":\"SDWANVPNInfra\",\n \"serviceInvariantUuid\":\"e2b217d6-7cac-4156-9f44-f9b010b350a6\",\n \"serviceUuid\":\"20d9e7dc-f030-4230-af79-ba0bde7cbe2e\",\n \"globalSubscriberId\":\"demo\",\n \"serviceType\":\"ccvpn\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n {\n \"resourceName\":\"SDWANConnectivity 0\",\n \"resourceInvariantUuid\":\"f99a9a23-c88e-44ff-a4dc-22b88675d278\",\n \"resourceUuid\":\"7baa7742-3a13-4288-8330-868015adc340\",\n \"resourceCustomizationUuid\":\"94ec574b-2306-4cbd-8214-09662b040f73\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"SPPartnerVF 0\",\n \"resourceInvariantUuid\":\"072f9238-15b0-4bc5-a5f5-f18548739470\",\n \"resourceUuid\":\"81b9430b-8abe-45d6-8bf9-f41a8f5c735f\",\n \"resourceCustomizationUuid\":\"a7baba5d-6ac3-42b5-b47d-070841303ab1\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n }\n ],\n \"requestInputs\":{\n \"sdwanconnectivity0_name\":\"CMCCVPN\",\n \"sdwanconnectivity0_topology\":\"hub-spoke\"\n }\n }\n }\n}", + "relationship-list": { + "relationship": [ + { + "related-to": "sp-partner", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/business/sp-partners/sp-partner/de888731-eac8-454c-bbb2-927a85ba2d1c", + "relationship-data": [ + { + "relationship-key": "sp-partner.sp-partner-id", + "relationship-value": "de888731-eac8-454c-bbb2-927a85ba2d1c" + } + ], + "related-to-property": [ + { + "property-key": "sp-partner.sp-partner-id", + "property-value": "de888731-eac8-454c-bbb2-927a85ba2d1c" + } + ] + } + ] + } + }, + { + "service-instance-id": "fd0b9f0a-0d5c-4f69-a3dc-fb9cabde9db8", + "service-instance-name": "DcXichengQuBeijing", + "service-type": "E2E Service", + "service-role": "E2E Service", + "model-invariant-id": "499e5e60-c8b2-4ea6-8c4e-7739420673a9", + "model-version-id": "8ec97da1-1e0a-4198-9c9a-3da2c60d7974", + "resource-version": "1537867379064", + "selflink": "restconf/config/GENERIC-RESOURCE-API:services/service/289b87a5-72fe-4197-a307-6929c3831f82/service-data/service-topology/", + "input-parameters": "{\n \"service\":{\n \"name\":\"DcXichengQuBeijing\",\n \"description\":\"SiteService\",\n \"serviceInvariantUuid\":\"499e5e60-c8b2-4ea6-8c4e-7739420673a9\",\n \"serviceUuid\":\"8ec97da1-1e0a-4198-9c9a-3da2c60d7974\",\n \"globalSubscriberId\":\"demo\",\n \"serviceType\":\"ccvpn\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n {\n \"resourceName\":\"SiteVF\",\n \"resourceInvariantUuid\":\"0c0e1cbe-6e01-4f9e-8c45-a9700ebc14df\",\n \"resourceUuid\":\"4ad2d390-5c51-45f5-9710-b467a4ec7a73\",\n \"resourceCustomizationUuid\":\"66590e07-0777-415c-af44-36347cf3ddd3\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"mpls\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"205456e7-3dc0-40c4-8cb0-28e6c1877042\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"deviceVF\",\n \"resourceInvariantUuid\":\"c726490a-0ce2-4bc7-abea-dade66bfb13d\",\n \"resourceUuid\":\"0e2de9d8-d76b-4134-b5f1-41e79056adbe\",\n \"resourceCustomizationUuid\":\"5bc1373e-9a36-4a00-8c62-784e0bc417ad\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sdwanvpnattachmentVF\",\n \"resourceInvariantUuid\":\"f714feec-1aef-4890-abba-f8f3a906935f\",\n \"resourceUuid\":\"709919b7-75fd-4e49-8398-67853323ff55\",\n \"resourceCustomizationUuid\":\"debd988f-fe04-4940-a5cb-37f61d84eab4\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"internet\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"64b8e8ba-62b9-4db6-b420-1ca7067d63e0\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sotnvpnattachmentvF\",\n \"resourceInvariantUuid\":\"97c4a3c6-2943-41af-8717-2f3183f944be\",\n \"resourceUuid\":\"44b777ee-9793-465d-8053-d8e86d2e2362\",\n \"resourceCustomizationUuid\":\"37aeb073-c75d-4cf6-a7fa-a1af862ef58a\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"SPPartnerVF\",\n \"resourceInvariantUuid\":\"072f9238-15b0-4bc5-a5f5-f18548739470\",\n \"resourceUuid\":\"81b9430b-8abe-45d6-8bf9-f41a8f5c735f\",\n \"resourceCustomizationUuid\":\"cd0b4b9c-66c6-49c5-b346-7580e4b6c394\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n }\n ],\n \"requestInputs\":{\n \"devicevf_device_class\":\"PNF\",\n \"devicevf_device_esn\":\"2102351BTJ10HB000075\",\n \"devicevf_device_name\":\"50.47\",\n \"devicevf_device_systemIp\":\"192.168.1.47\",\n \"devicevf_device_type\":\"AR161EW\",\n \"devicevf_device_vendor\":\"huawei\",\n \"devicevf_device_version\":\"1.0\",\n \"internet_sitewanport_description\":\"internet\",\n \"internet_sitewanport_deviceName\":\"50.47\",\n \"internet_sitewanport_inputBandwidth\":\"100\",\n \"internet_sitewanport_ipAddress\":\"100.2.30.9\",\n \"internet_sitewanport_name\":\"internet\",\n \"internet_sitewanport_outputBandwidth\":\"100\",\n \"internet_sitewanport_portNumber\":\"0/0/2\",\n \"internet_sitewanport_portType\":\"GE\",\n \"internet_sitewanport_providerIpAddress\":\"100.2.30.10\",\n \"internet_sitewanport_transportNetworkName\":\"internet\",\n \"mpls_sitewanport_description\":\"mpls\",\n \"mpls_sitewanport_deviceName\":\"50.47\",\n \"mpls_sitewanport_inputBandwidth\":\"100\",\n \"mpls_sitewanport_ipAddress\":\"10.2.30.7\",\n \"mpls_sitewanport_name\":\"mpls\",\n \"mpls_sitewanport_outputBandwidth\":\"100\",\n \"mpls_sitewanport_portNumber\":\"0/0/1\",\n \"mpls_sitewanport_portType\":\"GE\",\n \"mpls_sitewanport_providerIpAddress\":\"10.2.30.8\",\n \"mpls_sitewanport_transportNetworkName\":\"internet\",\n \"sdwanvpnattachmentvf_sdwancondition_role\":\"spoke\",\n \"sdwanvpnattachmentvf_sdwancondition_sdwanVpnName\":\"SDWANVPNInfra\",\n \"sitevf_site_address\":\"Chuangxin Building,Tianningsi,Xicheng,Beijing\",\n \"sitevf_site_controlPoint\":\"CMCC_VCPE\",\n \"sitevf_site_description\":\"CMCC_vGW\",\n \"sitevf_site_emails\":\"\",\n \"sitevf_site_latitude\":\"\",\n \"sitevf_site_longitude\":\"\",\n \"sitevf_site_name\":\"DcXichengQuBeijing\",\n \"sitevf_site_postcode\":\"100095\",\n \"sitevf_site_role\":\"sd-wan-edge\",\n \"sitevf_site_type\":\"single-gateway\",\n \"sotnvpnattachmentvf_sotncondition_clientSignal\":\"\",\n \"sotnvpnattachmentvf_sotncondition_cVLAN\":\"\",\n \"sotnvpnattachmentvf_sotncondition_sotnVpnName\":\"SOTN L2\"\n }\n }\n }\n}", + "relationship-list": { + "relationship": [ + { + "related-to": "sp-partner", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/business/sp-partners/sp-partner/289b87a5-72fe-4197-a307-6929c3831f82", + "relationship-data": [ + { + "relationship-key": "sp-partner.sp-partner-id", + "relationship-value": "289b87a5-72fe-4197-a307-6929c3831f82" + } + ], + "related-to-property": [ + { + "property-key": "sp-partner.sp-partner-id", + "property-value": "289b87a5-72fe-4197-a307-6929c3831f82" + } + ] + } + ] + } + }, + { + "service-instance-id": "2d55a540-f6d3-4108-9bb4-290574b87a6c", + "service-instance-name": "siteLondon", + "service-type": "E2E Service", + "service-role": "E2E Service", + "model-invariant-id": "499e5e60-c8b2-4ea6-8c4e-7739420673a9", + "model-version-id": "8ec97da1-1e0a-4198-9c9a-3da2c60d7974", + "resource-version": "1537866122803", + "input-parameters": "{\n \"service\":{\n \"name\":\"siteLondon\",\n \"description\":\"SiteService\",\n \"serviceInvariantUuid\":\"499e5e60-c8b2-4ea6-8c4e-7739420673a9\",\n \"serviceUuid\":\"8ec97da1-1e0a-4198-9c9a-3da2c60d7974\",\n \"globalSubscriberId\":\"demo\",\n \"serviceType\":\"ccvpn\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n {\n \"resourceName\":\"SiteVF\",\n \"resourceInvariantUuid\":\"0c0e1cbe-6e01-4f9e-8c45-a9700ebc14df\",\n \"resourceUuid\":\"4ad2d390-5c51-45f5-9710-b467a4ec7a73\",\n \"resourceCustomizationUuid\":\"66590e07-0777-415c-af44-36347cf3ddd3\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"mpls\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"205456e7-3dc0-40c4-8cb0-28e6c1877042\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"deviceVF\",\n \"resourceInvariantUuid\":\"c726490a-0ce2-4bc7-abea-dade66bfb13d\",\n \"resourceUuid\":\"0e2de9d8-d76b-4134-b5f1-41e79056adbe\",\n \"resourceCustomizationUuid\":\"5bc1373e-9a36-4a00-8c62-784e0bc417ad\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sdwanvpnattachmentVF\",\n \"resourceInvariantUuid\":\"f714feec-1aef-4890-abba-f8f3a906935f\",\n \"resourceUuid\":\"709919b7-75fd-4e49-8398-67853323ff55\",\n \"resourceCustomizationUuid\":\"debd988f-fe04-4940-a5cb-37f61d84eab4\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"internet\",\n \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n \"resourceCustomizationUuid\":\"64b8e8ba-62b9-4db6-b420-1ca7067d63e0\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"sotnvpnattachmentvF\",\n \"resourceInvariantUuid\":\"97c4a3c6-2943-41af-8717-2f3183f944be\",\n \"resourceUuid\":\"44b777ee-9793-465d-8053-d8e86d2e2362\",\n \"resourceCustomizationUuid\":\"37aeb073-c75d-4cf6-a7fa-a1af862ef58a\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n },\n {\n \"resourceName\":\"SPPartnerVF\",\n \"resourceInvariantUuid\":\"072f9238-15b0-4bc5-a5f5-f18548739470\",\n \"resourceUuid\":\"81b9430b-8abe-45d6-8bf9-f41a8f5c735f\",\n \"resourceCustomizationUuid\":\"cd0b4b9c-66c6-49c5-b346-7580e4b6c394\",\n \"parameters\":{\n \"locationConstraints\":[\n\n ],\n \"resources\":[\n\n ],\n \"requestInputs\":{\n\n }\n }\n }\n ],\n \"requestInputs\":{\n \"devicevf_device_class\":\"PNF\",\n \"devicevf_device_esn\":\"2102351BTJ10HB000075\",\n \"devicevf_device_name\":\"50.47\",\n \"devicevf_device_systemIp\":\"192.168.1.47\",\n \"devicevf_device_type\":\"AR161EW\",\n \"devicevf_device_vendor\":\"huawei\",\n \"devicevf_device_version\":\"1.0\",\n \"internet_sitewanport_description\":\"internet\",\n \"internet_sitewanport_deviceName\":\"50.47\",\n \"internet_sitewanport_inputBandwidth\":\"100\",\n \"internet_sitewanport_ipAddress\":\"100.2.30.9\",\n \"internet_sitewanport_name\":\"internet\",\n \"internet_sitewanport_outputBandwidth\":\"100\",\n \"internet_sitewanport_portNumber\":\"0/0/2\",\n \"internet_sitewanport_portType\":\"GE\",\n \"internet_sitewanport_providerIpAddress\":\"100.2.30.10\",\n \"internet_sitewanport_transportNetworkName\":\"internet\",\n \"mpls_sitewanport_description\":\"mpls\",\n \"mpls_sitewanport_deviceName\":\"50.47\",\n \"mpls_sitewanport_inputBandwidth\":\"100\",\n \"mpls_sitewanport_ipAddress\":\"10.2.30.7\",\n \"mpls_sitewanport_name\":\"mpls\",\n \"mpls_sitewanport_outputBandwidth\":\"100\",\n \"mpls_sitewanport_portNumber\":\"0/0/1\",\n \"mpls_sitewanport_portType\":\"GE\",\n \"mpls_sitewanport_providerIpAddress\":\"10.2.30.8\",\n \"mpls_sitewanport_transportNetworkName\":\"internet\",\n \"sdwanvpnattachmentvf_sdwancondition_role\":\"spoke\",\n \"sdwanvpnattachmentvf_sdwancondition_sdwanVpnName\":\"SDWANVPNInfra-2\",\n \"sitevf_site_address\":\"VDF International Data Center,Hongkong\",\n \"sitevf_site_controlPoint\":\"VDF_VCPE\",\n \"sitevf_site_description\":\"VDF_vGW\",\n \"sitevf_site_emails\":\"\",\n \"sitevf_site_latitude\":\"\",\n \"sitevf_site_longitude\":\"\",\n \"sitevf_site_name\":\"siteLondon\",\n \"sitevf_site_postcode\":\"999077\",\n \"sitevf_site_role\":\"sd-wan-edge\",\n \"sitevf_site_type\":\"single-gateway\",\n \"sotnvpnattachmentvf_sotncondition_clientSignal\":\"\",\n \"sotnvpnattachmentvf_sotncondition_cVLAN\":\"\",\n \"sotnvpnattachmentvf_sotncondition_sotnVpnName\":\"SOTN L2\"\n }\n }\n }\n}", + "relationship-list": { + "relationship": [ + { + "related-to": "wan-port-config", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/network/wan-port-configs/wan-port-config/52ae7944-12b3-4766-848e-e43088947af9", + "relationship-data": [ + { + "relationship-key": "wan-port-config.wan-port-config-id", + "relationship-value": "52ae7944-12b3-4766-848e-e43088947af9" + } + ], + "related-to-property": [ + { + "property-key": "wan-port-config.wan-port-config-name", + "property-value": "intenet" + } + ] + }, + { + "related-to": "site-resource", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/network/site-resources/site-resource/a22193fc-d1b5-41a7-9033-14339838b0c5", + "relationship-data": [ + { + "relationship-key": "site-resource.site-resource-id", + "relationship-value": "a22193fc-d1b5-41a7-9033-14339838b0c5" + } + ], + "related-to-property": [ + { + "property-key": "site-resource.site-resource-name", + "property-value": "travelSite" + } + ] + }, + { + "related-to": "wan-port-config", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/network/wan-port-configs/wan-port-config/9fc7c231-1b71-49e6-8390-e92b707e7615", + "relationship-data": [ + { + "relationship-key": "wan-port-config.wan-port-config-id", + "relationship-value": "9fc7c231-1b71-49e6-8390-e92b707e7615" + } + ], + "related-to-property": [ + { + "property-key": "wan-port-config.wan-port-config-name", + "property-value": "mpls" + } + ] + }, + { + "related-to": "device", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/network/devices/device/f0cf1e06-7be8-4602-83cb-60d87d8e7ef3", + "relationship-data": [ + { + "relationship-key": "device.device-id", + "relationship-value": "f0cf1e06-7be8-4602-83cb-60d87d8e7ef3" + } + ], + "related-to-property": [ + { + "property-key": "device.device-name", + "property-value": "CentSpokeDevice" + } + ] + }, + { + "related-to": "sp-partner", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/business/sp-partners/sp-partner/3addd6b9-b05f-4841-881c-1ce2c753513f", + "relationship-data": [ + { + "relationship-key": "sp-partner.sp-partner-id", + "relationship-value": "3addd6b9-b05f-4841-881c-1ce2c753513f" + } + ], + "related-to-property": [ + { + "property-key": "sp-partner.sp-partner-id", + "property-value": "3addd6b9-b05f-4841-881c-1ce2c753513f" + } + ] + }, + { + "related-to": "allotted-resource", + "relationship-label": "org.onap.relationships.inventory.Uses", + "related-link": "/aai/v13/business/customers/customer/demo/service-subscriptions/service-subscription/ccvpn/service-instances/service-instance/0ea94797-3772-40ff-b6fb-69f06c533be3/allotted-resources/allotted-resource/f1523ca9-6b56-482e-b3a4-a2f8dcbfba12", + "relationship-data": [ + { + "relationship-key": "customer.global-customer-id", + "relationship-value": "demo" + }, + { + "relationship-key": "service-subscription.service-type", + "relationship-value": "ccvpn" + }, + { + "relationship-key": "service-instance.service-instance-id", + "relationship-value": "0ea94797-3772-40ff-b6fb-69f06c533be3" + }, + { + "relationship-key": "allotted-resource.id", + "relationship-value": "f1523ca9-6b56-482e-b3a4-a2f8dcbfba12" + } + ], + "related-to-property": [ + { + "property-key": "allotted-resource.description", + "property-value": "sdwan-attachment" + }, + { + "property-key": "allotted-resource.allotted-resource-name", + "property-value": "sdwan ar" + } + ] + }, + { + "related-to": "allotted-resource", + "relationship-label": "org.onap.relationships.inventory.Uses", + "related-link": "/aai/v13/business/customers/customer/demo/service-subscriptions/service-subscription/ccvpn/service-instances/service-instance/8e07f832-3f50-4657-9b44-010049e8b488/allotted-resources/allotted-resource/d1a6b573-0595-4468-bab9-02465c295618", + "relationship-data": [ + { + "relationship-key": "customer.global-customer-id", + "relationship-value": "demo" + }, + { + "relationship-key": "service-subscription.service-type", + "relationship-value": "ccvpn" + }, + { + "relationship-key": "service-instance.service-instance-id", + "relationship-value": "8e07f832-3f50-4657-9b44-010049e8b488" + }, + { + "relationship-key": "allotted-resource.id", + "relationship-value": "d1a6b573-0595-4468-bab9-02465c295618" + } + ], + "related-to-property": [ + { + "property-key": "allotted-resource.description", + "property-value": "sotn attachment" + }, + { + "property-key": "allotted-resource.allotted-resource-name", + "property-value": "sotn ar" + } + ] + } + ] + } + } + ] +}
\ No newline at end of file diff --git a/usecaseui-portal/src/app/mock/json/netWorkD3Data.json b/usecaseui-portal/src/app/mock/json/netWorkD3Data.json new file mode 100644 index 00000000..0dbfd939 --- /dev/null +++ b/usecaseui-portal/src/app/mock/json/netWorkD3Data.json @@ -0,0 +1,94 @@ +[ + { + "networkId": "1000", + "pnfs": [ + { + "pnfName": "pnf1000" + } + ], + "tps": [ + { + "interface-name": "nodeId-78.78.78.78-ltpId-5" + }, + { + "interface-name": "nodeId-78.78.78.78-ltpId-4" + }, + { + "interface-name": "nodeId-78.78.78.78-ltpId-1" + }, + { + "interface-name": "nodeId-78.78.78.78-ltpId-3" + }, + { + "interface-name": "nodeId-78.78.78.78-ltpId-2" + } + ], + "aaiId":"" + }, + { + "networkId": "2000", + "pnfs": [ + { + "pnfName": "pnf2000" + } + ], + "tps": [ + { + "interface-name": "nodeId-79.79.79.79-ltpId-5" + }, + { + "interface-name": "nodeId-79.79.79.79-ltpId-4" + }, + { + "interface-name": "nodeId-79.79.79.79-ltpId-1" + }, + { + "interface-name": "nodeId-79.79.79.79-ltpId-3" + }, + { + "interface-name": "nodeId-79.79.79.79-ltpId-2" + } + ], + "aaiId":"" + }, + { + "networkId": "3000", + "pnfs": [ + { + "pnfName": "pnf3000" + } + ], + "tps": [ + { + "interface-name": "nodeId-80.80.80.80-ltpId-5" + }, + { + "interface-name": "nodeId-80.80.80.80-ltpId-4" + }, + { + "interface-name": "nodeId-80.80.80.80-ltpId-1" + }, + { + "interface-name": "nodeId-80.80.80.80-ltpId-3" + }, + { + "interface-name": "nodeId-80.80.80.80-ltpId-2" + } + ], + "aaiId":"" + }, + { + "networkId": "cloud-network", + "pnfs": [ + { + "pnfName": "pnf-cloud" + } + ], + "tps": [ + { + "interface-name": "cloud-tp" + } + ], + "aaiId":"gongjie666" + } +] diff --git a/usecaseui-portal/src/app/mock/json/netWorkD3Data2.json b/usecaseui-portal/src/app/mock/json/netWorkD3Data2.json new file mode 100644 index 00000000..1ab07822 --- /dev/null +++ b/usecaseui-portal/src/app/mock/json/netWorkD3Data2.json @@ -0,0 +1,246 @@ +[ + { + "network-resource": { + "network-id": "成都市", + "pnfs": { + "pnf": [ + { + "pnf-name": "双流区" + }, + { + "pnf-name": "武侯区" + }, + { + "pnf-name": "金牛区" + } + ] + }, + "tp": [ + { + "p-interface": { + "interface-name": "东升街", + "network-ref": "some ref", + "transparent": "some value", + "speed-value": "some speed", + "relationship-list": { + "relationship": [ + { + "related-to": "logical-link", + "related-link": "url of logical-link", + "relationship-data": { + "relationship-key": "logical-link.link-name", + "relationship-value": "some name" + } + } + ] + } + } + }, + { + "p-interface": { + "interface-name": "浆洗街", + "network-ref": "some ref", + "transparent": "some value", + "speed-value": "some speed", + "relationship-list": { + "relationship": [ + { + "related-to": "logical-link", + "related-link": "url of logical-link", + "relationship-data": { + "relationship-key": "logical-link.link-name", + "relationship-value": "some name" + } + } + ] + } + } + }, + { + "p-interface": { + "interface-name": "抚琴街", + "network-ref": "some ref", + "transparent": "some value", + "speed-value": "some speed", + "relationship-list": { + "relationship": [ + { + "related-to": "logical-link", + "related-link": "url of logical-link", + "relationship-data": { + "relationship-key": "logical-link.link-name", + "relationship-value": "some name" + } + } + ] + } + } + } + ], + "relationship-list": { + "relationship": [ + { + "related-to": "vpn-binding", + "related-link": "url of vpn-binding", + "relationship-data": { + "relationship-key": "vpn-binding.vpn-id", + "relationship-value": "some id" + } + } + ] + } + } + }, + { + "network-resource": { + "network-id": "重庆市", + "pnfs": { + "pnf": [ + { + "pnf-name": "沙坪坝区" + }, + { + "pnf-name": "南岸区" + }, + { + "pnf-name": "江北区" + } + ] + }, + "tp": [ + { + "p-interface": { + "interface-name": "万州", + "network-ref": "some ref", + "transparent": "some value", + "speed-value": "some speed", + "relationship-list": { + "relationship": [ + { + "related-to": "logical-link", + "related-link": "url of logical-link", + "relationship-data": { + "relationship-key": "logical-link.link-name", + "relationship-value": "some name" + } + } + ] + } + } + }, + { + "p-interface": { + "interface-name": "南川", + "network-ref": "some ref", + "transparent": "some value", + "speed-value": "some speed", + "relationship-list": { + "relationship": [ + { + "related-to": "logical-link", + "related-link": "url of logical-link", + "relationship-data": { + "relationship-key": "logical-link.link-name", + "relationship-value": "some name" + } + } + ] + } + } + }, + { + "p-interface": { + "interface-name": "武隆", + "network-ref": "some ref", + "transparent": "some value", + "speed-value": "some speed", + "relationship-list": { + "relationship": [ + { + "related-to": "logical-link", + "related-link": "url of logical-link", + "relationship-data": { + "relationship-key": "logical-link.link-name", + "relationship-value": "some name" + } + } + ] + } + } + }, + { + "p-interface": { + "interface-name": "江津", + "network-ref": "some ref", + "transparent": "some value", + "speed-value": "some speed", + "relationship-list": { + "relationship": [ + { + "related-to": "logical-link", + "related-link": "url of logical-link", + "relationship-data": { + "relationship-key": "logical-link.link-name", + "relationship-value": "some name" + } + } + ] + } + } + }, + { + "p-interface": { + "interface-name": "合川", + "network-ref": "some ref", + "transparent": "some value", + "speed-value": "some speed", + "relationship-list": { + "relationship": [ + { + "related-to": "logical-link", + "related-link": "url of logical-link", + "relationship-data": { + "relationship-key": "logical-link.link-name", + "relationship-value": "some name" + } + } + ] + } + } + }, + { + "p-interface": { + "interface-name": "巫山", + "network-ref": "some ref", + "transparent": "some value", + "speed-value": "some speed", + "relationship-list": { + "relationship": [ + { + "related-to": "logical-link", + "related-link": "url of logical-link", + "relationship-data": { + "relationship-key": "logical-link.link-name", + "relationship-value": "some name" + } + } + ] + } + } + } + ], + "relationship-list": { + "relationship": [ + { + "related-to": "vpn-binding", + "related-link": "url of vpn-binding", + "relationship-data": { + "relationship-key": "vpn-binding.vpn-id", + "relationship-value": "some id" + } + } + ] + } + } + } + ] diff --git a/usecaseui-portal/src/app/mock/json/nsServiceTemplateParameters.json b/usecaseui-portal/src/app/mock/json/nsServiceTemplateParameters.json new file mode 100644 index 00000000..b6dfbd86 --- /dev/null +++ b/usecaseui-portal/src/app/mock/json/nsServiceTemplateParameters.json @@ -0,0 +1,354 @@ +{ + "vnffgs": [ + { + "vnffg_id": "vnffg1", + "description": "", + "members": [ + "path1", + "path2" + ], + "properties": { + "vendor": "zte", + "connection_point": [ + "m6000_data_in", + "m600_tunnel_cp", + "m6000_data_out" + ], + "version": "1.0", + "constituent_vnfs": [ + "VFW", + "VNAT" + ], + "number_of_endpoints": 3, + "dependent_virtual_link": [ + "sfc_data_network", + "ext_datanet_net", + "ext_mnet_net" + ] + } + } + ], + "inputs": { + "sfc_data_network": { + "type": "string", + "value": "sfc_data_network" + }, + "externalDataNetworkName": { + "type": "string", + "value": "vlan_4004_tunnel_net" + }, + "externalManageNetworkName": { + "type": "string", + "value": "vlan_4008_mng_net" + }, + "NatIpRange": { + "type": "string", + "value": "192.167.0.10-192.168.0.20" + }, + "externalPluginManageNetworkName": { + "type": "string", + "value": "vlan_4007_plugin_net" + } + }, + "pnfs": [ + { + "pnf_id": "m6000_s", + "cps": [], + "description": "", + "properties": { + "vendor": "zte", + "request_reclassification": " False", + "pnf_type": "m6000s", + "version": "1.0", + "management_address": "111111", + "id": "m6000_s", + "nsh_aware": "False" + } + } + ], + "fps": [ + { + "properties": { + "symmetric": "False", + "policy": { + "type": "ACL", + "criteria": { + "dest_port_range": "1-100", + "ip_protocol": "tcp", + "source_ip_range": [ + "119.1.1.1-119.1.1.10" + ], + "dest_ip_range": [ + { + "get_input": "NatIpRange" + } + ], + "dscp": 0, + "source_port_range": "1-100" + } + } + }, + "forwarder_list": [ + { + "capability": "", + "type": "cp", + "node_name": "m6000_data_out" + }, + { + "capability": "", + "type": "cp", + "node_name": "m600_tunnel_cp" + }, + { + "capability": "vnat_fw_inout", + "type": "vnf", + "node_name": "VNAT" + } + ], + "description": "", + "fp_id": "path2" + }, + { + "properties": { + "symmetric": "True", + "policy": { + "type": "ACL", + "criteria": { + "dest_port_range": "1-100", + "ip_protocol": "tcp", + "source_ip_range": [ + "1-100" + ], + "dest_ip_range": [ + "1-100" + ], + "dscp": 4, + "source_port_range": "1-100" + } + } + }, + "forwarder_list": [ + { + "capability": "", + "type": "cp", + "node_name": "m6000_data_in" + }, + { + "capability": "", + "type": "cp", + "node_name": "m600_tunnel_cp" + }, + { + "capability": "vfw_fw_inout", + "type": "vnf", + "node_name": "VFW" + }, + { + "capability": "vnat_fw_inout", + "type": "vnf", + "node_name": "VNAT" + }, + { + "capability": "", + "type": "cp", + "node_name": "m600_tunnel_cp" + }, + { + "capability": "", + "type": "cp", + "node_name": "m6000_data_out" + } + ], + "description": "", + "fp_id": "path1" + } + ], + "routers": [], + "vnfs": [ + { + "vnf_id": "VFW", + "description": "", + "properties": { + "plugin_info": "vbrasplugin_1.0", + "vendor": "zte", + "is_shared": "False", + "adjust_vnf_capacity": "True", + "name": "VFW", + "vnf_extend_type": "driver", + "csarVersion": "v1.0", + "csarType": "NFAR", + "csarProvider": "ZTE", + "version": "1.0", + "nsh_aware": "True", + "cross_dc": "False", + "vnf_type": "VFW", + "vmnumber_overquota_alarm": "True", + "vnfd_version": "1.0.0", + "externalPluginManageNetworkName": "vlan_4007_plugin_net", + "id": "vcpe_vfw_zte_1_0", + "request_reclassification": "False" + }, + "dependencies": [ + { + "key_name": "vfw_ctrl_by_manager_cp", + "vl_id": "ext_mnet_net" + }, + { + "key_name": "vfw_data_cp", + "vl_id": "sfc_data_network" + } + ], + "type": "tosca.nodes.nfv.ext.zte.VNF.VFW", + "networks": [] + } + ], + "ns_exposed": { + "external_cps": [], + "forward_cps": [] + }, + "policies": [ + { + "file_url": "policies/abc.drl", + "name": "aaa" + } + ], + "vls": [ + { + "route_id": "", + "vl_id": "ext_mnet_net", + "route_external": "False", + "description": "", + "properties": { + "name": "vlan_4008_mng_net", + "mtu": 1500, + "location_info": { + "tenant": "admin", + "vimid": 2, + "availability_zone": "nova" + }, + "ip_version": 4, + "dhcp_enabled": "True", + "network_name": "vlan_4008_mng_net", + "network_type": "vlan" + } + }, + { + "route_id": "", + "vl_id": "ext_datanet_net", + "route_external": "False", + "description": "", + "properties": { + "name": "vlan_4004_tunnel_net", + "mtu": 1500, + "location_info": { + "tenant": "admin", + "vimid": 2, + "availability_zone": "nova" + }, + "ip_version": 4, + "dhcp_enabled": "True", + "network_name": "vlan_4004_tunnel_net", + "network_type": "vlan" + } + }, + { + "route_id": "", + "vl_id": "sfc_data_network", + "route_external": "False", + "description": "", + "properties": { + "name": "sfc_data_network", + "dhcp_enabled": "True", + "is_predefined": "False", + "location_info": { + "tenant": "admin", + "vimid": 2, + "availability_zone": "nova" + }, + "ip_version": 4, + "mtu": 1500, + "network_name": "sfc_data_network", + "network_type": "vlan" + } + } + ], + "cps": [ + { + "pnf_id": "m6000_s", + "vl_id": "path2", + "description": "", + "cp_id": "m6000_data_out", + "properties": { + "direction": "bidirectional", + "vnic_type": "normal", + "bandwidth": 0, + "mac_address": "11-22-33-22-11-44", + "interface_name": "xgei-0/4/1/5", + "ip_address": "176.1.1.2", + "order": 0, + "sfc_encapsulation": "mac" + } + }, + { + "pnf_id": "m6000_s", + "vl_id": "ext_datanet_net", + "description": "", + "cp_id": "m600_tunnel_cp", + "properties": { + "direction": "bidirectional", + "vnic_type": "normal", + "bandwidth": 0, + "mac_address": "00-11-00-22-33-00", + "interface_name": "gei-0/4/0/13", + "ip_address": "191.167.100.5", + "order": 0, + "sfc_encapsulation": "mac" + } + }, + { + "pnf_id": "m6000_s", + "vl_id": "path2", + "description": "", + "cp_id": "m6000_data_in", + "properties": { + "direction": "bidirectional", + "vnic_type": "normal", + "bandwidth": 0, + "mac_address": "11-22-33-22-11-41", + "interface_name": "gei-0/4/0/7", + "ip_address": "1.1.1.1", + "order": 0, + "sfc_encapsulation": "mac", + "bond": "none" + } + }, + { + "pnf_id": "m6000_s", + "vl_id": "ext_mnet_net", + "description": "", + "cp_id": "m600_mnt_cp", + "properties": { + "direction": "bidirectional", + "vnic_type": "normal", + "bandwidth": 0, + "mac_address": "00-11-00-22-33-11", + "interface_name": "gei-0/4/0/1", + "ip_address": "10.46.244.51", + "order": 0, + "sfc_encapsulation": "mac", + "bond": "none" + } + } + ], + "metadata": { + "invariant_id": "vcpe_ns_sff_1", + "name": "VCPE_NS", + "csarVersion": "v1.0", + "csarType": "NSAR", + "csarProvider": "ZTE", + "version": 1, + "vendor": "ZTE", + "id": "VCPE_NS", + "description": "vcpe_ns" + } +}
\ No newline at end of file diff --git a/usecaseui-portal/src/app/mock/json/onboardTableData.json b/usecaseui-portal/src/app/mock/json/onboardTableData.json new file mode 100644 index 00000000..56e5b323 --- /dev/null +++ b/usecaseui-portal/src/app/mock/json/onboardTableData.json @@ -0,0 +1,103 @@ +{ + "total":245, + "tableList":[ + { + "name":"Demo_vims_zte", + "type":"NS", + "version":"1.0", + "status":"Onboarding", + "progress": 35 + }, + { + "name":"Demo_vims_zte", + "type":"NS", + "version":"1.0", + "status":"Onboarding", + "progress": 86 + }, + { + "name":"Demo_vims_zte", + "type":"NS", + "version":"1.0", + "status":"Invalid", + "progress": 100 + }, + { + "name":"Demo_vims_zte", + "type":"NS", + "version":"1.0", + "status":"Onboarded", + "progress": 100 + }, + { + "name":"Demo_vims_zte", + "type":"NS", + "version":"1.0", + "status":"Onboarded", + "progress": 100 + }, + { + "name":"Demo_vims_zte", + "type":"NS", + "version":"1.0", + "status":"Invalid", + "progress": 100 + }, + { + "name":"Demo_vims_zte", + "type":"NS", + "version":"1.0", + "status":"Invalid", + "progress": 100 + }, + { + "name":"Demo_vims_zte", + "type":"NS", + "version":"1.0", + "status":"Invalid", + "progress": 100 + }, + { + "name":"Demo_vims_zte", + "type":"NS", + "version":"1.0", + "status":"Invalid", + "progress": 100 + }, + { + "name":"Demo_vims_zte", + "type":"NS", + "version":"1.0", + "status":"Invalid", + "progress": 100 + }, + { + "name":"Demo_vims_zte", + "type":"NS", + "version":"1.0", + "status":"Invalid", + "progress": 100 + }, + { + "name":"Demo_vims_zte", + "type":"NS", + "version":"1.0", + "status":"Invalid", + "progress": 100 + }, + { + "name":"Demo_vims_zte", + "type":"NS", + "version":"1.0", + "status":"Invalid", + "progress": 100 + }, + { + "name":"Demo_vims_zte", + "type":"NS", + "version":"1.0", + "status":"Invalid", + "progress": 100 + } + ] +} diff --git a/usecaseui-portal/src/app/mock/json/p_interfaces1.json b/usecaseui-portal/src/app/mock/json/p_interfaces1.json new file mode 100644 index 00000000..399c21b9 --- /dev/null +++ b/usecaseui-portal/src/app/mock/json/p_interfaces1.json @@ -0,0 +1,17 @@ +[ + { + "interface-name": "nodeId-78.78.78.78-ltpId-5" + }, + { + "interface-name": "nodeId-78.78.78.78-ltpId-4" + }, + { + "interface-name": "nodeId-78.78.78.78-ltpId-3" + }, + { + "interface-name": "nodeId-78.78.78.78-ltpId-2" + }, + { + "interface-name": "nodeId-78.78.78.78-ltpId-1" + } +] diff --git a/usecaseui-portal/src/app/mock/json/p_interfaces2.json b/usecaseui-portal/src/app/mock/json/p_interfaces2.json new file mode 100644 index 00000000..4baf8b85 --- /dev/null +++ b/usecaseui-portal/src/app/mock/json/p_interfaces2.json @@ -0,0 +1,17 @@ +[ + { + "interface-name": "nodeId-79.79.79.79-ltpId-5" + }, + { + "interface-name": "nodeId-79.79.79.79-ltpId-4" + }, + { + "interface-name": "nodeId-79.79.79.79-ltpId-3" + }, + { + "interface-name": "nodeId-79.79.79.79-ltpId-2" + }, + { + "interface-name": "nodeId-79.79.79.79-ltpId-1" + } +] diff --git a/usecaseui-portal/src/app/mock/json/pnfdetail-domain.json b/usecaseui-portal/src/app/mock/json/pnfdetail-domain.json new file mode 100644 index 00000000..c337bd97 --- /dev/null +++ b/usecaseui-portal/src/app/mock/json/pnfdetail-domain.json @@ -0,0 +1,29 @@ +{ + "pnf-name": "pnf1000", + "pnf-id": "79.79.79.79", + "in-maint": true, + "resource-version": "1536028638695", + "admin-status": "up", + "operational-status": "up", + "relationship-list": { + "relationship": [ + { + "related-to": "network-resource", + "relationship-label": "tosca.relationships.network.LinksTo", + "related-link": "/aai/v13/network/network-resources/network-resource/1000", + "relationship-data": [ + { + "relationship-key": "network-resource.network-id", + "relationship-value": "1000" + } + ], + "related-to-property": [ + { + "property-key": "network-resource.network-id", + "property-value": "1000" + } + ] + } + ] + } +}
\ No newline at end of file diff --git a/usecaseui-portal/src/app/mock/json/progress.json b/usecaseui-portal/src/app/mock/json/progress.json new file mode 100644 index 00000000..1a36c1e2 --- /dev/null +++ b/usecaseui-portal/src/app/mock/json/progress.json @@ -0,0 +1,13 @@ +{ + "operationStatus":{ + "operationId": "XXXXXX", + "operation": "create|delete|update|scale", + "result": "finished|error|processing", + "reason": "", + "userId": "", + "operationContent": "Be creating pop.", + "progress": 0, + "operateAt": "", + "finishedAt": "" + } +} diff --git a/usecaseui-portal/src/app/mock/json/sdwanvpnServiceTemplateParameters.json b/usecaseui-portal/src/app/mock/json/sdwanvpnServiceTemplateParameters.json new file mode 100644 index 00000000..cabf0e12 --- /dev/null +++ b/usecaseui-portal/src/app/mock/json/sdwanvpnServiceTemplateParameters.json @@ -0,0 +1,57 @@ +{ + "invariantUUID": "88dcb2f0-085b-4548-8b93-0882e37d25d8", + "uuid": "462f84e5-f0e5-44c5-ab95-38fb4bf77064", + "name": "SDWANVPNInfraService", + "type": "Service", + "version": "null", + "description": "SDWAN VPN Infra", + "category": "E2E Service", + "subcategory": "null", + "customizationUuid": "null", + "inputs": [ + { + "name": "sdwanconnectivity0_topology", + "type": "string", + "description": "full mesh, hub-spoke", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sdwanconnectivity0_name", + "type": "string", + "description": "the name of this VPM object", + "isRequired": "true", + "defaultValue": "null" + } + ], + "nestedTemplates": [ + { + "invariantUUID": "f99a9a23-c88e-44ff-a4dc-22b88675d278", + "uuid": "7baa7742-3a13-4288-8330-868015adc340", + "name": "SDWANConnectivity", + "type": "VL", + "version": "1.0", + "description": "Represents SDWAN Connectivity.", + "category": "Generic", + "subcategory": "Infrastructure", + "customizationUuid": "94ec574b-2306-4cbd-8214-09662b040f73", + "inputs": [ + { + "name": "sdwanconnectivity0_topology", + "type": "string", + "description": "full mesh, hub-spoke", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sdwanconnectivity0_name", + "type": "string", + "description": "the name of this VPM object", + "isRequired": "true", + "defaultValue": "null" + } + ], + "nestedTemplates": [] + } + ] +}
\ No newline at end of file diff --git a/usecaseui-portal/src/app/mock/json/serviceTemplates.json b/usecaseui-portal/src/app/mock/json/serviceTemplates.json new file mode 100644 index 00000000..8de26a7d --- /dev/null +++ b/usecaseui-portal/src/app/mock/json/serviceTemplates.json @@ -0,0 +1,19 @@ + +[ + {"name":"template1","uuid":"uuidxxx","invariantUUID":"dddd1","version":"1.20"}, + {"name":"template2","uuid":"uuidxxx","invariantUUID":"dddd2","version":"1.20"}, + {"name":"template3","uuid":"uuidxxxx","invariantUUID":"dddd3","version":"1.20"}, + {"name":"template4","uuid":"uuidaaa","invariantUUID":"dddd4","version":"1.20"}, + {"name":"template5","uuid":"uuidaaa","invariantUUID":"dddd5","version":"1.20"}, + {"name":"template6","uuid":"uuidaaaa","invariantUUID":"dddd6","version":"1.20"}, + {"name":"template7","uuid":"uuidbbb","invariantUUID":"dddd7","version":"1.20"}, + {"name":"template8","uuid":"uuidbbb","invariantUUID":"dddd8","version":"1.20"}, + {"name":"template9","uuid":"uuidbbbb","invariantUUID":"dddd9","version":"1.20"}, + {"name":"template10","uuid":"uuidaaaa","invariantUUID":"dddd10","version":"1.20"}, + {"name":"template11","uuid":"uuidxxx","invariantUUID":"dddd11","version":"1.20"}, + {"name":"template12","uuid":"uuidccc","invariantUUID":"dddd12","version":"1.20"}, + {"name":"template13","uuid":"uuidccc","invariantUUID":"dddd13","version":"1.20"}, + {"name":"template14","uuid":"uuidccc","invariantUUID":"dddd14","version":"1.20"}, + {"name":"template15","uuid":"uuidxxx","invariantUUID":"dddd15","version":"1.20"}, + {"name":"template16","uuid":"uuidbbbb","invariantUUID":"dddd16","version":"1.20"} +] diff --git a/usecaseui-portal/src/app/mock/json/serviceTemplates2.json b/usecaseui-portal/src/app/mock/json/serviceTemplates2.json new file mode 100644 index 00000000..93202786 --- /dev/null +++ b/usecaseui-portal/src/app/mock/json/serviceTemplates2.json @@ -0,0 +1,43 @@ + +[ + { + "uuid": "d0a4af63-570c-40b3-a26f-ef11366f0a03", + "invariantUUID": "88dcb2f0-085b-4548-8b93-0882e37d25d8", + "name": "SDWANVPNInfraService", + "version": "2.0", + "toscaModelURL": "/sdc/v1/catalog/services/d0a4af63-570c-40b3-a26f-ef11366f0a03/toscaModel", + "category": "E2E Service" + }, + { + "uuid": "4ca96a53-2e18-4297-8dc7-5776fdf6871b", + "invariantUUID": "21886a96-0664-47a3-beae-766952f2059f", + "name": "SOTNVPNInfraService", + "version": "2.0", + "toscaModelURL": "/sdc/v1/catalog/services/4ca96a53-2e18-4297-8dc7-5776fdf6871b/toscaModel", + "category": "E2E Service" + }, + { + "uuid": "ea8bb4d2-00ea-4aeb-ad76-20ac8cb1c99c", + "invariantUUID": "342ff5e8-5592-4455-a537-a81172c9d541", + "name": "sowsiteservice", + "version": "3.0", + "toscaModelURL": "/sdc/v1/catalog/services/ea8bb4d2-00ea-4aeb-ad76-20ac8cb1c99c/toscaModel", + "category": "E2E Service" + }, + { + "uuid": "cb756ffb-8d91-49fb-86f7-12ceb2b13158", + "invariantUUID": "a7029145-4294-4664-b619-00dc959a1ff6", + "name": "SiteServiceV3", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/services/cb756ffb-8d91-49fb-86f7-12ceb2b13158/toscaModel", + "category": "E2E Service" + }, + { + "uuid": "4b4b3ef8-6747-4111-b9e0-81cf251c0068", + "invariantUUID": "5c13f3fb-2744-4635-9f1f-c59c92dc8f70", + "name": "SiteService", + "version": "2.0", + "toscaModelURL": "/sdc/v1/catalog/services/4b4b3ef8-6747-4111-b9e0-81cf251c0068/toscaModel", + "category": "E2E Service" + } +] diff --git a/usecaseui-portal/src/app/mock/json/serviceTypes.json b/usecaseui-portal/src/app/mock/json/serviceTypes.json new file mode 100644 index 00000000..cb1c20a5 --- /dev/null +++ b/usecaseui-portal/src/app/mock/json/serviceTypes.json @@ -0,0 +1,18 @@ + +[ + { + "service-type": "CCVPN", + "temp-ub-sub-account-id": "sotnaccount", + "resource-version": "1535601345780" + }, + { + "service-type": "SOTN", + "temp-ub-sub-account-id": "sotnaccount", + "resource-version": "1535601330040" + }, + { + "service-type": "CCVPN1", + "temp-ub-sub-account-id": "sotnaccount", + "resource-version": "1536111036667" + } +]
\ No newline at end of file diff --git a/usecaseui-portal/src/app/mock/json/servicesList.json b/usecaseui-portal/src/app/mock/json/servicesList.json new file mode 100644 index 00000000..61ddb7a5 --- /dev/null +++ b/usecaseui-portal/src/app/mock/json/servicesList.json @@ -0,0 +1,4 @@ +{ + "customer":["aaaaa","bbbbb","ccccc","ddddd"], + "serviceType":["aaaaa","bbbbbb","cccc","ddddddd"] +} diff --git a/usecaseui-portal/src/app/mock/json/servicesTableData.json b/usecaseui-portal/src/app/mock/json/servicesTableData.json new file mode 100644 index 00000000..07d4cbe2 --- /dev/null +++ b/usecaseui-portal/src/app/mock/json/servicesTableData.json @@ -0,0 +1,127 @@ +{ + "total":365, + "tableList":[ + { + "serviceId":"foeigiaaegaf", + "name":"demo-test5", + "type":"voLTE type", + "status":"Active", + "progress": 100, + "expand": false, + "children":[ + {"serviceId":"aaasageafefdafda","name":"demo-test5","type":"Network Service"}, + {"serviceId":"aaasageafefdafda","name":"demo-test5","type":"Network Service"} + ] + }, + { + "serviceId":"foeigiaaegaf", + "name":"demo-test5", + "type":"voLTE type", + "status":"Closed", + "progress": 100, + "expand" : false, + "children":[ + {"serviceId":"aaasageafefdafda","name":"demo-test5","type":"Network Service"}, + {"serviceId":"aaasageafefdafda","name":"demo-test5","type":"Network Service"}, + {"serviceId":"aaasageafefdafda","name":"demo-test5","type":"Network Service"} + ] + }, + { + "serviceId":"foeigiaaegaf", + "name":"demo-test5", + "type":"voLTE type", + "status":"Onboarding", + "progress": 50, + "expand" : false, + "children":[ + {"serviceId":"aaasageafefdafda","name":"demo-test5","type":"Network Service"}, + {"serviceId":"aaasageafefdafda","name":"demo-test5","type":"Network Service"}, + {"serviceId":"aaasageafefdafda","name":"demo-test5","type":"Network Service"}, + {"serviceId":"aaasageafefdafda","name":"demo-test5","type":"Network Service"} + ] + }, + { + "serviceId":"foeigiaaegaf", + "name":"demo-test5", + "type":"voLTE type", + "status":"Deleting", + "progress": 25, + "expand": false, + "children":[ + {"serviceId":"aaasageafefdafda","name":"demo-test5","type":"Network Service"}, + {"serviceId":"aaasageafefdafda","name":"demo-test5","type":"Network Service"} + ] + }, + { + "serviceId":"foeigiaaegaf", + "name":"demo-test5", + "type":"voLTE type", + "status":"Updating", + "progress": 45, + "expand": false, + "children":[ + + ] + }, + { + "serviceId":"foeigiaaegaf", + "name":"demo-test5", + "type":"voLTE type", + "status":"Creating", + "progress": 60, + "expand": false, + "children":[ + {"serviceId":"aaasageafefdafda","name":"demo-test5","type":"Network Service"}, + {"serviceId":"aaasageafefdafda","name":"demo-test5","type":"Network Service"} + ] + }, + { + "serviceId":"foeigiaaegaf", + "name":"demo-test5", + "type":"voLTE type", + "status":"Creating", + "progress": 60, + "expand": false, + "children":[ + {"serviceId":"aaasageafefdafda","name":"demo-test5","type":"Network Service"}, + {"serviceId":"aaasageafefdafda","name":"demo-test5","type":"Network Service"} + ] + }, + { + "serviceId":"foeigiaaegaf", + "name":"demo-test5", + "type":"voLTE type", + "status":"Creating", + "progress": 60, + "expand": false, + "children":[ + {"serviceId":"aaasageafefdafda","name":"demo-test5","type":"Network Service"}, + {"serviceId":"aaasageafefdafda","name":"demo-test5","type":"Network Service"} + ] + }, + { + "serviceId":"foeigiaaegaf", + "name":"demo-test5", + "type":"voLTE type", + "status":"Creating", + "progress": 60, + "expand": false, + "children":[ + {"serviceId":"aaasageafefdafda","name":"demo-test5","type":"Network Service"}, + {"serviceId":"aaasageafefdafda","name":"demo-test5","type":"Network Service"} + ] + }, + { + "serviceId":"foeigiaaegaf", + "name":"demo-test5", + "type":"voLTE type", + "status":"Creating", + "progress": 60, + "expand": false, + "children":[ + {"serviceId":"aaasageafefdafda","name":"demo-test5","type":"Network Service"}, + {"serviceId":"aaasageafefdafda","name":"demo-test5","type":"Network Service"} + ] + } + ] +} diff --git a/usecaseui-portal/src/app/mock/json/siteAddressData.json b/usecaseui-portal/src/app/mock/json/siteAddressData.json new file mode 100644 index 00000000..4b080f50 --- /dev/null +++ b/usecaseui-portal/src/app/mock/json/siteAddressData.json @@ -0,0 +1,39 @@ +[ + { + "location" : "Chuangxin Building,Tianningsi,Xicheng,Beijing", + "access-provider-id": "3333", + "access-client-id": "4444", + "access-topology-id": "11", + "access-node-id": "10.10.10.10", + "access-ltp-id": "1", + "host" : "" + }, + { + "location" : "CMCC International Data Center,Hongkong", + "access-provider-id": "3333", + "access-client-id": "4444", + "access-topology-id": "11", + "access-node-id": "10.10.10.10", + "access-ltp-id": "2", + "host" : "" + }, + { + "location" : "VDF International Data Center,Hongkong", + "access-provider-id": "pid000", + "access-client-id": "cid000", + "access-topology-id": "tid000", + "access-node-id": "11.11.11.11", + "access-ltp-id": "2", + "host" : "http://10.10.10.10" + }, + { + "location" : "University College London,Gower Street,London", + "access-provider-id": "5555", + "access-client-id": "6666", + "access-topology-id": "22", + "access-node-id": "11.11.11.11", + "access-ltp-id": "2", + "host" : "http://10.10.10.10" + } +] + diff --git a/usecaseui-portal/src/app/mock/json/siteServiceTemplateParameters.json b/usecaseui-portal/src/app/mock/json/siteServiceTemplateParameters.json new file mode 100644 index 00000000..53368e32 --- /dev/null +++ b/usecaseui-portal/src/app/mock/json/siteServiceTemplateParameters.json @@ -0,0 +1,308 @@ +{ + "invariantUUID": "5c13f3fb-2744-4635-9f1f-c59c92dc8f70", + "uuid": "3a76b1f5-fb0d-4b6b-82d5-0e8a4ebc3838", + "name": "SiteService", + "type": "Service", + "version": "null", + "description": "Site Service", + "category": "E2E Service", + "subcategory": "null", + "customizationUuid": "null", + "inputs": [ + { + "name": "internet_sitewanport_deviceName", + "type": "string", + "description": "The device name in the site", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "mpls_sitewanport_description", + "type": "string", + "description": "The description of the WAN port", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sitevf_site_type", + "type": "string", + "description": "The gateway option is used for SDWAN connectivity", + "isRequired": "true", + "defaultValue": "Single Gateway" + }, + { + "name": "sitevf_site_longitude", + "type": "string", + "description": "The longitude of the site", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "mpls_sitewanport_outputBandwidth", + "type": "string", + "description": "The output bandwidth of the WAN port", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "devicevf_device_esn", + "type": "string", + "description": "Device serial number", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sitevf_site_role", + "type": "string", + "description": "This is used for SDWAN only", + "isRequired": "true", + "defaultValue": "dsvpn-hub" + }, + { + "name": "internet_sitewanport_providerIpAddress", + "type": "string", + "description": "The provider IP address of the provider CE", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnvpnattachmentvf_sotncondition_cVLAN", + "type": "string", + "description": "The cvlan for the site used for ethernet type connectivity.", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sitevf_site_address", + "type": "string", + "description": "the address of this site", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "mpls_sitewanport_portType", + "type": "string", + "description": "the port type of the device.1 GE, 2 FE, 3 XGE, 4 LTE, 5 xDSL(ATM), 6 xSDL(PTM)", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "mpls_sitewanport_transportNetworkName", + "type": "string", + "description": "The transport network of the WAN port", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "internet_sitewanport_inputBandwidth", + "type": "string", + "description": "The input bandwidth of the WAN port", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "mpls_sitewanport_portNumber", + "type": "string", + "description": "the port number of the device", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "internet_sitewanport_description", + "type": "string", + "description": "The description of the WAN port", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "internet_sitewanport_transportNetworkName", + "type": "string", + "description": "The transport network of the WAN port", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sitevf_site_latitude", + "type": "string", + "description": "The latitude of the site", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sitevf_site_controlPoint", + "type": "string", + "description": "The control point of the site,only for sd-wan-edge", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "internet_sitewanport_outputBandwidth", + "type": "string", + "description": "The output bandwidth of the WAN port", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sitevf_site_name", + "type": "string", + "description": "the name of this site", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sitevf_site_description", + "type": "string", + "description": "The description of the site", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnvpnattachmentvf_sotncondition_clientSignal", + "type": "string", + "description": "The client signal for the site used for client type connectivity.", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "internet_sitewanport_portType", + "type": "string", + "description": "the port type of the device.1 GE, 2 FE, 3 XGE, 4 LTE, 5 xDSL(ATM), 6 xSDL(PTM)", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "internet_sitewanport_name", + "type": "string", + "description": "The name of the WAN port", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "mpls_sitewanport_deviceName", + "type": "string", + "description": "The device name in the site", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "mpls_sitewanport_providerIpAddress", + "type": "string", + "description": "The provider IP address of the provider CE", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "mpls_sitewanport_inputBandwidth", + "type": "string", + "description": "The input bandwidth of the WAN port", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sitevf_site_emails", + "type": "string", + "description": "the emails of this site", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "devicevf_device_class", + "type": "string", + "description": "The class should be VNF/PNF", + "isRequired": "true", + "defaultValue": "PNF" + }, + { + "name": "sdwanvpnattachmentvf_sdwancondition_role", + "type": "string", + "description": "the role of the site.hub/spoke.", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "mpls_sitewanport_ipAddress", + "type": "string", + "description": "The public IP of the WAN Port", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "devicevf_device_name", + "type": "string", + "description": "the name of the device", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sdwanvpnattachmentvf_sdwancondition_sdwanVpnName", + "type": "string", + "description": "The device Id of the site", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "internet_sitewanport_portNumber", + "type": "string", + "description": "the port number of the device", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnvpnattachmentvf_sotncondition_sotnVpnName", + "type": "string", + "description": "References the SOTN VPN Infra service", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "devicevf_device_type", + "type": "string", + "description": "The type of the device", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sitevf_site_postcode", + "type": "string", + "description": "The postcode of the site", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "devicevf_device_version", + "type": "string", + "description": "The version of the device", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "devicevf_device_vendor", + "type": "string", + "description": "The vendor of the device", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "mpls_sitewanport_name", + "type": "string", + "description": "The name of the WAN port", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "devicevf_device_systemIp", + "type": "string", + "description": "The system ip of the device", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "internet_sitewanport_ipAddress", + "type": "string", + "description": "The public IP of the WAN Port", + "isRequired": "true", + "defaultValue": "null" + } + ], + "nestedTemplates": [] +}
\ No newline at end of file diff --git a/usecaseui-portal/src/app/mock/json/sotn-connectivity.json b/usecaseui-portal/src/app/mock/json/sotn-connectivity.json new file mode 100644 index 00000000..6ac0a453 --- /dev/null +++ b/usecaseui-portal/src/app/mock/json/sotn-connectivity.json @@ -0,0 +1,94 @@ +{ + "connectivity": [ + { + "connectivity-id": "4efe6dff-acfc-4d13-a3fd-1177d3c08e84", + "bandwidth-profile-name": "vpn1", + "vpn-type": "ethernet", + "color-aware": "c1", + "coupling-flag": "c2", + "etht-svc-name": "SOTNVPNInfra", + "access-provider-id": "10", + "access-client-id": "10", + "access-topology-id": "10", + "access-node-id": "10.10.10.10", + "access-ltp-id": "14", + "connectivity-selflink": "restconf/config/GENERIC-RESOURCE-API:services/service/10/service-data/networks/network/3efe6dff-acfc-4d13-a3fd-1177d3c08e88/network-data/", + "operational-status": "Created", + "model-customization-id": "b44071c8-04fd-4d6b-b6af-772cbfaa1129", + "model-invariant-id": "1b9c677d-fddf-4b70-938b-925a7fa57d43", + "model-version-id": "218df3c3-50dd-4c26-9e36-4771387bb771", + "resource-version": "1535684533349", + "relationship-list": { + "relationship": [ + { + "related-to": "vpn-binding", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/network/vpn-bindings/vpn-binding/pnf1000-vpn1", + "relationship-data": [ + { + "relationship-key": "vpn-binding.vpn-id", + "relationship-value": "pnf1000-vpn1" + } + ], + "related-to-property": [ + { + "property-key": "vpn-binding.vpn-name", + "property-value": "pnf1000-vpn1" + }, + { + "property-key": "vpn-binding.vpn-type", + "property-value": "ethernet" + } + ] + }, + { + "related-to": "service-instance", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/business/customers/customer/Democcy/service-subscriptions/service-subscription/CCVPN/service-instances/service-instance/32cd906f-ee7a-4ecf-b1c3-2fce4d59f8c0", + "relationship-data": [ + { + "relationship-key": "customer.global-customer-id", + "relationship-value": "Democcy" + }, + { + "relationship-key": "service-subscription.service-type", + "relationship-value": "CCVPN" + }, + { + "relationship-key": "service-instance.service-instance-id", + "relationship-value": "32cd906f-ee7a-4ecf-b1c3-2fce4d59f8c0" + } + ], + "related-to-property": [ + { + "property-key": "service-instance.service-instance-name", + "property-value": "SOTNVPNInfra" + } + ] + }, + { + "related-to": "vpn-binding", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/network/vpn-bindings/vpn-binding/pnf2000-vpn1", + "relationship-data": [ + { + "relationship-key": "vpn-binding.vpn-id", + "relationship-value": "pnf2000-vpn1" + } + ], + "related-to-property": [ + { + "property-key": "vpn-binding.vpn-name", + "property-value": "pnf2000-vpn1" + }, + { + "property-key": "vpn-binding.vpn-type", + "property-value": "ethernet" + } + ] + } + ] + } + } + ] +}
\ No newline at end of file diff --git a/usecaseui-portal/src/app/mock/json/sotn-connectivity2.json b/usecaseui-portal/src/app/mock/json/sotn-connectivity2.json new file mode 100644 index 00000000..7bd55bf0 --- /dev/null +++ b/usecaseui-portal/src/app/mock/json/sotn-connectivity2.json @@ -0,0 +1 @@ +{"connectivity":[{"connectivity-id":"4424ea5a-3603-4040-baa9-4046ed533fe5","bandwidth-profile-name":"vpn1","vpn-type":"ethernet","color-aware":"true","coupling-flag":"true","etht-svc-name":"vpn1","access-provider-id":"","access-client-id":"","access-topology-id":"","access-node-id":"","access-ltp-id":"","connectivity-selflink":"restconf/config/GENERIC-RESOURCE-API:services/service/32cd906f-ee7a-4ecf-b1c3-2fce4d59f8c0/service-data/networks/network/4424ea5a-3603-4040-baa9-4046ed533fe5/network-data/","operational-status":"Active","model-customization-id":"2bafc8aa-c60c-4a17-a658-db4cbca07fac","model-invariant-id":"5d0ada6b-de04-4624-9410-3baab839cd6f","model-version-id":"15e21930-3248-4148-b071-a2a9be1f9889","resource-version":"1537623789475","relationship-list":{"relationship":[{"related-to":"vpn-binding","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/network/vpn-bindings/vpn-binding/11.11.11.11-vpn1","relationship-data":[{"relationship-key":"vpn-binding.vpn-id","relationship-value":"11.11.11.11-vpn1"}],"related-to-property":[{"property-key":"vpn-binding.vpn-name","property-value":"11.11.11.11-vpn1"},{"property-key":"vpn-binding.vpn-type","property-value":"ethernet"}]},{"related-to":"service-instance","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/business/customers/customer/demo/service-subscriptions/service-subscription/ccvpn/service-instances/service-instance/32cd906f-ee7a-4ecf-b1c3-2fce4d59f8c0","relationship-data":[{"relationship-key":"customer.global-customer-id","relationship-value":"demo"},{"relationship-key":"service-subscription.service-type","relationship-value":"ccvpn"},{"relationship-key":"service-instance.service-instance-id","relationship-value":"32cd906f-ee7a-4ecf-b1c3-2fce4d59f8c0"}],"related-to-property":[{"property-key":"service-instance.service-instance-name","property-value":"SOTNVPNInfra"}]},{"related-to":"vpn-binding","relationship-label":"org.onap.relationships.inventory.PartOf","related-link":"/aai/v13/network/vpn-bindings/vpn-binding/12.12.12.12-vpn1","relationship-data":[{"relationship-key":"vpn-binding.vpn-id","relationship-value":"12.12.12.12-vpn1"}],"related-to-property":[{"property-key":"vpn-binding.vpn-name","property-value":"12.12.12.12-vpn1"},{"property-key":"vpn-binding.vpn-type","property-value":"ethernet"}]}]}}]}
\ No newline at end of file diff --git a/usecaseui-portal/src/app/mock/json/sotnvpnServiceTemplateParameters.json b/usecaseui-portal/src/app/mock/json/sotnvpnServiceTemplateParameters.json new file mode 100644 index 00000000..21abcda1 --- /dev/null +++ b/usecaseui-portal/src/app/mock/json/sotnvpnServiceTemplateParameters.json @@ -0,0 +1,225 @@ +{ + "invariantUUID": "21886a96-0664-47a3-beae-766952f2059f", + "uuid": "54836196-c411-4690-af98-900c1c3aadd7", + "name": "SOTNVPNInfraService", + "type": "Service", + "version": "null", + "description": "SOTN VPN Infra Service", + "category": "E2E Service", + "subcategory": "null", + "customizationUuid": "null", + "inputs": [ + { + "name": "sotnconnectivity0_eir", + "type": "string", + "description": "The eir for SOTN connectivity. Only for Ethernet type", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_cir", + "type": "string", + "description": "The cir for SOTN connectivity. Only for Ethernet type", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_endTime", + "type": "string", + "description": "End Time", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_ebs", + "type": "string", + "description": "The ebs for SOTN connectivity. Only for Ethernet type", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_startTime", + "type": "string", + "description": "Start Time", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_dualLink", + "type": "boolean", + "description": "is Active/standby enabled", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_reroute", + "type": "boolean", + "description": "Whether to support automatic rerouting", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_cbs", + "type": "string", + "description": "The cbs for SOTN connectivity. Only for Ethernet type", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_name", + "type": "string", + "description": "the name of the SOTN connectivity", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_SLS", + "type": "string", + "description": "Business Service Level", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_description", + "type": "string", + "description": "The description of the SOTN connectivity", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_couplingFlag", + "type": "boolean", + "description": "The couplingFlag for SOTN connectivity. Only for Ethernet type", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_colorAware", + "type": "boolean", + "description": "The colorAware of the SOTN connectivity. Only for Ethernet type", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_COS", + "type": "string", + "description": "Business Class of Service of VPN", + "isRequired": "true", + "defaultValue": "standard" + } + ], + "nestedTemplates": [ + { + "invariantUUID": "1b9c677d-fddf-4b70-938b-925a7fa57d43", + "uuid": "218df3c3-50dd-4c26-9e36-4771387bb771", + "name": "SOTNConnectivity", + "type": "VL", + "version": "1.0", + "description": "Represents a sotn Connectivity", + "category": "Generic", + "subcategory": "Infrastructure", + "customizationUuid": "b44071c8-04fd-4d6b-b6af-772cbfaa1129", + "inputs": [ + { + "name": "sotnconnectivity0_eir", + "type": "string", + "description": "The eir for SOTN connectivity. Only for Ethernet type", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_cir", + "type": "string", + "description": "The cir for SOTN connectivity. Only for Ethernet type", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_endTime", + "type": "string", + "description": "End Time", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_ebs", + "type": "string", + "description": "The ebs for SOTN connectivity. Only for Ethernet type", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_startTime", + "type": "string", + "description": "Start Time", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_dualLink", + "type": "boolean", + "description": "is Active/standby enabled", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_reroute", + "type": "boolean", + "description": "Whether to support automatic rerouting", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_cbs", + "type": "string", + "description": "The cbs for SOTN connectivity. Only for Ethernet type", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_name", + "type": "string", + "description": "the name of the SOTN connectivity", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_SLS", + "type": "string", + "description": "Business Service Level", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_description", + "type": "string", + "description": "The description of the SOTN connectivity", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_couplingFlag", + "type": "boolean", + "description": "The couplingFlag for SOTN connectivity. Only for Ethernet type", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_colorAware", + "type": "boolean", + "description": "The colorAware of the SOTN connectivity. Only for Ethernet type", + "isRequired": "true", + "defaultValue": "null" + }, + { + "name": "sotnconnectivity0_COS", + "type": "string", + "description": "Business Class of Service of VPN", + "isRequired": "true", + "defaultValue": "standard" + } + ], + "nestedTemplates": [] + } + ] +}
\ No newline at end of file diff --git a/usecaseui-portal/src/app/mock/json/specific_link_nfo.json b/usecaseui-portal/src/app/mock/json/specific_link_nfo.json new file mode 100644 index 00000000..e9911409 --- /dev/null +++ b/usecaseui-portal/src/app/mock/json/specific_link_nfo.json @@ -0,0 +1,52 @@ +{ + "link-name": "nodeId-79.79.79.79-ltpId-4_nodeId-78.78.78.78-ltpId-4", + "in-maint": false, + "link-type": "some type", + "speed-value": "some speed", + "resource-version": "1536212883031", + "operational-status": "up", + "relationship-list": { + "relationship": [ + { + "related-to": "p-interface", + "relationship-label": "tosca.relationships.network.LinksTo", + "related-link": "/aai/v13/network/pnfs/pnf/pnf1000/p-interfaces/p-interface/nodeId-79.79.79.79-ltpId-4", + "relationship-data": [ + { + "relationship-key": "pnf.pnf-name", + "relationship-value": "pnf1000" + }, + { + "relationship-key": "p-interface.interface-name", + "relationship-value": "nodeId-79.79.79.79-ltpId-4" + } + ], + "related-to-property": [ + { + "property-key": "p-interface.prov-status" + } + ] + }, + { + "related-to": "p-interface", + "relationship-label": "tosca.relationships.network.LinksTo", + "related-link": "/aai/v13/network/pnfs/pnf/pnf2000/p-interfaces/p-interface/nodeId-78.78.78.78-ltpId-4", + "relationship-data": [ + { + "relationship-key": "pnf.pnf-name", + "relationship-value": "pnf2000" + }, + { + "relationship-key": "p-interface.interface-name", + "relationship-value": "nodeId-78.78.78.78-ltpId-4" + } + ], + "related-to-property": [ + { + "property-key": "p-interface.prov-status" + } + ] + } + ] + } +} diff --git a/usecaseui-portal/src/app/mock/json/status.json b/usecaseui-portal/src/app/mock/json/status.json new file mode 100644 index 00000000..eeff6f35 --- /dev/null +++ b/usecaseui-portal/src/app/mock/json/status.json @@ -0,0 +1,3 @@ +{ + "status":"SUCCESS" +} diff --git a/usecaseui-portal/src/app/mock/json/status2.json b/usecaseui-portal/src/app/mock/json/status2.json new file mode 100644 index 00000000..2932063e --- /dev/null +++ b/usecaseui-portal/src/app/mock/json/status2.json @@ -0,0 +1,3 @@ +{ + "status": "fail" +}
\ No newline at end of file diff --git a/usecaseui-portal/src/app/mock/json/url.json b/usecaseui-portal/src/app/mock/json/url.json new file mode 100644 index 00000000..e84b42d8 --- /dev/null +++ b/usecaseui-portal/src/app/mock/json/url.json @@ -0,0 +1,8 @@ +{ + "esr-system-info-id": "gongjie666", + "service-url": "http://10.10.10.10:8080/", + "user-name": "demo", + "password": "demo123456!", + "system-type": "ONAP", + "resource-version": "1536221798873" +} diff --git a/usecaseui-portal/src/app/mock/json/vpnbinding.json b/usecaseui-portal/src/app/mock/json/vpnbinding.json new file mode 100644 index 00000000..04ff2a6d --- /dev/null +++ b/usecaseui-portal/src/app/mock/json/vpnbinding.json @@ -0,0 +1,82 @@ +{ + "vpn-binding": [ + { + "vpn-id": "pnf1000-vpn1", + "vpn-name": "pnf1000-vpn1", + "vpn-type": "ethernet", + "access-provider-id": "5555", + "access-client-id": "6666", + "access-topology-id": "100", + "src-access-node-id": "10.10.10.10", + "src-access-ltp-id": "14", + "dst-access-node-id": "10.10.10.10", + "dst-access-ltp-id": "2", + "operational-status": "Created", + "model-customization-id": "", + "model-invariant-id": "", + "model-version-id": "", + "resource-version": "1536135677693", + "relationship-list": { + "relationship": [ + { + "related-to": "connectivity", + "relationship-label": "org.onap.relationships.inventory.PartOf", + "related-link": "/aai/v13/network/connectivities/connectivity/4efe6dff-acfc-4d13-a3fd-1177d3c08e84", + "relationship-data": [ + { + "relationship-key": "connectivity.connectivity-id", + "relationship-value": "4efe6dff-acfc-4d13-a3fd-1177d3c08e84" + } + ], + "related-to-property": [ + { + "property-key": "connectivity.etht-svc-name", + "property-value": "SOTNVPNInfra" + } + ] + }, + { + "related-to": "p-interface", + "relationship-label": "org.onap.relationships.inventory.BindsTo", + "related-link": "/aai/v13/network/pnfs/pnf/pnf1000/p-interfaces/p-interface/nodeId-79.79.79.79-ltpId-2", + "relationship-data": [ + { + "relationship-key": "pnf.pnf-name", + "relationship-value": "pnf1000" + }, + { + "relationship-key": "p-interface.interface-name", + "relationship-value": "nodeId-79.79.79.79-ltpId-2" + } + ], + "related-to-property": [ + { + "property-key": "p-interface.prov-status" + } + ] + }, + { + "related-to": "p-interface", + "relationship-label": "org.onap.relationships.inventory.BindsTo", + "related-link": "/aai/v13/network/pnfs/pnf/pnf1000/p-interfaces/p-interface/nodeId-79.79.79.79-ltpId-1", + "relationship-data": [ + { + "relationship-key": "pnf.pnf-name", + "relationship-value": "pnf1000" + }, + { + "relationship-key": "p-interface.interface-name", + "relationship-value": "nodeId-79.79.79.79-ltpId-1" + } + ], + "related-to-property": [ + { + "property-key": "p-interface.prov-status" + } + ] + } + ] + } + } + ] +}
\ No newline at end of file diff --git a/usecaseui-portal/src/app/mock/json/xuran_test_data.json b/usecaseui-portal/src/app/mock/json/xuran_test_data.json new file mode 100644 index 00000000..1e6321b1 --- /dev/null +++ b/usecaseui-portal/src/app/mock/json/xuran_test_data.json @@ -0,0 +1,8 @@ +{ + "esr-system-info-id": "xuran", + "service-url": "http://10.10.10.10:8080/", + "user-name": "demo", + "password": "demo123456!", + "system-type": "ONAP", + "resource-version": "1536221798873" +}
\ No newline at end of file diff --git a/usecaseui-portal/src/app/mock/mock.js b/usecaseui-portal/src/app/mock/mock.js new file mode 100644 index 00000000..2864d4c5 --- /dev/null +++ b/usecaseui-portal/src/app/mock/mock.js @@ -0,0 +1,7 @@ +const fakeData = require('./fakedata.js'); +module.exports = { + //Mock json + 'customer_info': fakeData.customer, + 'alarm_formdata_multiple': fakeData, + 'home': fakeData.home, +}
\ No newline at end of file diff --git a/usecaseui-portal/src/app/mock/server.js b/usecaseui-portal/src/app/mock/server.js new file mode 100644 index 00000000..45d6b2b5 --- /dev/null +++ b/usecaseui-portal/src/app/mock/server.js @@ -0,0 +1,87 @@ +const jsonServer = require('json-server'); +const server = jsonServer.create(); +const middlewares = jsonServer.defaults(); + +// Set default middlewares (logger, static, cors and no-cache) +server.use(middlewares); + +// Get mock data +const fs = require('fs'); +const path = require('path'); + +let localJsonDb = {}; //import mock datas +const fakeoriginalData = require('./mock.js'); //import datas created in fakedata.js +const mockFolder = './src/app/mock/json'; //mock json path folder +const filePath = path.resolve(mockFolder); + +fileDisplay(filePath); + +function fileDisplay(filePath) { + let fileList = []; + let originPath = []; + let rewriter = {}; + // Return filelist on based of filePath + const files = fs.readdirSync(filePath); + files.forEach((filename) => { + // Get filename's absolute path + let filedir = path.join(filePath, filename); + // Get the file information according to the file path and return an fs.Stats object + fs.stat(filedir, (err, stats) => { + if (err) { + console.warn('Get files failed......'); + } else { + let isFile = stats.isFile(); // files + let isDir = stats.isDirectory(); //files folder + if (isFile) { + fileList.push(path.basename(filedir, '.json')); + fileList.forEach(item => { + let paser = item.split("_").join("/"); + originPath.push({ route: `/${paser}`, origin: `/${item}` }) + originPath.map(route => { + rewriter[route.route] = route.origin; + }) + localJsonDb[item] = getjsonContent(item); + }) + } + if (isDir) { + console.warn("=====> DO NOT support mock data in folder"); + fileDisplay(filedir); + } + Object.keys(fakeoriginalData).map(item => { + localJsonDb[item] = fakeoriginalData[item]; + }) + } + }) + }) + setTimeout(() => { + // console.log(rewriter, "===rewriter", localJsonDb, "===localJsonDb", fileList, "===fileList"); + // console.log(localJsonDb, "===localJsonDb"); + serverRewrite(rewriter); + runServer(localJsonDb); + }, 100) +} +function getjsonContent(path) { + let newpath = `./src/app/mock/json/${path}.json`; + let result = JSON.parse(fs.readFileSync(newpath)); + return result; +} + +//only multi router data needs jsonServer.rewriter +function serverRewrite(routerpath) { + let routerpathArr = routerpath; + //rewrite mock multiple routers here + Object.keys(fakeoriginalData).map(item => { + let newPath = item.split("_").join("/") + routerpathArr[`/${newPath}`] = `/${item}`; + }) + //start to rewrite routers + server.use(jsonServer.rewriter(routerpathArr)); +} + +function runServer(db) { + server.use(jsonServer.router(db)); +} + +server.listen(3004, () => { + console.log('Mock Server is successfully running on port 3004 😁') +}); diff --git a/usecaseui-portal/src/app/myhttp.service.ts b/usecaseui-portal/src/app/myhttp.service.ts index 778b739c..d85076fa 100644 --- a/usecaseui-portal/src/app/myhttp.service.ts +++ b/usecaseui-portal/src/app/myhttp.service.ts @@ -16,7 +16,7 @@ import { Injectable } from '@angular/core'; import { HttpClient, HttpHeaders, HttpParams, HttpResponse } from '@angular/common/http'; import { Observable } from 'rxjs/Observable'; -import { homeData, homeVmLineData, servicesSelectData, servicesTableData, creatensData, onboardTableData, onboardDataVNF, onboardDataPNF , baseUrl} from './dataInterface'; +import { homeData, homeVmLineData, servicesSelectData, servicesTableData, creatensData, onboardTableData, onboardDataVNF, onboardDataPNF, baseUrl } from './core/models/dataInterface'; @Injectable() export class MyhttpService { @@ -24,7 +24,7 @@ export class MyhttpService { constructor(private http: HttpClient) { } baseUrl = baseUrl.baseUrl; url = { - listSortMasters:this.baseUrl+"/listSortMasters", + listSortMasters: this.baseUrl + "/listSortMasters", customers: this.baseUrl + "/uui-lcm/customers", orchestrators: this.baseUrl + "/uui-lcm/orchestrators", serviceType: this.baseUrl + "/uui-lcm/customers/" + "*_*" + "/service-subscriptions", @@ -47,7 +47,7 @@ export class MyhttpService { nsProgress: this.baseUrl + "/uui-lcm/jobs/getNsLcmJobStatus/" + "*_*" + "?responseId=0&serviceInstanceId=", e2eScale: this.baseUrl + "/services/scaleServices/", e2e_nsdata: this.baseUrl + "/getServiceInstanceById/customerId/", - updateccvpn:this.baseUrl + "/uui-lcm/services/updateService/", + updateccvpn: this.baseUrl + "/uui-lcm/services/updateService/", //The following api is about ccvpn details topology allottedResource: this.baseUrl + "/uui-sotn/getAllottedResources", @@ -100,17 +100,17 @@ export class MyhttpService { inputs: "" }; return this.http.post<any>(this.url.nstemplateParameters, body); - }else if(type == "e2e"){ - let url = this.url.e2etemplateParameters.replace("*_*", template.uuid) + template.toscaModelURL; - return this.http.get<any>(url); - }else { - let body = { - csarId: template.uuid, - packageType: "Service", - inputs: "" - }; - let url = this.url.templateParameters.replace("*_*", template.uuid); - return this.http.post<any>(url, body); + } else if (type == "e2e") { + let url = this.url.e2etemplateParameters.replace("*_*", template.uuid) + template.toscaModelURL; + return this.http.get<any>(url); + } else { + let body = { + csarId: template.uuid, + packageType: "Service", + inputs: "" + }; + let url = this.url.templateParameters.replace("*_*", template.uuid); + return this.http.post<any>(url, body); } } @@ -135,8 +135,8 @@ export class MyhttpService { return this.http.post<any>(this.url.ns_createService2 + params, requestBody); } - updateccvpn(id,requestBody){ - return this.http.put<any>(this.url.updateccvpn + id,requestBody);// online + updateccvpn(id, requestBody) { + return this.http.put<any>(this.url.updateccvpn + id, requestBody);// online } // Delete interface deleteInstance(obj) { @@ -178,11 +178,11 @@ export class MyhttpService { // Query progress interface getProgress(obj) { - let url = this.url.progress.replace("*_*", obj.serviceId) + obj.operationId + "?operationType="+obj.operationType; + let url = this.url.progress.replace("*_*", obj.serviceId) + obj.operationId + "?operationType=" + obj.operationType; return this.http.get<any>(url); } - getNsProgress(jobid,serviceId,operationType){ - let url = this.url.nsProgress.replace("*_*",jobid) + serviceId + "&operationType="+operationType; + getNsProgress(jobid, serviceId, operationType) { + let url = this.url.nsProgress.replace("*_*", jobid) + serviceId + "&operationType=" + operationType; return this.http.get<any>(url); } diff --git a/usecaseui-portal/src/app/components/charts/bar/bar.component.html b/usecaseui-portal/src/app/shared/components/charts/bar/bar.component.html index 7c1eee6b..7c1eee6b 100644 --- a/usecaseui-portal/src/app/components/charts/bar/bar.component.html +++ b/usecaseui-portal/src/app/shared/components/charts/bar/bar.component.html diff --git a/usecaseui-portal/src/app/components/charts/bar/bar.component.less b/usecaseui-portal/src/app/shared/components/charts/bar/bar.component.less index e69de29b..e69de29b 100644 --- a/usecaseui-portal/src/app/components/charts/bar/bar.component.less +++ b/usecaseui-portal/src/app/shared/components/charts/bar/bar.component.less diff --git a/usecaseui-portal/src/app/components/charts/bar/bar.component.spec.ts b/usecaseui-portal/src/app/shared/components/charts/bar/bar.component.spec.ts index d979ffb6..d979ffb6 100644 --- a/usecaseui-portal/src/app/components/charts/bar/bar.component.spec.ts +++ b/usecaseui-portal/src/app/shared/components/charts/bar/bar.component.spec.ts diff --git a/usecaseui-portal/src/app/components/charts/bar/bar.component.ts b/usecaseui-portal/src/app/shared/components/charts/bar/bar.component.ts index 609ce3ee..609ce3ee 100644 --- a/usecaseui-portal/src/app/components/charts/bar/bar.component.ts +++ b/usecaseui-portal/src/app/shared/components/charts/bar/bar.component.ts diff --git a/usecaseui-portal/src/app/components/charts/line/line.component.html b/usecaseui-portal/src/app/shared/components/charts/line/line.component.html index e032eb27..e032eb27 100644 --- a/usecaseui-portal/src/app/components/charts/line/line.component.html +++ b/usecaseui-portal/src/app/shared/components/charts/line/line.component.html diff --git a/usecaseui-portal/src/app/components/charts/line/line.component.less b/usecaseui-portal/src/app/shared/components/charts/line/line.component.less index e69de29b..e69de29b 100644 --- a/usecaseui-portal/src/app/components/charts/line/line.component.less +++ b/usecaseui-portal/src/app/shared/components/charts/line/line.component.less diff --git a/usecaseui-portal/src/app/components/charts/line/line.component.spec.ts b/usecaseui-portal/src/app/shared/components/charts/line/line.component.spec.ts index afe70654..afe70654 100644 --- a/usecaseui-portal/src/app/components/charts/line/line.component.spec.ts +++ b/usecaseui-portal/src/app/shared/components/charts/line/line.component.spec.ts diff --git a/usecaseui-portal/src/app/components/charts/line/line.component.ts b/usecaseui-portal/src/app/shared/components/charts/line/line.component.ts index 25881699..25881699 100644 --- a/usecaseui-portal/src/app/components/charts/line/line.component.ts +++ b/usecaseui-portal/src/app/shared/components/charts/line/line.component.ts diff --git a/usecaseui-portal/src/app/components/charts/pie/pie.component.html b/usecaseui-portal/src/app/shared/components/charts/pie/pie.component.html index d063f22a..d063f22a 100644 --- a/usecaseui-portal/src/app/components/charts/pie/pie.component.html +++ b/usecaseui-portal/src/app/shared/components/charts/pie/pie.component.html diff --git a/usecaseui-portal/src/app/components/charts/pie/pie.component.less b/usecaseui-portal/src/app/shared/components/charts/pie/pie.component.less index e69de29b..e69de29b 100644 --- a/usecaseui-portal/src/app/components/charts/pie/pie.component.less +++ b/usecaseui-portal/src/app/shared/components/charts/pie/pie.component.less diff --git a/usecaseui-portal/src/app/components/charts/pie/pie.component.spec.ts b/usecaseui-portal/src/app/shared/components/charts/pie/pie.component.spec.ts index 528da25c..528da25c 100644 --- a/usecaseui-portal/src/app/components/charts/pie/pie.component.spec.ts +++ b/usecaseui-portal/src/app/shared/components/charts/pie/pie.component.spec.ts diff --git a/usecaseui-portal/src/app/components/charts/pie/pie.component.ts b/usecaseui-portal/src/app/shared/components/charts/pie/pie.component.ts index dc5c80a0..dc5c80a0 100644 --- a/usecaseui-portal/src/app/components/charts/pie/pie.component.ts +++ b/usecaseui-portal/src/app/shared/components/charts/pie/pie.component.ts diff --git a/usecaseui-portal/src/app/components/customer/customer.component.html b/usecaseui-portal/src/app/shared/components/customer/customer.component.html index 04975e41..08a23935 100644 --- a/usecaseui-portal/src/app/components/customer/customer.component.html +++ b/usecaseui-portal/src/app/shared/components/customer/customer.component.html @@ -14,38 +14,45 @@ limitations under the License. --> <div class="content"> - <div class="chearts"> - <div class="Cu"> - <p> {{"i18nTextDefine_Instance_Count_of_Customer" | translate}} </p> - <app-pie [initData]="CUChartInit" [chartData]="CUChartData" *ngIf="serviceChart"></app-pie> - <div *ngIf="!serviceChart" style="color: #ddd; font-weight: 700;font-size: 19px;height: 200px;text-align: center;line-height: 8;">No Service Instances </div> - <!-- <div class="legend"></div><span> {{"i18nTextDefine_users" | translate}} </span> --> - </div> - <div class="type"> - <p> {{"i18nTextDefine_Instance_Count_of_ServiceType" | translate}} </p> - <app-bar [initData]="serviceInit" [chartData]="serviceData"></app-bar> - <div class="footname" style="width: 100%;height: 40px;line-height: 40px;text-align: center;color: #3C4F8C;"> - <img src="./assets/images/customerBarUser.png" alt="customerName" style="margin-right: 5px;margin-bottom: 3px;"> - {{this.serviceInit["customer"]}} - </div> - </div> + <div class="chearts"> + <div class="Cu"> + <p> {{"i18nTextDefine_Instance_Count_of_Customer" | translate}} </p> + <app-pie [initData]="CUChartInit" [chartData]="CUChartData" *ngIf="serviceChart"></app-pie> + <div *ngIf="!serviceChart" + style="color: #ddd; font-weight: 700;font-size: 19px;height: 200px;text-align: center;line-height: 8;">No + Service Instances </div> + <!-- <div class="legend"></div><span> {{"i18nTextDefine_users" | translate}} </span> --> + </div> + <div class="type"> + <p> {{"i18nTextDefine_Instance_Count_of_ServiceType" | translate}} </p> + <app-bar [initData]="serviceInit" [chartData]="serviceData"></app-bar> + <div class="footname" style="width: 100%;height: 40px;line-height: 40px;text-align: center;color: #3C4F8C;"> + <img src="../../../../assets/images/customerBarUser.png" alt="customerName" + style="margin-right: 5px;margin-bottom: 3px;"> + {{this.serviceInit["customer"]}} </div> + </div> + </div> <div class="customer"> <div class="customer_title"> <div class="customers"> <span> {{"i18nTextDefine_Customer" | translate}} </span> - <img src="./assets/images/customer04.png" alt="" (click)="this.customeradd = !this.customeradd" style="cursor: pointer"> + <img src="../../../../assets/images/customer04.png" alt="" (click)="this.customeradd = !this.customeradd" + style="cursor: pointer"> </div> </div> <div class="customer_detail"> <div class="customer_add" *ngIf="customeradd"> - <input nz-input placeholder=" {{'i18nTextDefine_Input_customerName' | translate}} " class="customer_name" nzSize="default" [(ngModel)]="addNewCustomer"> - <button nz-button nzType="primary" class="customer_addbut" (click) = "createNewCustomer(notificationModel)">{{"i18nTextDefine_Add" | translate}}</button> + <input nz-input placeholder=" {{'i18nTextDefine_Input_customerName' | translate}} " class="customer_name" + nzSize="default" [(ngModel)]="addNewCustomer"> + <button nz-button nzType="primary" class="customer_addbut" + (click)="createNewCustomer(notificationModel)">{{"i18nTextDefine_Add" | translate}}</button> </div> <div class="customer_list"> <ul> - <li *ngFor ="let item of AllCustomersdata,let i = index" [ngClass]="{active: chose ==i}" (click)="choseCustomer(i,item)"> - <img src="./assets/images/customer05.png" alt=""> + <li *ngFor="let item of AllCustomersdata,let i = index" [ngClass]="{active: chose ==i}" + (click)="choseCustomer(i,item)"> + <img src="../../../../assets/images/customer05.png" alt=""> <span>{{item.name}}</span> <i class="anticon anticon-delete" nzType="info" (click)="deleteCustomerModel(item)"></i> </li> @@ -57,30 +64,34 @@ <div class="services_type_title"> <div class="servicess"> <span> {{"i18nTextDefine_ServiceType" | translate}} </span> - <img src="./assets/images/customer03.png" alt="" (click)="this.servicesadd = !this.servicesadd " style="cursor: pointer"> + <img src="../../../../assets/images/customer03.png" alt="" (click)="this.servicesadd = !this.servicesadd " + style="cursor: pointer"> </div> </div> <div class="services_type_detail"> <div class="services_add" *ngIf="servicesadd"> - <input nz-input placeholder=" {{'i18nTextDefine_Input_ServicesType' | translate}} " class="services_name" nzSize="default" [(ngModel)]="addNewServiceType"> - <button nz-button nzType="primary" class="services_addbut" (click) = "createNewServiceType(notificationModel)">{{"i18nTextDefine_Add" | translate}}</button> + <input nz-input placeholder=" {{'i18nTextDefine_Input_ServicesType' | translate}} " class="services_name" + nzSize="default" [(ngModel)]="addNewServiceType"> + <button nz-button nzType="primary" class="services_addbut" + (click)="createNewServiceType(notificationModel)">{{"i18nTextDefine_Add" | translate}}</button> </div> <div class="services_list"> <div class="border_size"></div> <div style="padding:0 20px;"> - <ul> - <li *ngFor = "let item of AllServiceTypes" > - <span>{{item.type}}</span> - <i class="anticon anticon-delete" nzType="info" (click)="deleteServiceTypeModel(item)"></i> - </li> - </ul> + <ul> + <li *ngFor="let item of AllServiceTypes"> + <span>{{item.type}}</span> + <i class="anticon anticon-delete" nzType="info" (click)="deleteServiceTypeModel(item)"></i> + </li> + </ul> </div> </div> </div> </div> - <nz-modal nzWidth="428" [(nzVisible)]="deleteCustomerModelVisible" nzTitle=" {{'i18nTextDefine_delete' | translate}} " (nzOnCancel)="deleteCustomerCancel()" - (nzOnOk)="deleteCustomerOk(notificationModel)" nzClassName="deleteModel" nzCancelText=" {{'i18nTextDefine_Cancel' | translate}} " nzOkText=" {{'i18nTextDefine_modelOk' | translate}} "> + <nz-modal nzWidth="428" [(nzVisible)]="deleteCustomerModelVisible" nzTitle=" {{'i18nTextDefine_delete' | translate}} " + (nzOnCancel)="deleteCustomerCancel()" (nzOnOk)="deleteCustomerOk(notificationModel)" nzClassName="deleteModel" + nzCancelText=" {{'i18nTextDefine_Cancel' | translate}} " nzOkText=" {{'i18nTextDefine_modelOk' | translate}} "> <h3><span style="color: red">* </span> {{"i18nTextDefine_Input_Sure_deleteCustomer" | translate}} </h3> <div class="question"> <h4> {{"i18nTextDefine_CustomerName" | translate}} :</h4> @@ -91,8 +102,10 @@ <div class="deleteModelContent">{{thisdeleteCustomer["id"]}}</div> </div> </nz-modal> - <nz-modal nzWidth="428" [(nzVisible)]="deleteServiceTypeModelVisible" nzTitle=" {{'i18nTextDefine_delete' | translate}} " (nzOnCancel)="deleteServiceTypeCancel()" - (nzOnOk)="deleteServiceTypeOk(notificationModel)" nzClassName="deleteModel deleteServiceTypeModel" nzCancelText=" {{'i18nTextDefine_Cancel' | translate}} " nzOkText=" {{'i18nTextDefine_modelOk' | translate}} "> + <nz-modal nzWidth="428" [(nzVisible)]="deleteServiceTypeModelVisible" + nzTitle=" {{'i18nTextDefine_delete' | translate}} " (nzOnCancel)="deleteServiceTypeCancel()" + (nzOnOk)="deleteServiceTypeOk(notificationModel)" nzClassName="deleteModel deleteServiceTypeModel" + nzCancelText=" {{'i18nTextDefine_Cancel' | translate}} " nzOkText=" {{'i18nTextDefine_modelOk' | translate}} "> <h3><span style="color: red">* </span> {{"i18nTextDefine_Input_Sure_deleteServiceType" | translate}} </h3> <div class="question"> <h4> {{"i18nTextDefine_CustomerName" | translate}} :</h4> @@ -108,12 +121,12 @@ </div> </nz-modal> <!--2019.08.14 add notification--> - <ng-template #notificationModel > + <ng-template #notificationModel> <div class="ant-notification-notice-content"> <div class="ant-notification-notice-with-icon"> - <span class="ant-notification-notice-icon"> - <img src="{{this.notificationAttributes.imgPath}}" alt="{{notificationAttributes.status}}"> - </span> + <span class="ant-notification-notice-icon"> + <img src="{{this.notificationAttributes.imgPath}}" alt="{{notificationAttributes.status}}"> + </span> <div class="ant-notification-notice-message" *ngIf="notificationAttributes.title == 'Customer'"> {{"i18nTextDefine_"+notificationAttributes.title | translate}} {{"i18nTextDefine_"+notificationAttributes.action | translate}} {{"i18nTextDefine_"+notificationAttributes.status | translate}} diff --git a/usecaseui-portal/src/app/components/customer/customer.component.less b/usecaseui-portal/src/app/shared/components/customer/customer.component.less index 7d329230..7d329230 100644 --- a/usecaseui-portal/src/app/components/customer/customer.component.less +++ b/usecaseui-portal/src/app/shared/components/customer/customer.component.less diff --git a/usecaseui-portal/src/app/components/customer/customer.component.spec.ts b/usecaseui-portal/src/app/shared/components/customer/customer.component.spec.ts index f185e7a7..f185e7a7 100644 --- a/usecaseui-portal/src/app/components/customer/customer.component.spec.ts +++ b/usecaseui-portal/src/app/shared/components/customer/customer.component.spec.ts diff --git a/usecaseui-portal/src/app/components/customer/customer.component.ts b/usecaseui-portal/src/app/shared/components/customer/customer.component.ts index d4d843ff..a0cf8338 100644 --- a/usecaseui-portal/src/app/components/customer/customer.component.ts +++ b/usecaseui-portal/src/app/shared/components/customer/customer.component.ts @@ -13,17 +13,17 @@ See the License for the specific language governing permissions and limitations under the License. */ -import {Component, OnInit, TemplateRef} from '@angular/core'; -import { ManagemencsService } from '../../managemencs.service'; +import { Component, OnInit, TemplateRef } from '@angular/core'; +import { ManagemencsService } from '../../../core/services/managemencs.service'; import { NzNotificationService } from 'ng-zorro-antd'; @Component({ - selector: 'app-customer', - templateUrl: './customer.component.html', - styleUrls: ['./customer.component.less'] + selector: 'app-customer', + templateUrl: './customer.component.html', + styleUrls: ['./customer.component.less'] }) export class CustomerComponent implements OnInit { - public chose = ''; - + public chose = ''; + constructor( private managemencs: ManagemencsService, private notification: NzNotificationService @@ -40,8 +40,8 @@ export class CustomerComponent implements OnInit { // Get all customers active; selectCustomer = { - name:null, - id:null + name: null, + id: null }; addNewCustomer = null; addNewServiceType = null; @@ -49,30 +49,30 @@ export class CustomerComponent implements OnInit { deleteServiceTypeModelVisible = false; //2019.08.14 add notificationAttributes = { - "title":"Customer", - "imgPath":"../../../../assets/images/execute-inproess.png", - "action":"Create", - "status":"InProgress", - "name":"" + "title": "Customer", + "imgPath": "../../../../assets/images/execute-inproess.png", + "action": "Create", + "status": "InProgress", + "name": "" }; notificationModelShow(template: TemplateRef<{}>): void { - console.log(this.notificationAttributes,"notificationModelShow show"); + console.log(this.notificationAttributes, "notificationModelShow show"); this.notification.template(template); } - notificationSuccess(notificationModel){ - this.notificationAttributes.imgPath = "../../../assets/images/execute-success.png"; + notificationSuccess(notificationModel) { + this.notificationAttributes.imgPath = "../../../../assets/images/execute-success.png"; this.notificationAttributes.status = "Success"; this.notificationModelShow(notificationModel); } - notificationFailed(notificationModel){ - this.notificationAttributes.imgPath = "../../../assets/images/execute-faild.png"; + notificationFailed(notificationModel) { + this.notificationAttributes.imgPath = "../../../../assets/images/execute-faild.png"; this.notificationAttributes.status = "Failed"; this.notificationModelShow(notificationModel); } getAllCustomers() { this.managemencs.getAllCustomers().subscribe((data) => { this.AllCustomersdata = data.map((item) => { - return {name: item["subscriber-name"], id: item["global-customer-id"]} + return { name: item["subscriber-name"], id: item["global-customer-id"] } }); this.active = this.selectCustomer = this.AllCustomersdata[0]; this.serviceInit["customer"] = this.AllCustomersdata[0].name; @@ -87,7 +87,7 @@ export class CustomerComponent implements OnInit { getServiceTypes(item) { this.managemencs.getServiceTypes(item).subscribe((data) => { this.AllServiceTypes = data.map((item) => { - return {type: item["service-type"], id: item["global-customer-id"]} + return { type: item["service-type"], id: item["global-customer-id"] } }); }) } @@ -139,7 +139,7 @@ export class CustomerComponent implements OnInit { }, labelLine: { normal: { - show: false + show: false } }, itemStyle: { @@ -174,19 +174,19 @@ export class CustomerComponent implements OnInit { // get customers chart pie Pie_name = []; Pie_value = []; - serviceChart=true; + serviceChart = true; serviceNumber; getCustomersPie() { this.managemencs.getCustomersPie().subscribe((data) => { this.serviceNumber = data.serviceTotalNum; - if (this.serviceNumber>0) { - this.serviceChart = true; - } else { - this.serviceChart = false; - } + if (this.serviceNumber > 0) { + this.serviceChart = true; + } else { + this.serviceChart = false; + } this.CUChartData = { series: [{ - data:data.customerServiceList + data: data.customerServiceList }] } console.log(this.CUChartData) @@ -387,21 +387,21 @@ export class CustomerComponent implements OnInit { createNewCustomer(notificationModel) { let createParams = { customerId: this.addNewCustomer, - 'global-customer-id':this.addNewCustomer, - 'subscriber-name':this.addNewCustomer, - 'subscriber-type':'INFRA' + 'global-customer-id': this.addNewCustomer, + 'subscriber-name': this.addNewCustomer, + 'subscriber-type': 'INFRA' }; - this.notificationAttributes = { - "title":"Customer", - "imgPath":"../../../../assets/images/execute-inproess.png", - "action":"Create", - "status":"InProgress", - "name":this.addNewCustomer + this.notificationAttributes = { + "title": "Customer", + "imgPath": "../../../../assets/images/execute-inproess.png", + "action": "Create", + "status": "InProgress", + "name": this.addNewCustomer }; this.notificationModelShow(notificationModel); this.managemencs.createCustomer(this.addNewCustomer, createParams).subscribe((data) => { if (data["status"] == 'SUCCESS') { - this.notificationSuccess(notificationModel); + this.notificationSuccess(notificationModel); this.getAllCustomers(); console.log(data, "Interface returned success") } else { @@ -412,10 +412,10 @@ export class CustomerComponent implements OnInit { } // Customer delete model - thisdeleteCustomer={ - name:null, - id:null - }; + thisdeleteCustomer = { + name: null, + id: null + }; deleteCustomerModel(itemCustomer) { this.thisdeleteCustomer = itemCustomer; this.deleteCustomerModelVisible = true; @@ -425,31 +425,31 @@ export class CustomerComponent implements OnInit { } deleteCustomerOk(notificationModel) { this.deleteCustomerModelVisible = false; - this.getCustomerVersion(this.thisdeleteCustomer,notificationModel); + this.getCustomerVersion(this.thisdeleteCustomer, notificationModel); this.notificationAttributes = { - "title":"Customer", - "imgPath":"../../../../assets/images/execute-inproess.png", - "action":"delete", - "status":"InProgress", - "name":this.thisdeleteCustomer.name + "title": "Customer", + "imgPath": "../../../../assets/images/execute-inproess.png", + "action": "delete", + "status": "InProgress", + "name": this.thisdeleteCustomer.name }; this.notificationModelShow(notificationModel); } - getCustomerVersion(thisdeleteCustomer,notificationModel){ + getCustomerVersion(thisdeleteCustomer, notificationModel) { this.managemencs.getdeleteCustomerVersion(thisdeleteCustomer).subscribe((data) => { if (data["status"] == 'SUCCESS') { let params = { - customerId:thisdeleteCustomer.id, - version:data["result"]["resource-version"] + customerId: thisdeleteCustomer.id, + version: data["result"]["resource-version"] }; - this.deleteCustomer(params,notificationModel); + this.deleteCustomer(params, notificationModel); console.log(data, "Interface returned success") } else { console.log(data, "Interface returned error") } }) } - deleteCustomer(params,notificationModel){ + deleteCustomer(params, notificationModel) { this.managemencs.deleteSelectCustomer(params).subscribe((data) => { if (data["status"] == 'SUCCESS') { this.notificationSuccess(notificationModel); @@ -466,17 +466,17 @@ export class CustomerComponent implements OnInit { let createParams = { customer: this.selectCustomer, ServiceType: this.addNewServiceType, - "service-type":this.addNewServiceType, - "temp-ub-sub-account-id":"sotnaccount" + "service-type": this.addNewServiceType, + "temp-ub-sub-account-id": "sotnaccount" }; - this.notificationAttributes = { - "title":"ServiceType", - "imgPath":"../../../../assets/images/execute-inproess.png", - "action":"Create", - "status":"InProgress", - "name":this.addNewServiceType + this.notificationAttributes = { + "title": "ServiceType", + "imgPath": "../../../../assets/images/execute-inproess.png", + "action": "Create", + "status": "InProgress", + "name": this.addNewServiceType }; - this.notificationModelShow(notificationModel); + this.notificationModelShow(notificationModel); this.managemencs.createServiceType(createParams).subscribe((data) => { if (data["status"] == 'SUCCESS') { this.notificationSuccess(notificationModel); @@ -491,8 +491,8 @@ export class CustomerComponent implements OnInit { } // ServiceType delete model - thisdeleteServiceType={ - type:null + thisdeleteServiceType = { + type: null }; deleteServiceTypeModel(itemServiceType) { this.thisdeleteServiceType = itemServiceType; @@ -510,39 +510,39 @@ export class CustomerComponent implements OnInit { customerId: this.selectCustomer, ServiceType: this.thisdeleteServiceType["type"] }; - this.notificationAttributes = { - "title":"ServiceType", - "imgPath":"../../../../assets/images/execute-inproess.png", - "action":"delete", - "status":"InProgress", - "name":this.thisdeleteServiceType["type"] + this.notificationAttributes = { + "title": "ServiceType", + "imgPath": "../../../../assets/images/execute-inproess.png", + "action": "delete", + "status": "InProgress", + "name": this.thisdeleteServiceType["type"] }; this.notificationModelShow(notificationModel); this.managemencs.getdeleteServiceTypeVersion(paramss).subscribe((data) => { console.log(data) if (data["status"] == 'SUCCESS') { let params = { - customerId:this.selectCustomer, - ServiceType:this.thisdeleteServiceType["type"], - version:data["result"]["resource-version"] + customerId: this.selectCustomer, + ServiceType: this.thisdeleteServiceType["type"], + version: data["result"]["resource-version"] }; - this.deleteServiceType(params,notificationModel); + this.deleteServiceType(params, notificationModel); console.log(data, "Interface returned success") } else { console.log(data, "Interface returned error") } }) } - deleteServiceType(params,notificationModel){ + deleteServiceType(params, notificationModel) { this.managemencs.deleteSelectServiceType(params).subscribe((data) => { if (data["status"] == 'SUCCESS') { - this.notificationSuccess(notificationModel); + this.notificationSuccess(notificationModel); this.getServiceTypes(params.customerId); this.getCustomersColumn(params.customerId); this.getAllCustomers(); console.log(data, "Interface returned success") } else { - this.notificationFailed(notificationModel); + this.notificationFailed(notificationModel); console.log(data, "Interface returned error") } }) diff --git a/usecaseui-portal/src/app/components/details/details.component.css b/usecaseui-portal/src/app/shared/components/details/details.component.css index 0b5493d7..ec6bd37f 100644 --- a/usecaseui-portal/src/app/components/details/details.component.css +++ b/usecaseui-portal/src/app/shared/components/details/details.component.css @@ -40,7 +40,7 @@ width: 60px; height: 10px; transform: translate(-30px, 0); - background: url(../../../assets/images/tildeimg.png) no-repeat center center; + background: url(../../../../assets/images/tildeimg.png) no-repeat center center; background-color: #fff; } .content .header .headerlist { @@ -80,17 +80,17 @@ outline: none; cursor: pointer; background-color: #fff; - background: url(../../../assets/images/open-close2.png) no-repeat center -22px; + background: url(../../../../assets/images/open-close2.png) no-repeat center -22px; } .content button:hover { - background: url(../../../assets/images/open-close2.png) no-repeat center -66px; + background: url(../../../../assets/images/open-close2.png) no-repeat center -66px; } .content .buttonActive { transform: translate(-44px, -22px); - background: url(../../../assets/images/open-close2.png) no-repeat center 0px; + background: url(../../../../assets/images/open-close2.png) no-repeat center 0px; } .content .buttonActive:hover { - background: url(../../../assets/images/open-close2.png) no-repeat center -44px; + background: url(../../../../assets/images/open-close2.png) no-repeat center -44px; } .content h2.detailtitle { font: 700 24px/18px 'Times New Roman'; diff --git a/usecaseui-portal/src/app/components/details/details.component.html b/usecaseui-portal/src/app/shared/components/details/details.component.html index 62770b60..62770b60 100644 --- a/usecaseui-portal/src/app/components/details/details.component.html +++ b/usecaseui-portal/src/app/shared/components/details/details.component.html diff --git a/usecaseui-portal/src/app/components/details/details.component.less b/usecaseui-portal/src/app/shared/components/details/details.component.less index a27357ef..c27bfd01 100644 --- a/usecaseui-portal/src/app/components/details/details.component.less +++ b/usecaseui-portal/src/app/shared/components/details/details.component.less @@ -41,7 +41,7 @@ width: 60px; height: 10px; transform: translate(-30px,0); - background: url(../../../assets/images/tildeimg.png) no-repeat center center; + background: url(../../../../assets/images/tildeimg.png) no-repeat center center; background-color: #fff; } .headerlist { @@ -82,16 +82,16 @@ outline: none; cursor: pointer; background-color: #fff; - background: url(../../../assets/images/open-close2.png) no-repeat center -22px; + background: url(../../../../assets/images/open-close2.png) no-repeat center -22px; &:hover { - background: url(../../../assets/images/open-close2.png) no-repeat center -66px; + background: url(../../../../assets/images/open-close2.png) no-repeat center -66px; } } .buttonActive { transform: translate(-44px,-22px); - background: url(../../../assets/images/open-close2.png) no-repeat center -0px; + background: url(../../../../assets/images/open-close2.png) no-repeat center -0px; &:hover { - background: url(../../../assets/images/open-close2.png) no-repeat center -44px; + background: url(../../../../assets/images/open-close2.png) no-repeat center -44px; } } h2.detailtitle { @@ -105,7 +105,4 @@ // transition: all 0.3s linear; overflow: hidden; } - .detailshow { - - } }
\ No newline at end of file diff --git a/usecaseui-portal/src/app/components/details/details.component.spec.ts b/usecaseui-portal/src/app/shared/components/details/details.component.spec.ts index 1d5cbeb8..1d5cbeb8 100644 --- a/usecaseui-portal/src/app/components/details/details.component.spec.ts +++ b/usecaseui-portal/src/app/shared/components/details/details.component.spec.ts diff --git a/usecaseui-portal/src/app/components/details/details.component.ts b/usecaseui-portal/src/app/shared/components/details/details.component.ts index 5eed3daf..dea6caaa 100644 --- a/usecaseui-portal/src/app/components/details/details.component.ts +++ b/usecaseui-portal/src/app/shared/components/details/details.component.ts @@ -14,8 +14,8 @@ limitations under the License. */ import { Component, OnInit, Input } from '@angular/core'; -import { slideUpDown } from '../../animates'; -import { HomesService } from '../../homes.service'; +import { slideUpDown } from '../../../animates'; +import { HomesService } from '../../../core/services/homes.service'; @Component({ selector: 'app-details', diff --git a/usecaseui-portal/src/app/components/e2e-creation/e2e-creation.component.css b/usecaseui-portal/src/app/shared/components/e2e-creation/e2e-creation.component.css index 5dce6c92..5dce6c92 100644 --- a/usecaseui-portal/src/app/components/e2e-creation/e2e-creation.component.css +++ b/usecaseui-portal/src/app/shared/components/e2e-creation/e2e-creation.component.css diff --git a/usecaseui-portal/src/app/components/e2e-creation/e2e-creation.component.html b/usecaseui-portal/src/app/shared/components/e2e-creation/e2e-creation.component.html index 49cba838..da673bf0 100644 --- a/usecaseui-portal/src/app/components/e2e-creation/e2e-creation.component.html +++ b/usecaseui-portal/src/app/shared/components/e2e-creation/e2e-creation.component.html @@ -13,6 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. --> +<!--<h3 class="title"> Services List </h3>--> <div class="model creation-model"> <!-- Create data --> <div class="top-title"> diff --git a/usecaseui-portal/src/app/components/e2e-creation/e2e-creation.component.less b/usecaseui-portal/src/app/shared/components/e2e-creation/e2e-creation.component.less index 35b91799..edbd2db0 100644 --- a/usecaseui-portal/src/app/components/e2e-creation/e2e-creation.component.less +++ b/usecaseui-portal/src/app/shared/components/e2e-creation/e2e-creation.component.less @@ -59,14 +59,14 @@ hr { display: inline-block; width: 35px; height: 35px; - background:url("../../../assets/images/Return-icon.png") no-repeat!important; + background:url("../../../../assets/images/Return-icon.png") no-repeat!important; background-size: 100%!important; border-radius:4px; color: #D7D7D7; cursor: pointer; } .back:hover{ - background: url("../../../assets/images/Return-icon-active.png")!important; + background: url("../../../../assets/images/Return-icon-active.png")!important; background-size: 100%!important; } .top-title h3.title { diff --git a/usecaseui-portal/src/app/components/e2e-creation/e2e-creation.component.spec.ts b/usecaseui-portal/src/app/shared/components/e2e-creation/e2e-creation.component.spec.ts index de00c43f..de00c43f 100644 --- a/usecaseui-portal/src/app/components/e2e-creation/e2e-creation.component.spec.ts +++ b/usecaseui-portal/src/app/shared/components/e2e-creation/e2e-creation.component.spec.ts diff --git a/usecaseui-portal/src/app/shared/components/e2e-creation/e2e-creation.component.ts b/usecaseui-portal/src/app/shared/components/e2e-creation/e2e-creation.component.ts new file mode 100644 index 00000000..068fb039 --- /dev/null +++ b/usecaseui-portal/src/app/shared/components/e2e-creation/e2e-creation.component.ts @@ -0,0 +1,357 @@ +/* + Copyright (C) 2019 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 '../../../core/services/myhttp.service'; +import * as d3 from 'd3'; + +@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.gete2eTemParameters(this.e2e_ns_temParametersContent); + this.getVimInfo(); + this.getSdnControllers(); + console.log(this.createParams); + } + + @Output() e2eCloseCreate = new EventEmitter(); + @Output() nsCloseCreate = new EventEmitter(); + @Input() createParams; + @Input() e2e_ns_temParametersContent; + + + // e2e serviceTemplateParameters + templateParameters = { + invariantUUID: "", + uuid: "", + name: "", + type: "", + version: "", + description: "", + category: "", + subcategory: "", + customizationUuid: "", + inputs: [], + nestedTemplates: [] + }; + // ns serviceTemplateParameters + nsTemplateParameters = { + inputs: {}, + inputs2: [], + vnfs: [] + } + roote2e = { + "name": "e2e", + "type": "e2e", + "children": [] + }; + + rootns = { + "name": "ns", + "type": "ns", + "children": [] + }; + + imgmap = { + '1': '../../../../assets/images/create-e2e.png', + '2': '../../../../assets/images/create-ns.png', + '3': '../../../../assets/images/create-vnf.png', + }; + gete2eTemParameters(data) { //Get template parameters + let type = this.createParams.commonParams.templateType == "E2E Service" ? "e2e" : "ns"; + 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" }); + }) + this.templateParameters.nestedTemplates.map((item, index) => { + let nsIndex = { + "name": "ns", + "type": "ns", + "children": [] + }; + nsIndex.children = item.nestedTemplates.map((item, index) => { + return { + "name": "vnf", + "type": "vnf", + } + }); + this.roote2e.children.push(nsIndex); + }); + console.log(this.templateParameters); + console.log(this.roote2e) + } else if (type == "ns") { + if (data["model"] != undefined && typeof data["model"] == 'string') { + this.nsTemplateParameters = JSON.parse(data["model"]); + console.log(data["model"]); + } else { + this.nsTemplateParameters = data; + } + console.log(this.nsTemplateParameters); + 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 }) + } + this.rootns.children = this.nsTemplateParameters.vnfs.map((item, index) => { + return { + "name": "vnf", + "type": "vnf", + } + }); + console.log(this.nsTemplateParameters); + } + + this.drawImage(type) + + } + 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: "", + COS: "", + EBS: "", + 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((ipnut) => { + this.service.parameters.requestInputs[ipnut.name] = ipnut.value == undefined ? ipnut.defaultValue : ipnut.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: { + cloudOwner: input.value.name, + cloudRegionId: input.value.id + } + } + nsService.parameters.locationConstraints.push(location); + } else { + nsService.parameters.requestInputs[input.name] = input.value == undefined ? input.defaultValue : input.value; + } + }) + this.service.parameters.resources.push(nsService); + }) + console.log(this.service) + this.service.parameters.requestInputs['orchestrator'] = this.createParams.orchestrator.name; + if (this.createParams.isSol005Interface) { + this.service.parameters.requestInputs['isSol005Interface'] = this.createParams.isSol005Interface; + } + this.e2eCloseCreate.emit({ service: 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.properties.id, + locationConstraints: { + cloudOwner: vnf.value.name, + cloudRegionId: vnf.value.id + } + } + 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(); + } + + + + drawImage(type) { + if (type == "e2e") { + this.render(this.roote2e, this.imgmap) + } else if (type == "ns") { + this.render(this.rootns, this.imgmap) + } + + + } + + render(data, imgmap) { + var width = document.getElementById("createChart").clientWidth, + height = document.getElementById("createChart").clientHeight; + var cluster = d3.layout.tree() + .size([width, height]); + var diagonal = d3.svg.diagonal() + .projection(function (d) { + return [d.x - 18, d.y + 40]; + }); + var svg = d3.select("svg"); + + //marker + var marker = + svg.append("marker") + .attr("id", "resolved") + .attr("markerUnits", "strokeWidth") + .attr("markerUnits", "userSpaceOnUse") + .attr("viewBox", "0 -5 10 10") + .attr("refX", 22) + .attr("refY", 0) + .attr("markerWidth", 20) + .attr("markerHeight", 20) + .attr("orient", "auto") + .attr("stroke-width", 1) + .append("circle") + .attr("cx", 5) + .attr("cy", 0) + .attr("r", 2) + .attr("stroke-width", 1) + .style("stroke", "#2F8BF7") + .attr('fill', 'white'); + var i = 0; + var nodes = cluster.nodes(data).reverse(); + nodes.forEach(function (d) { + d.y = d.depth * 200 + 100; + + }); + + var links = cluster.links(nodes); + + var linkEnter = svg.selectAll("path.link") + .data(links); + + linkEnter.enter().append("path") + .attr("class", "link") + .attr("d", diagonal) + .style("stroke", "#2F8BF7") + .style('stroke-width', '1px') + .attr("marker-end", "url(#resolved)") + .style("fill", "none") + // .style("fill-opacity", 1) + .attr("id", function (d, i) { + return "mypath" + i; + }); + + var node = svg.selectAll(".node") + .data(nodes) + .enter() + .append("g") + .attr("class", "node") + .attr("transform", function (d) { + return "translate(" + (d.x + -50) + "," + (d.y) + ")"; + }); + + node.append('image') + .attr('xlink:href', function (d) { + if (d.type == "e2e") { + return imgmap[1]; + } else if (d.type == "ns") { + return imgmap[2]; + } else if (d.type == "vnf") { + return imgmap[3]; + } + + }) + .style('width', '12%') + .style("cursor", "pointer") + .attr("x", 0) + .attr("y", 0) + .attr("rx", 3); + + + } + +} diff --git a/usecaseui-portal/src/app/components/e2e-detail/e2e-detail.component.html b/usecaseui-portal/src/app/shared/components/e2e-detail/e2e-detail.component.html index 0a753a30..c0953a90 100644 --- a/usecaseui-portal/src/app/components/e2e-detail/e2e-detail.component.html +++ b/usecaseui-portal/src/app/shared/components/e2e-detail/e2e-detail.component.html @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. --> - +<!--<h3 class="title"> Services List </h3>--> <div class="model creation-model"> <div class="top-title"> @@ -23,7 +23,6 @@ </div> </div> <div class="detaildata fl"> - <!--e2e detail data demonstration--> <div *ngIf="detailParams.serviceDomain == 'E2E Service'" class="baseparms clearfix"> <div class="vnf-box"> <h3> {{"i18nTextDefine_Base" | translate}} </h3> @@ -57,7 +56,7 @@ </ul> </div> </div> - <!--e2e detail data demonstration--> + <div *ngIf="detailParams.serviceDomain=='Network Service'" class="baseparms clearfix"> <div class="vnf-box"> <h3> {{"i18nTextDefine_Base" | translate}} </h3> @@ -94,7 +93,7 @@ </div> </div> - <!--topo chart --> + <!-- chart --> <div class="chart fr"> <div id="createChart"> <svg width="100%" height="100%"> diff --git a/usecaseui-portal/src/app/components/e2e-detail/e2e-detail.component.less b/usecaseui-portal/src/app/shared/components/e2e-detail/e2e-detail.component.less index 3f03af34..e560cd9b 100644 --- a/usecaseui-portal/src/app/components/e2e-detail/e2e-detail.component.less +++ b/usecaseui-portal/src/app/shared/components/e2e-detail/e2e-detail.component.less @@ -45,14 +45,14 @@ hr { display: inline-block; width: 35px; height: 35px; - background:url("../../../assets/images/Return-icon.png") no-repeat!important; + background:url("../../../../assets/images/Return-icon.png") no-repeat!important; background-size: 100%!important; border-radius:4px; color: #D7D7D7; cursor: pointer; } .back:hover{ - background: url("../../../assets/images/Return-icon-active.png")!important; + background: url("../../../../assets/images/Return-icon-active.png")!important; background-size: 100%!important; } .top-title h3.title { diff --git a/usecaseui-portal/src/app/components/e2e-detail/e2e-detail.component.spec.ts b/usecaseui-portal/src/app/shared/components/e2e-detail/e2e-detail.component.spec.ts index ad24a477..ad24a477 100644 --- a/usecaseui-portal/src/app/components/e2e-detail/e2e-detail.component.spec.ts +++ b/usecaseui-portal/src/app/shared/components/e2e-detail/e2e-detail.component.spec.ts diff --git a/usecaseui-portal/src/app/shared/components/e2e-detail/e2e-detail.component.ts b/usecaseui-portal/src/app/shared/components/e2e-detail/e2e-detail.component.ts new file mode 100644 index 00000000..7618c98c --- /dev/null +++ b/usecaseui-portal/src/app/shared/components/e2e-detail/e2e-detail.component.ts @@ -0,0 +1,246 @@ +/* + Copyright (C) 2019 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 '../../../core/services/myhttp.service'; +import * as d3 from 'd3'; + +@Component({ + selector: 'app-e2e-detail', + templateUrl: './e2e-detail.component.html', + styleUrls: ['./e2e-detail.component.less'] +}) +export class E2eDetailComponent implements OnInit { + + constructor(private myhttp: MyhttpService) { + } + + ngOnInit() { + // this.getDetails(); + this.dataInit(); + } + + @Input() detailParams; + + @Output() closeDetail = new EventEmitter(); + serviceInstanceName: any; + serviceType: any; + input_parameters: any; + nsinput_parameters: any; + + // e2e + service = { + name: "", + description: "", + }; + e2e_nestedTemplates = []; + e2e_requestInputs: any; + + ns_service = { + name: "", + description: "" + } + ns_nestedTemplates = []; + ns_requestInputs = {}; + roote2e = { + "name": "e2e", + "type": "e2e", + "children": [] + }; + + rootns = { + "name": "ns", + "type": "ns", + "children": [] + }; + + imgmap = { + '1': '../../../../assets/images/create-e2e.png', + '2': '../../../../assets/images/create-ns.png', + '3': '../../../../assets/images/create-vnf.png', + }; + + getKeys(item) { + return Object.keys(item); + } + + dataInit() { + console.log(this.detailParams); + this.serviceInstanceName = this.detailParams['service-instance-name'] || this.detailParams["nsName"]; + if (this.detailParams.serviceDomain == 'E2E Service') { + this.input_parameters = JSON.stringify(this.detailParams['input-parameters']); + this.input_parameters = JSON.parse(this.input_parameters); + console.log(this.input_parameters); + this.service = { + name: this.input_parameters.service.name, + description: this.input_parameters.service.description, + }; + if (this.input_parameters.service.parameters.requestInputs != undefined && Object.keys(this.input_parameters.service.parameters.requestInputs).length > 0) { + this.e2e_requestInputs = this.input_parameters.service.parameters.requestInputs; + } + if (this.input_parameters.service.parameters.resources != undefined && this.input_parameters.service.parameters.resources.length > 0) { + this.input_parameters.service.parameters.resources.map((item, i) => { + let nestedTemplates = { + name: null, + vnfs: [] + }; + nestedTemplates.name = item.resourceName; + item.parameters.locationConstraints.map((its, k) => { + nestedTemplates.vnfs.push({ + "vf_location": its.locationConstraints.cloudOwner + }) + }); + this.e2e_nestedTemplates.push(nestedTemplates); + + let nsIndex = { + "name": "ns", + "type": "ns", + "children": [] + }; + nsIndex.children = item.parameters.locationConstraints.map((itemits, index) => { + return { + "name": "vnf", + "type": "vnf", + } + }); + this.roote2e.children.push(nsIndex); + }); + console.log(this.e2e_nestedTemplates); + console.log(this.e2e_requestInputs); + console.log(this.roote2e) + } + } else if (this.detailParams.serviceDomain == 'Network Service') { + this.ns_service = { + name: this.detailParams.name || this.detailParams['service-instance-name'], + description: this.detailParams.description || null + }; + if (this.detailParams.requestInputs != undefined && Object.keys(this.detailParams.requestInputs).length > 0) { + this.ns_requestInputs = this.detailParams.requestInputs; + } + this.ns_nestedTemplates = this.detailParams.childServiceInstances; + this.rootns.children = this.ns_nestedTemplates.map((item, index) => { + return { + "name": "vnf", + "type": "vnf" + } + }); + console.log(this.ns_nestedTemplates); + console.log(this.ns_requestInputs); + console.log(this.rootns) + } + this.drawImage(this.detailParams.serviceDomain) + } + + goback() { + this.closeDetail.emit(); + } + + drawImage(type) { + if (type == "E2E Service") { + this.render(this.roote2e, this.imgmap) + } else if (type == "Network Service") { + this.render(this.rootns, this.imgmap) + } + + + } + + render(data, imgmap) { + var width = document.getElementById("createChart").clientWidth, + height = document.getElementById("createChart").clientHeight; + var cluster = d3.layout.tree() + .size([width, height]); + var diagonal = d3.svg.diagonal() + .projection(function (d) { + return [d.x - 18, d.y + 40]; + }); + var svg = d3.select("svg"); + + //marker + var marker = + svg.append("marker") + .attr("id", "resolved") + .attr("markerUnits", "strokeWidth") + .attr("markerUnits", "userSpaceOnUse") + .attr("viewBox", "0 -5 10 10") + .attr("refX", 22) + .attr("refY", 0) + .attr("markerWidth", 20) + .attr("markerHeight", 20) + .attr("orient", "auto") + .attr("stroke-width", 1) + .append("circle") + .attr("cx", 5) + .attr("cy", 0) + .attr("r", 2) + .attr("stroke-width", 1) + .style("stroke", "#2F8BF7") + .attr('fill', 'white'); + var i = 0; + var nodes = cluster.nodes(data).reverse(); + nodes.forEach(function (d) { + d.y = d.depth * 200 + 100; + + }); + + var links = cluster.links(nodes); + + var linkEnter = svg.selectAll("path.link") + .data(links); + + linkEnter.enter().append("path") + .attr("class", "link") + .attr("d", diagonal) + .style("stroke", "#2F8BF7") + .style('stroke-width', '1px') + .attr("marker-end", "url(#resolved)") + .style("fill", "none") + // .style("fill-opacity", 1) + .attr("id", function (d, i) { + return "mypath" + i; + }); + + var node = svg.selectAll(".node") + .data(nodes) + .enter() + .append("g") + .attr("class", "node") + .attr("transform", function (d) { + return "translate(" + (d.x + -50) + "," + (d.y) + ")"; + }); + + node.append('image') + .attr('xlink:href', function (d) { + if (d.type == "e2e") { + return imgmap[1]; + } else if (d.type == "ns") { + return imgmap[2]; + } else if (d.type == "vnf") { + return imgmap[3]; + } + + }) + .style('width', '12%') + .style("cursor", "pointer") + .attr("x", 0) + .attr("y", 0) + .attr("rx", 3); + + + } + + +} diff --git a/usecaseui-portal/src/app/components/graphiclist/graphiclist.component.css b/usecaseui-portal/src/app/shared/components/graphiclist/graphiclist.component.css index 2f6519c4..9830c9e8 100644 --- a/usecaseui-portal/src/app/components/graphiclist/graphiclist.component.css +++ b/usecaseui-portal/src/app/shared/components/graphiclist/graphiclist.component.css @@ -84,8 +84,8 @@ display: inline-block; width: 16px; height: 16px; - background: url(../../../assets/images/icon.png) center -113px; + background: url(../../../../assets/images/icon.png) center -113px; } .content .tablelist .action .details:hover { - background: url(../../../assets/images/icon.png) no-repeat center -128px; + background: url(../../../../assets/images/icon.png) no-repeat center -128px; } diff --git a/usecaseui-portal/src/app/components/graphiclist/graphiclist.component.html b/usecaseui-portal/src/app/shared/components/graphiclist/graphiclist.component.html index 317d48b0..317d48b0 100644 --- a/usecaseui-portal/src/app/components/graphiclist/graphiclist.component.html +++ b/usecaseui-portal/src/app/shared/components/graphiclist/graphiclist.component.html diff --git a/usecaseui-portal/src/app/components/graphiclist/graphiclist.component.less b/usecaseui-portal/src/app/shared/components/graphiclist/graphiclist.component.less index 24e92fbd..e302c7fd 100644 --- a/usecaseui-portal/src/app/components/graphiclist/graphiclist.component.less +++ b/usecaseui-portal/src/app/shared/components/graphiclist/graphiclist.component.less @@ -127,9 +127,9 @@ display: inline-block; width: 16px; height: 16px; - background: url(../../../assets/images/icon.png) center -113px; + background: url(../../../../assets/images/icon.png) center -113px; &:hover { - background: url(../../../assets/images/icon.png) no-repeat center -128px; + background: url(../../../../assets/images/icon.png) no-repeat center -128px; } } } diff --git a/usecaseui-portal/src/app/components/graphiclist/graphiclist.component.spec.ts b/usecaseui-portal/src/app/shared/components/graphiclist/graphiclist.component.spec.ts index 013db38a..013db38a 100644 --- a/usecaseui-portal/src/app/components/graphiclist/graphiclist.component.spec.ts +++ b/usecaseui-portal/src/app/shared/components/graphiclist/graphiclist.component.spec.ts diff --git a/usecaseui-portal/src/app/components/graphiclist/graphiclist.component.ts b/usecaseui-portal/src/app/shared/components/graphiclist/graphiclist.component.ts index ccffac08..c05d3b7c 100644 --- a/usecaseui-portal/src/app/components/graphiclist/graphiclist.component.ts +++ b/usecaseui-portal/src/app/shared/components/graphiclist/graphiclist.component.ts @@ -14,7 +14,7 @@ limitations under the License. */ import { Component, OnInit, Input, Output, EventEmitter, HostBinding } from '@angular/core'; -import { HomesService } from '../../homes.service'; +import { HomesService } from '../../../core/services/homes.service'; import * as addDays from 'date-fns/add_days'; import { DatePipe } from "@angular/common" diff --git a/usecaseui-portal/src/app/components/performance-details/performance-details.component.css b/usecaseui-portal/src/app/shared/components/performance-details/performance-details.component.css index 0b5493d7..ec6bd37f 100644 --- a/usecaseui-portal/src/app/components/performance-details/performance-details.component.css +++ b/usecaseui-portal/src/app/shared/components/performance-details/performance-details.component.css @@ -40,7 +40,7 @@ width: 60px; height: 10px; transform: translate(-30px, 0); - background: url(../../../assets/images/tildeimg.png) no-repeat center center; + background: url(../../../../assets/images/tildeimg.png) no-repeat center center; background-color: #fff; } .content .header .headerlist { @@ -80,17 +80,17 @@ outline: none; cursor: pointer; background-color: #fff; - background: url(../../../assets/images/open-close2.png) no-repeat center -22px; + background: url(../../../../assets/images/open-close2.png) no-repeat center -22px; } .content button:hover { - background: url(../../../assets/images/open-close2.png) no-repeat center -66px; + background: url(../../../../assets/images/open-close2.png) no-repeat center -66px; } .content .buttonActive { transform: translate(-44px, -22px); - background: url(../../../assets/images/open-close2.png) no-repeat center 0px; + background: url(../../../../assets/images/open-close2.png) no-repeat center 0px; } .content .buttonActive:hover { - background: url(../../../assets/images/open-close2.png) no-repeat center -44px; + background: url(../../../../assets/images/open-close2.png) no-repeat center -44px; } .content h2.detailtitle { font: 700 24px/18px 'Times New Roman'; diff --git a/usecaseui-portal/src/app/components/performance-details/performance-details.component.html b/usecaseui-portal/src/app/shared/components/performance-details/performance-details.component.html index a5d44a7f..a5d44a7f 100644 --- a/usecaseui-portal/src/app/components/performance-details/performance-details.component.html +++ b/usecaseui-portal/src/app/shared/components/performance-details/performance-details.component.html diff --git a/usecaseui-portal/src/app/components/performance-details/performance-details.component.less b/usecaseui-portal/src/app/shared/components/performance-details/performance-details.component.less index c1ca74f5..dd94af84 100644 --- a/usecaseui-portal/src/app/components/performance-details/performance-details.component.less +++ b/usecaseui-portal/src/app/shared/components/performance-details/performance-details.component.less @@ -40,7 +40,7 @@ width: 60px; height: 10px; transform: translate(-30px,0); - background: url(../../../assets/images/tildeimg.png) no-repeat center center; + background: url(../../../../assets/images/tildeimg.png) no-repeat center center; background-color: #fff; } .headerlist { @@ -81,16 +81,16 @@ outline: none; cursor: pointer; background-color: #fff; - background: url(../../../assets/images/open-close2.png) no-repeat center -22px; + background: url(../../../../assets/images/open-close2.png) no-repeat center -22px; &:hover { - background: url(../../../assets/images/open-close2.png) no-repeat center -66px; + background: url(../../../../assets/images/open-close2.png) no-repeat center -66px; } } .buttonActive { transform: translate(-44px,-22px); - background: url(../../../assets/images/open-close2.png) no-repeat center -0px; + background: url(../../../../assets/images/open-close2.png) no-repeat center -0px; &:hover { - background: url(../../../assets/images/open-close2.png) no-repeat center -44px; + background: url(../../../../assets/images/open-close2.png) no-repeat center -44px; } } h2.detailtitle { diff --git a/usecaseui-portal/src/app/components/performance-details/performance-details.component.spec.ts b/usecaseui-portal/src/app/shared/components/performance-details/performance-details.component.spec.ts index 11f4abd2..11f4abd2 100644 --- a/usecaseui-portal/src/app/components/performance-details/performance-details.component.spec.ts +++ b/usecaseui-portal/src/app/shared/components/performance-details/performance-details.component.spec.ts diff --git a/usecaseui-portal/src/app/components/performance-details/performance-details.component.ts b/usecaseui-portal/src/app/shared/components/performance-details/performance-details.component.ts index b8835739..9a601485 100644 --- a/usecaseui-portal/src/app/components/performance-details/performance-details.component.ts +++ b/usecaseui-portal/src/app/shared/components/performance-details/performance-details.component.ts @@ -14,8 +14,8 @@ limitations under the License. */ import { Component, OnInit, Input } from '@angular/core'; -import { slideUpDown } from '../../animates'; -import { HomesService } from '../../homes.service'; +import { slideUpDown } from '../../../animates'; +import { HomesService } from '../../../core/services/homes.service'; @Component({ selector: 'app-performance-details', diff --git a/usecaseui-portal/src/app/fcaps/fcaps.component.less b/usecaseui-portal/src/app/shared/utils/utils.js index e69de29b..e69de29b 100644 --- a/usecaseui-portal/src/app/fcaps/fcaps.component.less +++ b/usecaseui-portal/src/app/shared/utils/utils.js diff --git a/usecaseui-portal/src/app/test/test.component.html b/usecaseui-portal/src/app/test/test.component.html new file mode 100644 index 00000000..200be4e6 --- /dev/null +++ b/usecaseui-portal/src/app/test/test.component.html @@ -0,0 +1,25 @@ +<div class="test-holder"> + <h1>Mock data works!</h1> + <nz-table #basicTable [nzData]="tableData"> + <thead> + <tr> + <th>Name</th> + <th>Phone</th> + <th>Address</th> + <th>Action</th> + </tr> + </thead> + <tbody> + <tr *ngFor="let data of tableData"> + <td>{{data.name}}</td> + <td>{{data.phone}}</td> + <td>{{data.address}}</td> + <td> + <a>Action 一 {{data.name}}</a> + <nz-divider nzType="vertical"></nz-divider> + <a>Delete</a> + </td> + </tr> + </tbody> + </nz-table> +</div>
\ No newline at end of file diff --git a/usecaseui-portal/src/app/test/test.component.less b/usecaseui-portal/src/app/test/test.component.less new file mode 100644 index 00000000..a44f4e7e --- /dev/null +++ b/usecaseui-portal/src/app/test/test.component.less @@ -0,0 +1,3 @@ +.test-holder{ + margin:20px; +}
\ No newline at end of file diff --git a/usecaseui-portal/src/app/test/test.component.spec.ts b/usecaseui-portal/src/app/test/test.component.spec.ts new file mode 100644 index 00000000..ef4e38cb --- /dev/null +++ b/usecaseui-portal/src/app/test/test.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { TestComponent } from './test.component'; + +describe('TestComponent', () => { + let component: TestComponent; + let fixture: ComponentFixture<TestComponent>; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ TestComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(TestComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/usecaseui-portal/src/app/test/test.component.ts b/usecaseui-portal/src/app/test/test.component.ts new file mode 100644 index 00000000..30fdedc7 --- /dev/null +++ b/usecaseui-portal/src/app/test/test.component.ts @@ -0,0 +1,34 @@ +import { Component, OnInit } from '@angular/core'; +import { TextService } from '../core/services/text.service'; + +@Component({ + selector: 'app-test', + templateUrl: './test.component.html', + styleUrls: ['./test.component.less'] +}) +export class TestComponent implements OnInit { + constructor( + private TextService: TextService, + ) { + } + + ngOnInit() { + this.getMockData(); + this.getjsonData(); + + } + tableData = [] + getMockData() { + this.TextService.getfakeData().subscribe(res => { + console.log(res, "======fake data") + this.tableData = res; + }) + } + getjsonData() { + this.TextService.getjsonData().subscribe(res => { + console.log(res, "======json data") + }) + } + + +} diff --git a/usecaseui-portal/src/app/alarm/alarm.component.css b/usecaseui-portal/src/app/views/alarm/alarm.component.css index 37c2d936..25bf187e 100644 --- a/usecaseui-portal/src/app/alarm/alarm.component.css +++ b/usecaseui-portal/src/app/views/alarm/alarm.component.css @@ -134,16 +134,16 @@ hr { outline: none; cursor: pointer; background-color: #fff; - background: url(../../assets/images/open-close.png) no-repeat center -27px; + background: url(../../../assets/images/open-close.png) no-repeat center -27px; } .content .chart .open-close:hover { - background: url(../../assets/images/open-close.png) no-repeat center -79px; + background: url(../../../assets/images/open-close.png) no-repeat center -79px; } .content .chart .open-close-active { - background: url(../../assets/images/open-close.png) center -1px; + background: url(../../../assets/images/open-close.png) center -1px; } .content .chart .open-close-active:hover { - background: url(../../assets/images/open-close.png) no-repeat center -53px; + background: url(../../../assets/images/open-close.png) no-repeat center -53px; } .content .tablelist { background-color: #fff; @@ -157,8 +157,8 @@ hr { display: inline-block; width: 16px; height: 16px; - background: url(../../assets/images/icon.png) center -113px; + background: url(../../../assets/images/icon.png) center -113px; } .content .tablelist .action .details:hover { - background: url(../../assets/images/icon.png) no-repeat center -128px; + background: url(../../../assets/images/icon.png) no-repeat center -128px; } diff --git a/usecaseui-portal/src/app/alarm/alarm.component.html b/usecaseui-portal/src/app/views/alarm/alarm.component.html index 312ec236..312ec236 100644 --- a/usecaseui-portal/src/app/alarm/alarm.component.html +++ b/usecaseui-portal/src/app/views/alarm/alarm.component.html diff --git a/usecaseui-portal/src/app/alarm/alarm.component.less b/usecaseui-portal/src/app/views/alarm/alarm.component.less index 434470fc..92c9b7a4 100644 --- a/usecaseui-portal/src/app/alarm/alarm.component.less +++ b/usecaseui-portal/src/app/views/alarm/alarm.component.less @@ -207,15 +207,15 @@ hr { outline: none; cursor: pointer; background-color: #fff; - background: url(../../assets/images/open-close.png) no-repeat center -27px; + background: url(../../../assets/images/open-close.png) no-repeat center -27px; &:hover { - background: url(../../assets/images/open-close.png) no-repeat center -79px; + background: url(../../../assets/images/open-close.png) no-repeat center -79px; } } .open-close-active { - background: url(../../assets/images/open-close.png) center -1px; + background: url(../../../assets/images/open-close.png) center -1px; &:hover { - background: url(../../assets/images/open-close.png) no-repeat center -53px; + background: url(../../../assets/images/open-close.png) no-repeat center -53px; } } } @@ -229,9 +229,9 @@ hr { display: inline-block; width: 16px; height: 16px; - background: url(../../assets/images/icon.png) center -113px; + background: url(../../../assets/images/icon.png) center -113px; &:hover { - background: url(../../assets/images/icon.png) no-repeat center -128px; + background: url(../../../assets/images/icon.png) no-repeat center -128px; } } } diff --git a/usecaseui-portal/src/app/views/alarm/alarm.component.spec.ts b/usecaseui-portal/src/app/views/alarm/alarm.component.spec.ts new file mode 100644 index 00000000..9f01597e --- /dev/null +++ b/usecaseui-portal/src/app/views/alarm/alarm.component.spec.ts @@ -0,0 +1,66 @@ +import { async, ComponentFixture, TestBed, inject, fakeAsync } from '@angular/core/testing'; +import { NO_ERRORS_SCHEMA, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; +import { NgxEchartsModule } from 'ngx-echarts'; +import { NgZorroAntdModule } from 'ng-zorro-antd'; +import { TranslateModule, TranslateLoader, TranslateService, TranslateFakeLoader } from '@ngx-translate/core'; +import { HttpClientModule } from '@angular/common/http'; +import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; +import { NZ_I18N, en_US } from 'ng-zorro-antd'; + +import { AlarmComponent } from './alarm.component'; +import { DetailsComponent } from '../../shared/components/details/details.component'; +import { LineComponent } from '../../shared/components/charts/line/line.component'; +import { HomesService } from '../../core/services/homes.service'; + +fdescribe('AlarmComponent', () => { + let component: AlarmComponent; + let fixture: ComponentFixture<AlarmComponent>; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [AlarmComponent, DetailsComponent, LineComponent], + imports: [TranslateModule.forRoot({ loader: { provide: TranslateLoader, useClass: TranslateFakeLoader } }), + NgZorroAntdModule.forRoot(), + NgxEchartsModule, + HttpClientModule, + BrowserAnimationsModule, + HttpClientTestingModule], + providers: [TranslateService, HomesService, + { provide: NZ_I18N, useValue: en_US }], + schemas: [ + CUSTOM_ELEMENTS_SCHEMA, + NO_ERRORS_SCHEMA + ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AlarmComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', inject([HttpTestingController, HomesService], + (httpMock: HttpTestingController, service: HomesService) => { + expect(component).toBeTruthy(); + })); + + it('expects service to fetch data with proper sorting', + inject([HttpTestingController, HomesService], + (httpMock: HttpTestingController, service: HomesService) => { + // We call the service + service.getqueryAllSourceNames().subscribe(data => { + expect(data.pageInfo.totalRecordCount).toBe(21); + expect(data.pageInfo.pageNumber).toBe(0); + expect(data.data.length).toBe(7); + }); + // We set the expectations for the HttpClient mock + const req = httpMock.expectOne('http://.../data/contacts'); + expect(req.request.method).toEqual('GET'); + // Then we set the fake data to be returned by the mock + req.flush({ data: ...}); + }) + ); +}); diff --git a/usecaseui-portal/src/app/alarm/alarm.component.ts b/usecaseui-portal/src/app/views/alarm/alarm.component.ts index 5d479020..32e3456f 100644 --- a/usecaseui-portal/src/app/alarm/alarm.component.ts +++ b/usecaseui-portal/src/app/views/alarm/alarm.component.ts @@ -14,8 +14,8 @@ limitations under the License. */ import { Component, OnInit, Input, Output, EventEmitter, HostBinding, Pipe, PipeTransform } from '@angular/core'; -import { HomesService } from '../homes.service'; -import { showHideAnimate, slideToRight } from '../animates'; +import { HomesService } from '../../core/services/homes.service'; +import { showHideAnimate, slideToRight } from '../../animates'; import { DatePipe } from '@angular/common'; @Component({ selector: 'app-alarm', @@ -199,12 +199,12 @@ export class AlarmComponent implements OnInit { alarmShow = false; alarmChartData: Object; alarmChartInit: Object = { - height: 200, + height: 200, option: { legend: { - icon: "circle", - itemWidth:10, - itemHeight:10, + icon: "circle", + itemWidth: 10, + itemHeight: 10, bottom: '-5px', data: ['Active', 'Fixed'] }, @@ -218,7 +218,7 @@ export class AlarmComponent implements OnInit { start: 1, height: 10, end: 60, - bottom:'9%' + bottom: '9%' } ], xAxis: { @@ -241,7 +241,7 @@ export class AlarmComponent implements OnInit { x2: 0, y2: 1, colorStops: [{ - offset: 0, color: '#FB7788' + offset: 0, color: '#FB7788' }, { offset: 1, color: '#FB93C2' }], @@ -278,7 +278,7 @@ export class AlarmComponent implements OnInit { ] } }; - sort(e){ + sort(e) { } //Detail page title display diff --git a/usecaseui-portal/src/app/ccvpn-creation/ccvpn-creation.component.css b/usecaseui-portal/src/app/views/ccvpn-creation/ccvpn-creation.component.css index 81b727c8..efeec683 100644 --- a/usecaseui-portal/src/app/ccvpn-creation/ccvpn-creation.component.css +++ b/usecaseui-portal/src/app/views/ccvpn-creation/ccvpn-creation.component.css @@ -44,14 +44,14 @@ hr { display: inline-block; width: 35px; height: 35px; - background:url("../../assets/images/Return-icon.png") no-repeat!important; + background:url("../../../assets/images/Return-icon.png") no-repeat!important; background-size: 100%!important; border-radius:4px; color: #D7D7D7; cursor: pointer; } .model .back:hover{ - background: url("../../assets/images/Return-icon-active.png")!important; + background: url("../../../assets/images/Return-icon-active.png")!important; background-size: 100%!important; } .top-title h3.title { diff --git a/usecaseui-portal/src/app/views/ccvpn-creation/ccvpn-creation.component.html b/usecaseui-portal/src/app/views/ccvpn-creation/ccvpn-creation.component.html new file mode 100644 index 00000000..1fc9a500 --- /dev/null +++ b/usecaseui-portal/src/app/views/ccvpn-creation/ccvpn-creation.component.html @@ -0,0 +1,275 @@ +<!-- + Copyright (C) 2019 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. +--> +<div class="model creation-model"> + + <div class="top-title"> + <h3 class="title fl">{{createParams.commonParams.templateType}} + {{"i18nTextDefine_InstanceCreation" | translate}} </h3> + <div class="fl" style="width: 20%"> + <button class="submit" nz-button (click)="submit()"><span> {{"i18nTextDefine_Create" | translate}} </span> + </button> + <button class="back" nz-button (click)="goback()"></button> + </div> + </div> + <!-- chart --> + <div class="chart"> + <span style="padding: 25px;display: inline-block;"> + {{"i18nTextDefine_InstanceTopology" | translate}} + </span> + <div id="createChart"> + <svg width="100%" height="100%"> + <image id="domain" xlink:href="assets/images/domain1.png" style="width: 15%" x="40%" y="0" /> + </svg> + </div> + </div> + <!--Template resolution : Three major items--> + <div class="creation"> + <nz-tabset [nzTabPosition]="'top'" [nzShowPagination]=false [nzTabBarGutter]="'2'" [nzTabBarStyle]=tabBarStyle> + <nz-tab nzTitle="Service Info"> + <div class="service-title" style="clear: both"> + <span style="color: red;">*</span><span class="lable" style="width: 60px">name:</span> + <input nz-input [(ngModel)]="this.templateParameters.service['name']" required="required"> + <span style="color: red;">*</span><span class="lable">description:</span> + <input nz-input [(ngModel)]="this.templateParameters.service['description']"> + </div> + </nz-tab> + <nz-tab nzTitle="Sdwanvpnresource List"> + <div class="sotnvpn clearfix"> + <div style="clear: both;height: 10px"> + <h3 style="float: left;color: #3C4F8C">sdwanVPN List</h3> + <button nz-button (click)="addSotnvpn()" class="addListBtn" + style="float: right;margin-right: 10px"><i class="anticon anticon-plus" + style="transform: scale(1.2);font-weight: 700"></i> {{"i18nTextDefine_Add" | translate}} + </button> + </div> + <nz-table #sotnVpnTable [nzData]="sotnVpnTableData" [nzShowPagination]="false" nzSize="small"> + <thead> + <tr> + <th width="30%"> NO.</th> + <th *ngFor="let key of getKeys(this.sotnInfo)">{{key.split("_")[1] || key}}</th> + <th width="10%"> Action</th> + </tr> + </thead> + <tbody> + <tr *ngFor="let item of sotnVpnTable.data; let i = index; "> + <td>{{i+1}}</td> + <td *ngFor="let keys of getKeys(this.sotnInfo);let a = index;"> + {{item[keys]}} + </td> + <td> + <span class="action" (click)="editSotnVpn(i+1)"><i + class="anticon anticon-edit"></i></span> + + <span class="action" (click)="deleteSotnVpn(i+1)"><i + class="anticon anticon-delete"></i></span> + </td> + </tr> + </tbody> + </nz-table> + </div> + </nz-tab> + <nz-tab nzTitle="Sdwansiteresource List"> + <div class="site"> + <div style="height: 10px"> + <h3 style="float: left;color: #3C4F8C">Site List</h3> + <button nz-button (click)="addSite()" class="addListBtn" + style="float: right;margin-right: 10px"><i class="anticon anticon-plus" + style="transform: scale(1.2);font-weight: 700"></i>{{"i18nTextDefine_Add" | translate}} + </button> + </div> + <nz-table #siteTable [nzData]="siteTableData" [nzShowPagination]="false" nzSize="small"> + <thead> + <tr> + <th nzWidth="10%"> NO.</th> + <th *ngFor="let key of getKeys(this.siteBaseData)">{{key.split("_")[1] || key}}</th> + <th nzWidth="20%" style="text-align: center"> Action</th> + </tr> + </thead> + <tbody> + <tr *ngFor="let item of siteTable.data; let i = index; "> + <td>{{i+1}}</td> + <td *ngFor="let keys of getKeys(this.siteBaseData);let a = index;"> + {{item[keys]}} + </td> + <td style="text-align: center"> + <span class="action" (click)="editSite(i+1)"><i + class="anticon anticon-edit"></i></span> + + <span class="action" (click)="deleteSite(i+1)"><i + class="anticon anticon-delete"></i></span> + </td> + </tr> + </tbody> + </nz-table> + </div> + </nz-tab> + </nz-tabset> + </div> + <!-- sotnVpnmodel --> + <div class="sotnnpnmodel" *ngIf="sotnVpnModelShow"> + <h3> {{"i18nTextDefine_Base" | translate}} </h3> + <div class="inputs"> + <ul> + <li *ngFor="let item of this.templateParameters.sotnvpn.sdwanvpnresource_list"> + <span *ngIf="item.required" + style="color: red;margin: 0;margin-right: -5px;">*</span><span>{{item.lableShow}}:</span> + <input nz-input [(ngModel)]="sotnInfo[item.lable]" + title="{{item.description ? item.description:null }}" + required="{{item.required==true ? 'required':null}}"></li> + </ul> + </div> + <div> + <h3>Sdwansitelan List</h3> + <div> + <div style="width: 100%;text-align: right"> + <button nz-button (click)="addSotnSdwansitelan()" class="addListBtn"><i class="anticon anticon-plus" + style="transform: scale(1.2);font-weight: 700;"></i>{{"i18nTextDefine_Add" | translate}} + </button> + </div> + <table class="siteWanTab"> + <thead> + <tr> + <th width="4%"> NO.</th> + <th *ngFor="let key of getKeys(this.sotnSdwansitelanParams)">{{key}}</th> + <th width="7%"> Action</th> + </tr> + </thead> + <tbody> + <tr *ngFor="let item of sotnSdwansitelanData; let i = index;" + [ngClass]="{'tr-border':item.tabInputShowSdwansitelan ==false}"> + <td>{{i+1}}</td> + <td *ngFor="let key of getKeys(item);let a = index;"> + <span *ngIf="!tabInputShowSdwansitelan[i]" + title="{{this.templateParameters.sotnvpn.sdwansitelan_list[a]['lable']==getKeys(item)[a] ? this.templateParameters.site.sdwansitewan_list[a].description:null}}">{{item[key]}}</span> + <input nz-input [(ngModel)]="item[key]" *ngIf="tabInputShowSdwansitelan[i] " + title="{{this.templateParameters.sotnvpn.sdwansitelan_list[a]['lable']==getKeys(item)[a] ? this.templateParameters.site.sdwansitewan_list[a].description:null}}" + required="{{item.required==true ? 'required':null}}"> + </td> + <td> + <span class="action" (click)="editSotnSdwansitelan(i+1,item,sotnSdwansitelanData)"><i + class="anticon anticon-edit" style="margin: 0 5px;"></i></span> + <span class="action" (click)="deleteSotnSdwansitelan(i+1,item,sotnSdwansitelanData)"><i + class="anticon anticon-delete"></i></span> + </td> + </tr> + </tbody> + </table> + </div> + </div> + + <div class="action"> + <button nz-button nzType="primary" + (click)="addSotnVpn_cancel()">{{"i18nTextDefine_Cancel" | translate}}</button> + <button nz-button nzType="primary" (click)="addSotnVpn_OK()">{{"i18nTextDefine_Add" | translate}}</button> + </div> + </div> + <!-- sitemodel --> + <div class="sitemodel" *ngIf="siteModelShow"> + <h3> {{"i18nTextDefine_Base" | translate}} </h3> + <div class="inputs"> + <ul> + <li *ngFor="let item of this.templateParameters.site.sdwansiteresource_list"> + <span *ngIf="item.required" + style="color: red;margin: 0;margin-right: -5px;">*</span><span>{{item.lableShow}}:</span> + <input nz-input [(ngModel)]="siteBaseData[item.lable]" title="{{item.description}}" + required="{{item.required==true ? 'required':null}}"></li> + </ul> + </div> + <div> + <h3>Sdwandevice</h3> + <div> + <div style="width: 100%;text-align: right"> + <button nz-button (click)="addSdwanDevice()" class="addListBtn"><i class="anticon anticon-plus" + style="transform: scale(1.2);font-weight: 700;"></i>{{"i18nTextDefine_Add" | translate}} + </button> + </div> + <table class="siteWanTab"> + <thead> + <tr> + <th width="4%"> NO.</th> + <th *ngFor="let key of getKeys(this.siteCpeData)">{{key}}</th> + <th width="7%"> Action</th> + </tr> + </thead> + <tbody> + <tr *ngFor="let item of siteSdwanDevice; let i = index;" + [ngClass]="{'tr-border':item.tabInputShowDevice ==false}"> + <td>{{i+1}}</td> + <td *ngFor="let key of getKeys(item);let a = index;"> + <span *ngIf="!tabInputShowDevice[i]" + title="{{this.templateParameters.site.sdwandevice_list[a]['lable']==getKeys(item)[a] ? this.templateParameters.site.sdwandevice_list[a].description:null}}">{{item[key]}}</span> + <input nz-input [(ngModel)]="item[key]" *ngIf="tabInputShowDevice[i] " + title="{{this.templateParameters.site.sdwandevice_list[a]['lable']==getKeys(item)[a] ? this.templateParameters.site.sdwandevice_list[a].description:null}}" + required="{{item.required==true ? 'required':null}}"> + </td> + <td> + <span class="action" (click)="editDevicePort(i+1,item,siteSdwanDevice)"><i + class="anticon anticon-edit" style="margin: 0 5px;"></i></span> + <span class="action" (click)="deleteDevicePort(i+1,item,siteSdwanDevice)"><i + class="anticon anticon-delete"></i></span> + </td> + </tr> + </tbody> + </table> + </div> + + + <h3>Sdwansitewan List</h3> + <div> + <div style="width: 100%;text-align: right"> + <button nz-button (click)="addSiteWan()" class="addListBtn"><i class="anticon anticon-plus" + style="transform: scale(1.2);font-weight: 700;"></i>{{"i18nTextDefine_Add" | translate}} + </button> + </div> + <table class="siteWanTab"> + <thead> + <tr> + <th width="4%"> NO.</th> + <th *ngFor="let key of getKeys(this.siteWanParams)">{{key}}</th> + <th width="7%"> Action</th> + </tr> + </thead> + <tbody> + <tr *ngFor="let item of siteWanData; let i = index;" + [ngClass]="{'tr-border':item.tabInputShowWanPort ==false}"> + <td>{{i+1}}</td> + <td *ngFor="let key of getKeys(item);let a = index;"> + <span *ngIf="!tabInputShowWanPort[i]" + title="{{this.templateParameters.site.sdwansitewan_list[a]['lable']==getKeys(item)[a] ? this.templateParameters.site.sdwansitewan_list[a].description:null}}">{{item[key]}}</span> + <input nz-input [(ngModel)]="item[key]" *ngIf="tabInputShowWanPort[i] " + title="{{this.templateParameters.site.sdwansitewan_list[a]['lable']==getKeys(item)[a] ? this.templateParameters.site.sdwansitewan_list[a].description:null}}" + required="{{item.required==true ? 'required':null}}"> + </td> + <td> + <span class="action" (click)="editWanPort(i+1,item,siteWanData)"><i + class="anticon anticon-edit" style="margin: 0 5px;"></i></span> + <span class="action" (click)="deleteWanPort(i+1,item,siteWanData)"><i + class="anticon anticon-delete"></i></span> + </td> + </tr> + </tbody> + </table> + </div> + </div> + + <div class="action"> + <button nz-button nzType="primary" + (click)="addsite_cancel()">{{"i18nTextDefine_Cancel" | translate}}</button> + <button nz-button nzType="primary" (click)="addsite_OK()">{{"i18nTextDefine_Add" | translate}}</button> + </div> + </div> + <div class="mask" *ngIf="siteModelShow || sotnVpnModelShow"></div> +</div>
\ No newline at end of file diff --git a/usecaseui-portal/src/app/ccvpn-creation/ccvpn-creation.component.spec.ts b/usecaseui-portal/src/app/views/ccvpn-creation/ccvpn-creation.component.spec.ts index 30402412..30402412 100644 --- a/usecaseui-portal/src/app/ccvpn-creation/ccvpn-creation.component.spec.ts +++ b/usecaseui-portal/src/app/views/ccvpn-creation/ccvpn-creation.component.spec.ts diff --git a/usecaseui-portal/src/app/ccvpn-creation/ccvpn-creation.component.ts b/usecaseui-portal/src/app/views/ccvpn-creation/ccvpn-creation.component.ts index f4c1f94c..214afbb7 100644 --- a/usecaseui-portal/src/app/ccvpn-creation/ccvpn-creation.component.ts +++ b/usecaseui-portal/src/app/views/ccvpn-creation/ccvpn-creation.component.ts @@ -16,7 +16,7 @@ import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; import * as d3 from 'd3'; import * as $ from 'jquery'; -import { MyhttpService } from '../myhttp.service'; +import { MyhttpService } from '../../core/services/myhttp.service'; import { el } from "@angular/platform-browser/testing/src/browser_util"; @Component({ @@ -135,7 +135,7 @@ export class CcvpnCreationComponent implements OnInit { }); this.showTemParametersSotnVpn(); this.showTemParametersSite(); - console.log(this.bodyTemplateParameter,this.templateParameters) + console.log(this.bodyTemplateParameter, this.templateParameters) } //sotnVpn data, after combining the structure, rendering the template data to the page @@ -223,7 +223,7 @@ export class CcvpnCreationComponent implements OnInit { this.siteSdwanDevice.push(this.siteCpeData); this.siteWanData.push(this.siteWanParams); this.siteWanData.map((item, index) => { - this.tabInputShowDevice[index] = true; + this.tabInputShowDevice[index] = true; }); this.siteWanData.map((item, index) => { this.tabInputShowWanPort[index] = true; @@ -519,8 +519,8 @@ export class CcvpnCreationComponent implements OnInit { siteImage = []; tpImage = []; imgmap = { - '1': './assets/images/domain1.png', - '2': './assets/images/site.png' + '1': '../../../assets/images/domain1.png', + '2': '../../../assets/images/site.png' }; drawImage(sitelist) { diff --git a/usecaseui-portal/src/app/ccvpn-detail/ccvpn-detail.component.css b/usecaseui-portal/src/app/views/ccvpn-detail/ccvpn-detail.component.css index 72e59fa5..d5ad960d 100644 --- a/usecaseui-portal/src/app/ccvpn-detail/ccvpn-detail.component.css +++ b/usecaseui-portal/src/app/views/ccvpn-detail/ccvpn-detail.component.css @@ -58,14 +58,14 @@ hr { display: inline-block; width: 35px; height: 35px; - background:url("../../assets/images/Return-icon.png") no-repeat!important; + background:url("../../../assets/images/Return-icon.png") no-repeat!important; background-size: 100%!important; border-radius:4px; color: #D7D7D7; cursor: pointer; } .model .back:hover{ - background: url("../../assets/images/Return-icon-active.png")!important; + background: url("../../../assets/images/Return-icon-active.png")!important; background-size: 100%!important; } .top-title h3.title { diff --git a/usecaseui-portal/src/app/ccvpn-detail/ccvpn-detail.component.html b/usecaseui-portal/src/app/views/ccvpn-detail/ccvpn-detail.component.html index ce556687..e2b5159e 100644 --- a/usecaseui-portal/src/app/ccvpn-detail/ccvpn-detail.component.html +++ b/usecaseui-portal/src/app/views/ccvpn-detail/ccvpn-detail.component.html @@ -19,7 +19,8 @@ <div class="top-title"> <h3 class="title fl">{{detailParams['service-instance-name']}} Instance Detail</h3> <div class="fl" style="width: 20%"> - <button class="submit" nz-button (click)="submitUpdate()" *ngIf="upDateShow"><span> {{"i18nTextDefine_Update" | translate}} </span> + <button class="submit" nz-button (click)="submitUpdate()" *ngIf="upDateShow"><span> + {{"i18nTextDefine_Update" | translate}} </span> </button> <button class="back" nz-button (click)="goback()"></button> </div> @@ -31,142 +32,92 @@ <svg width="100%" height="100%" style="position: relative"> <!--local domain--> <g class="clouds" *ngIf="vpns[0].domain!=''"> - <image xlink:href="./assets/images/domain1.png" - id="domain1" - width="14%" - x="17%" y="14%" - ></image> + <image xlink:href="assets/images/domain1.png" id="domain1" width="14%" x="17%" y="14%"></image> <text dx="24%" dy="51%" style="font-size: 14px; fill:#ffffff;width: 20px;"> {{vpns[0].domain}} </text> </g> <g *ngIf="vpns[1]" class="clouds"> - <image xlink:href="./assets/images/domain1.png" - id="domain2" - width="14%" - x="40%" y="40%" - ></image> + <image xlink:href="assets/images/domain1.png" id="domain2" width="14%" x="40%" y="40%"></image> <text dx="43%" dy="19%" style="font-size: 14px; fill: #ffffff;width: 20px;"> {{vpns[1].domain}} </text> </g> <!--domain1 tp--> <g class="clouds" *ngIf="vpns[0].sitetpname!=''"> - <image xlink:href="./assets/images/tp.png" - class="tp" - id="tp1" - height="16" width="20" - x="21%" y="37%" - ></image> + <image xlink:href="assets/images/tp.png" class="tp" id="tp1" height="16" width="20" x="21%" y="37%"></image> <text dx="21%" dy="34%" style="font-size: 14px; fill: #666;width: 20px;"> {{vpns[0].sitetpname}} </text> </g> <g class="clouds" *ngIf="vpns[0].othertpname!=''"> - <image xlink:href="./assets/images/tp.png" - class="tp" - id="tp2" - height="16" width="20" - x="29%" y="52%" - ></image> + <image xlink:href="assets/images/tp.png" class="tp" id="tp2" height="16" width="20" x="29%" y="52%"></image> <text dx="29%" dy="49%" style="font-size: 14px; fill: #666;width: 20px;"> {{vpns[0].othertpname}} </text> </g> <!--domain2 tp--> <g *ngIf="vpns[1]" class="clouds"> - <image xlink:href="./assets/images/tp.png" - class="tp" - id="tp3" - height="16" width="20" - x="44%" y="52%" - ></image> + <image xlink:href="assets/images/tp.png" class="tp" id="tp3" height="16" width="20" x="44%" y="52%"></image> <text dx="44%" dy="49%" style="font-size: 14px; fill: #666;width: 20px;"> {{vpns[1].othertpname}} </text> </g> <g *ngIf="vpns[1]" class="clouds"> - <image xlink:href="./assets/images/tp.png" - class="tp" - id="tp4" - height="16" width="20" - x="51%" y="78%" - ></image> + <image xlink:href="assets/images/tp.png" class="tp" id="tp4" height="16" width="20" x="51%" y="78%"></image> <text dx="51%" dy="75%" style="font-size: 14px; fill: #666;width: 20px;"> {{vpns[1].sitetpname}} </text> </g> <!--clouds--> <g class="clouds"> - <image xlink:href="./assets/images/cloud-out.png" - id="extent-cloud" - width="14%" - x="70%" y="11%" - ></image> + <image xlink:href="assets/images/cloud-out.png" id="extent-cloud" width="14%" x="70%" y="11%"></image> <text dx="75%" dy="39%" style="font-size: 14px; fill: #666;width: 20px;"> SP Partent Network </text> </g> <!--local site--> <g class="clouds" *ngIf="localSite.length>0"> - <image xlink:href="./assets/images/site.png" - id="site1" - height="59" width="100" - x="6%" y="29%" - ></image> + <image xlink:href="assets/images/site.png" id="site1" height="59" width="100" x="6%" y="29%"></image> <text dx="8%" dy="26%" style="font-size: 14px; fill: #666;width: 20px;"> {{localSite[0] && localSite[0]["service-instance-name"]}} </text> </g> <g *ngIf="!detailSites && localSite.length>0" class="clouds"> - <image xlink:href="./assets/images/site.png" - id="site2" - height="59" width="100" - x="61%" y="70%" - *ngIf="this.vpns.length == 2" - ></image> - <text dx="62%" dy="66%" style="font-size: 14px; fill: #666;width: 20px;" *ngIf="this.vpns.length == 2"> + <image xlink:href="assets/images/site.png" id="site2" height="59" width="100" x="61%" y="70%" + *ngIf="this.vpns.length == 2"></image> + <text dx="62%" dy="66%" style="font-size: 14px; fill: #666;width: 20px;" *ngIf="this.vpns.length == 2"> {{ localSite[1] && localSite[1]["service-instance-name"]}} </text> - <image xlink:href="./assets/images/site.png" - id="site2" - height="59" width="100" - x="40%" y="44%" - *ngIf="this.vpns.length == 1" - ></image> - <text dx="41%" dy="40%" style="font-size: 14px; fill: #666;width: 20px;" *ngIf="this.vpns.length == 1"> + <image xlink:href="assets/images/site.png" id="site2" height="59" width="100" x="40%" y="44%" + *ngIf="this.vpns.length == 1"></image> + <text dx="41%" dy="40%" style="font-size: 14px; fill: #666;width: 20px;" *ngIf="this.vpns.length == 1"> {{ localSite[1] && localSite[1]["service-instance-name"]}} </text> </g> <!--cloud site--> <g *ngIf="!detailSites && outerSite.length>0" class="clouds"> - <image xlink:href="./assets/images/site.png" - id="site3" - height="59" width="100" - x="89%" y="10%" - ></image> + <image xlink:href="assets/images/site.png" id="site3" height="59" width="100" x="89%" y="10%"></image> <text dx="90%" dy="7%" style="font-size: 14px; fill: #666;width: 20px;"> {{outerSite[1] && outerSite[1]["service-instance-name"]}} </text> </g> <g class="clouds" *ngIf="outerSite.length>0"> - <image xlink:href="./assets/images/site.png" - id="site4" - height="59" width="100" - x="89%" y="40%" - ></image> + <image xlink:href="assets/images/site.png" id="site4" height="59" width="100" x="89%" y="40%"></image> <text dx="90%" dy="37%" style="font-size: 14px; fill: #666;width: 20px;"> {{outerSite[0] && outerSite[0]["service-instance-name"]}} </text> </g> <!--tp,site,domain---line --> - <line *ngFor="let item of detailLines" [attr.x1]="item.x1" [attr.y1]="item.y1" [attr.x2]="item.x2" [attr.y2]="item.y2" style="stroke:#2F8BF7; stroke-width:2"></line> + <line *ngFor="let item of detailLines" [attr.x1]="item.x1" [attr.y1]="item.y1" [attr.x2]="item.x2" + [attr.y2]="item.y2" style="stroke:#2F8BF7; stroke-width:2"></line> <line *ngIf="detailSites" x1="45%" y1="30%" x2="75%" y2="20%" style="stroke:#FFC000; stroke-width:2"></line> </svg> </div> </div> <div class="detaildata"> - <nz-tabset [nzTabPosition]="'top'" [nzShowPagination]=false [nzTabBarGutter]="'2'" [nzTabBarStyle]=tabBarStyle [nzSelectedIndex]="upDateShow == false?0:1"> + <nz-tabset [nzTabPosition]="'top'" [nzShowPagination]=false [nzTabBarGutter]="'2'" [nzTabBarStyle]=tabBarStyle + [nzSelectedIndex]="upDateShow == false?0:1"> <nz-tab nzTitle="Service Info"> <div class="service-title" style="clear: both"> <span class="lable" style="width: 60px">name:</span> @@ -180,34 +131,33 @@ <div style="clear: both;height: 10px"> <h3 style="float: left;color: #3C4F8C">sdwanVPN List</h3> <button nz-button *ngIf="upDateShow" (click)="updateSotnvpn()" class="addListBtn" - style="float: right;margin-right: 10px"><i class="anticon anticon-plus" - style="transform: scale(1.2);font-weight: 700"></i> {{"i18nTextDefine_Add" | translate}} + style="float: right;margin-right: 10px"><i class="anticon anticon-plus" + style="transform: scale(1.2);font-weight: 700"></i> {{"i18nTextDefine_Add" | translate}} </button> </div> - <nz-table #sotnVpnTable [nzData]="sotnVpnTableData" - [nzShowPagination]="false" - nzSize="small"> + <nz-table #sotnVpnTable [nzData]="sotnVpnTableData" [nzShowPagination]="false" nzSize="small"> <thead> - <tr> - <th width="30%"> NO.</th> - <th width="30%"> Name</th> - <th width="30%"> topology</th> - <th nzWidth="10%"> Action </th> - </tr> + <tr> + <th width="30%"> NO.</th> + <th width="30%"> Name</th> + <th width="30%"> topology</th> + <th nzWidth="10%"> Action </th> + </tr> </thead> <tbody> - <tr *ngFor="let item of sotnVpnTable.data; let i = index; "> - <td>{{i+1}}</td> - <td>{{item.sdwanvpn_name}}</td> - <td>{{item.sdwanvpn_topology}}</td> - <td> - <span class="action" (click)="showstonVpnDetail(i+1)"><i class="anticon anticon-bars"></i></span> - <span class="action" (click)="editUpdateSotnVpn(i+1)" *ngIf="sotnvpnnum[i]"><i class="anticon anticon-edit"></i></span> - - <span class="action" (click)="deleteUpdateSotnVpn(i+1)" *ngIf="upDateShow"><i - class="anticon anticon-delete"></i></span> - </td> - </tr> + <tr *ngFor="let item of sotnVpnTable.data; let i = index; "> + <td>{{i+1}}</td> + <td>{{item.sdwanvpn_name}}</td> + <td>{{item.sdwanvpn_topology}}</td> + <td> + <span class="action" (click)="showstonVpnDetail(i+1)"><i class="anticon anticon-bars"></i></span> + <span class="action" (click)="editUpdateSotnVpn(i+1)" *ngIf="sotnvpnnum[i]"><i + class="anticon anticon-edit"></i></span> + + <span class="action" (click)="deleteUpdateSotnVpn(i+1)" *ngIf="upDateShow"><i + class="anticon anticon-delete"></i></span> + </td> + </tr> </tbody> </nz-table> </div> @@ -217,41 +167,41 @@ <div style="height: 10px"> <h3 style="float: left;color: #3C4F8C">Site List</h3> <button nz-button *ngIf="upDateShow" (click)="updateSite()" class="addListBtn" - style="float: right;margin-right: 10px"><i class="anticon anticon-plus" - style="transform: scale(1.2);font-weight: 700"></i>{{"i18nTextDefine_Add" | translate}} + style="float: right;margin-right: 10px"><i class="anticon anticon-plus" + style="transform: scale(1.2);font-weight: 700"></i>{{"i18nTextDefine_Add" | translate}} </button> </div> - <nz-table #nzTable [nzData]="siteTableData" - [nzShowPagination]="false" - nzSize="small"> + <nz-table #nzTable [nzData]="siteTableData" [nzShowPagination]="false" nzSize="small"> <thead> - <tr> - <th nzWidth="10%"> NO. </th> - <th nzWidth="15%"> Name </th> - <th nzWidth="20%"> Description </th> - <th nzWidth="15%"> Post Code </th> - <th nzWidth="15%"> Address </th> - <th nzWidth="15%"> VLAN </th> - <th nzWidth="10%"> Action </th> - </tr> + <tr> + <th nzWidth="10%"> NO. </th> + <th nzWidth="15%"> Name </th> + <th nzWidth="20%"> Description </th> + <th nzWidth="15%"> Post Code </th> + <th nzWidth="15%"> Address </th> + <th nzWidth="15%"> VLAN </th> + <th nzWidth="10%"> Action </th> + </tr> </thead> <tbody> - <tr *ngFor="let item of nzTable.data; let i = index; "> - <td>{{i+1}}</td> - <td>{{item.sdwandevice_list[0].name}}</td> - <td>{{item.sdwansite_description}}</td> - <td>{{item.sdwansite_postcode}}</td> - <td>{{item.sdwansite_address}}</td> - <td>{{item.sdwansite_emails}}</td> - <td> - <span class="action" (click)="showSiteDetail(i+1)"><i class="anticon anticon-bars"></i></span> - - <span class="action" (click)="editUpdateSite(i+1)" *ngIf="sitenum[i]"><i class="anticon anticon-edit"></i></span> - - <span class="action" (click)="deleteUpdateSite(i+1)" *ngIf="upDateShow"><i class="anticon anticon-delete"></i></span> - </td> - </tr> + <tr *ngFor="let item of nzTable.data; let i = index; "> + <td>{{i+1}}</td> + <td>{{item.sdwandevice_list[0].name}}</td> + <td>{{item.sdwansite_description}}</td> + <td>{{item.sdwansite_postcode}}</td> + <td>{{item.sdwansite_address}}</td> + <td>{{item.sdwansite_emails}}</td> + <td> + <span class="action" (click)="showSiteDetail(i+1)"><i class="anticon anticon-bars"></i></span> + + <span class="action" (click)="editUpdateSite(i+1)" *ngIf="sitenum[i]"><i + class="anticon anticon-edit"></i></span> + + <span class="action" (click)="deleteUpdateSite(i+1)" *ngIf="upDateShow"><i + class="anticon anticon-delete"></i></span> + </td> + </tr> </tbody> </nz-table> @@ -277,24 +227,25 @@ </div> <table class="siteWanTab"> <thead> - <tr> - <th width="4%"> NO.</th> - <th *ngFor="let key of getKeys(this.sotnSdwansitelanParams)">{{key}}</th> - </tr> + <tr> + <th width="4%"> NO.</th> + <th *ngFor="let key of getKeys(this.sotnSdwansitelanParams)">{{key}}</th> + </tr> </thead> <tbody> - <tr *ngFor="let item of sotnSdwansitelanData; let i = index;" class="tr-border"> - <td>{{i+1}}</td> - <td *ngFor="let key of getKeys(item);let a = index;"> - <span *ngIf="key != 'lable' ">{{item[key]}}</span> - </td> - </tr> + <tr *ngFor="let item of sotnSdwansitelanData; let i = index;" class="tr-border"> + <td>{{i+1}}</td> + <td *ngFor="let key of getKeys(item);let a = index;"> + <span *ngIf="key != 'lable' ">{{item[key]}}</span> + </td> + </tr> </tbody> </table> </div> </div> <div class="action"> - <button nz-button nzType="primary" (click)="detailSotnVpn_cancel()">{{"i18nTextDefine_Cancel" | translate}}</button> + <button nz-button nzType="primary" + (click)="detailSotnVpn_cancel()">{{"i18nTextDefine_Cancel" | translate}}</button> </div> </div> <!-- site model --> @@ -305,7 +256,7 @@ <li *ngFor="let item of this.templateParameters.site.sdwansiteresource_list"> <span>{{item.lableShow}}:</span> <span class="input-info">{{siteBaseData[item.lable]}}</span> - </li> + </li> </ul> </div> <div> @@ -313,18 +264,18 @@ <div> <table class="siteWanTab"> <thead> - <tr> - <th width="4%"> NO.</th> - <th *ngFor="let key of getKeys(this.siteCpeData)">{{key}}</th> - </tr> + <tr> + <th width="4%"> NO.</th> + <th *ngFor="let key of getKeys(this.siteCpeData)">{{key}}</th> + </tr> </thead> <tbody> - <tr *ngFor="let item of siteSdwanDevice; let i = index;" class="tr-border"> - <td>{{i+1}}</td> - <td *ngFor="let key of getKeys(item);"> - <span *ngIf="key != 'lable' ">{{item[key]}}</span> - </td> - </tr> + <tr *ngFor="let item of siteSdwanDevice; let i = index;" class="tr-border"> + <td>{{i+1}}</td> + <td *ngFor="let key of getKeys(item);"> + <span *ngIf="key != 'lable' ">{{item[key]}}</span> + </td> + </tr> </tbody> </table> </div> @@ -332,18 +283,18 @@ <div> <table class="siteWanTab"> <thead> - <tr> - <th width="4%"> NO.</th> - <th *ngFor="let key of getKeys(this.siteWanParams)">{{key}}</th> - </tr> + <tr> + <th width="4%"> NO.</th> + <th *ngFor="let key of getKeys(this.siteWanParams)">{{key}}</th> + </tr> </thead> <tbody> - <tr *ngFor="let item of siteWanData; let i = index;" class="tr-border"> - <td>{{i+1}}</td> - <td *ngFor="let key of getKeys(item);"> - <span *ngIf="key != 'lable' ">{{item[key]}}</span> - </td> - </tr> + <tr *ngFor="let item of siteWanData; let i = index;" class="tr-border"> + <td>{{i+1}}</td> + <td *ngFor="let key of getKeys(item);"> + <span *ngIf="key != 'lable' ">{{item[key]}}</span> + </td> + </tr> </tbody> </table> </div> @@ -368,39 +319,40 @@ <div> <div style="width: 100%;text-align: right"> <button nz-button (click)="updateSotnSdwansitelan()" class="addListBtn"><i class="anticon anticon-plus" - style="transform: scale(1.2);font-weight: 700;"></i>{{"i18nTextDefine_Add" | translate}} + style="transform: scale(1.2);font-weight: 700;"></i>{{"i18nTextDefine_Add" | translate}} </button> </div> <table class="siteWanTab"> <thead> - <tr> - <th width="4%"> NO.</th> - <th *ngFor="let key of getKeys(this.sotnSdwansitelanParams)">{{key}}</th> - <th width="7%"> Action</th> - </tr> + <tr> + <th width="4%"> NO.</th> + <th *ngFor="let key of getKeys(this.sotnSdwansitelanParams)">{{key}}</th> + <th width="7%"> Action</th> + </tr> </thead> <tbody> - <tr *ngFor="let item of sotnSdwansitelanData; let i = index;" + <tr *ngFor="let item of sotnSdwansitelanData; let i = index;" [ngClass]="{'tr-border':item.tabInputShowSdwansitelan ==false}"> - <td>{{i+1}}</td> - <td *ngFor="let key of getKeys(item);let a = index;"> - <span *ngIf="!tabInputShowSdwansitelan[i]">{{item[key]}}</span> - <input nz-input [(ngModel)]="item[key]" *ngIf="tabInputShowSdwansitelan[i] "> - </td> - <td> - <span class="action" (click)="editUpdateSotnSdwansitelan(i+1,item,sotnSdwansitelanData)"><i - class="anticon anticon-edit" style="margin: 0 5px;"></i></span> - <span class="action" (click)="deleteUpdateSotnSdwansitelan(i+1,item,sotnSdwansitelanData)"><i - class="anticon anticon-delete"></i></span> - </td> - </tr> + <td>{{i+1}}</td> + <td *ngFor="let key of getKeys(item);let a = index;"> + <span *ngIf="!tabInputShowSdwansitelan[i]">{{item[key]}}</span> + <input nz-input [(ngModel)]="item[key]" *ngIf="tabInputShowSdwansitelan[i] "> + </td> + <td> + <span class="action" (click)="editUpdateSotnSdwansitelan(i+1,item,sotnSdwansitelanData)"><i + class="anticon anticon-edit" style="margin: 0 5px;"></i></span> + <span class="action" (click)="deleteUpdateSotnSdwansitelan(i+1,item,sotnSdwansitelanData)"><i + class="anticon anticon-delete"></i></span> + </td> + </tr> </tbody> </table> </div> </div> <div class="action"> - <button nz-button nzType="primary" (click)="updateSotnVpn_cancel()">{{"i18nTextDefine_Cancel" | translate}}</button> + <button nz-button nzType="primary" + (click)="updateSotnVpn_cancel()">{{"i18nTextDefine_Cancel" | translate}}</button> <button nz-button nzType="primary" (click)="updateSotnVpn_OK()">{{"i18nTextDefine_Add" | translate}}</button> </div> </div> @@ -428,32 +380,32 @@ <div> <div style="width: 100%;text-align: right"> <button nz-button (click)="updateSiteWan()" class="addListBtn"><i class="anticon anticon-plus" - style="transform: scale(1.2);font-weight: 700;"></i>{{"i18nTextDefine_Add" | translate}} + style="transform: scale(1.2);font-weight: 700;"></i>{{"i18nTextDefine_Add" | translate}} </button> </div> <table class="siteWanTab"> <thead> - <tr> - <th width="4%"> NO.</th> - <th *ngFor="let key of getKeys(this.siteWanParams)">{{key}}</th> - <th width="7%"> Action</th> - </tr> + <tr> + <th width="4%"> NO.</th> + <th *ngFor="let key of getKeys(this.siteWanParams)">{{key}}</th> + <th width="7%"> Action</th> + </tr> </thead> <tbody> - <tr *ngFor="let item of siteWanData; let i = index;" + <tr *ngFor="let item of siteWanData; let i = index;" [ngClass]="{'tr-border':item.tabInputShowWanPort ==false}"> - <td>{{i+1}}</td> - <td *ngFor="let key of getKeys(item);let a = index;"> - <span *ngIf="!tabInputShowWanPort[i]">{{item[key]}}</span> - <input nz-input [(ngModel)]="item[key]" *ngIf="tabInputShowWanPort[i] "> - </td> - <td> - <span class="action" (click)="editUpdateWanPort(i+1,item,siteWanData)"><i - class="anticon anticon-edit" style="margin: 0 5px;"></i></span> - <span class="action" (click)="deleteUpdateWanPort(i+1,item,siteWanData)"><i - class="anticon anticon-delete"></i></span> - </td> - </tr> + <td>{{i+1}}</td> + <td *ngFor="let key of getKeys(item);let a = index;"> + <span *ngIf="!tabInputShowWanPort[i]">{{item[key]}}</span> + <input nz-input [(ngModel)]="item[key]" *ngIf="tabInputShowWanPort[i] "> + </td> + <td> + <span class="action" (click)="editUpdateWanPort(i+1,item,siteWanData)"><i class="anticon anticon-edit" + style="margin: 0 5px;"></i></span> + <span class="action" (click)="deleteUpdateWanPort(i+1,item,siteWanData)"><i + class="anticon anticon-delete"></i></span> + </td> + </tr> </tbody> </table> </div> @@ -464,5 +416,6 @@ <button nz-button nzType="primary" (click)="updatesite_OK()">{{"i18nTextDefine_Add" | translate}}</button> </div> </div> - <div class="mask" *ngIf="sotnVpnDetailShow || siteDetail || sotnVpnAddModelShow || siteAddModelShow" (click)="hiddenModel()"></div> -</div> + <div class="mask" *ngIf="sotnVpnDetailShow || siteDetail || sotnVpnAddModelShow || siteAddModelShow" + (click)="hiddenModel()"></div> +</div>
\ No newline at end of file diff --git a/usecaseui-portal/src/app/ccvpn-detail/ccvpn-detail.component.spec.ts b/usecaseui-portal/src/app/views/ccvpn-detail/ccvpn-detail.component.spec.ts index 2d466531..3d112bf8 100644 --- a/usecaseui-portal/src/app/ccvpn-detail/ccvpn-detail.component.spec.ts +++ b/usecaseui-portal/src/app/views/ccvpn-detail/ccvpn-detail.component.spec.ts @@ -20,7 +20,7 @@ import { NZ_I18N, en_US } from 'ng-zorro-antd'; import { TranslateModule, TranslateLoader, TranslateService, TranslateFakeLoader } from '@ngx-translate/core'; import { CcvpnDetailComponent } from './ccvpn-detail.component'; -import { MyhttpService } from '../myhttp.service'; +import { MyhttpService } from '../../core/services/myhttp.service'; describe('CcvpnDetailComponent', () => { let component: CcvpnDetailComponent; diff --git a/usecaseui-portal/src/app/ccvpn-detail/ccvpn-detail.component.ts b/usecaseui-portal/src/app/views/ccvpn-detail/ccvpn-detail.component.ts index 04931461..109c143b 100644 --- a/usecaseui-portal/src/app/ccvpn-detail/ccvpn-detail.component.ts +++ b/usecaseui-portal/src/app/views/ccvpn-detail/ccvpn-detail.component.ts @@ -14,7 +14,7 @@ limitations under the License. */ import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; -import { MyhttpService } from '../myhttp.service'; +import { MyhttpService } from '../../core/services/myhttp.service'; import * as d3 from 'd3'; @Component({ @@ -136,7 +136,7 @@ export class CcvpnDetailComponent implements OnInit { let sdwansiteresource_list = inputs[items][0]; Object.keys(sdwansiteresource_list).forEach((its) => { let input2 = {}; - if(its.search("device") != -1 && sdwansiteresource_list[its] instanceof Array === true){ + if (its.search("device") != -1 && sdwansiteresource_list[its] instanceof Array === true) { this.templateParameters["site"]["sdwandevice_list"][0] = sdwansiteresource_list[its][0]; let sitelanKey = {}; sitelanKey[its] = []; @@ -461,7 +461,7 @@ export class CcvpnDetailComponent implements OnInit { "sdwansitewan_list": [] }; inputs = Object.assign(inputs, this.siteBaseData); - inputs["sdwandevice_list"]= this.siteSdwanDevice.map((item) => { + inputs["sdwandevice_list"] = this.siteSdwanDevice.map((item) => { return Object.assign({}, item); }); inputs["sdwansitewan_list"] = this.siteWanData.map((item) => { diff --git a/usecaseui-portal/src/app/ccvpn-network/ccvpn-network.component.css b/usecaseui-portal/src/app/views/ccvpn-network/ccvpn-network.component.css index 5055205d..5055205d 100644 --- a/usecaseui-portal/src/app/ccvpn-network/ccvpn-network.component.css +++ b/usecaseui-portal/src/app/views/ccvpn-network/ccvpn-network.component.css diff --git a/usecaseui-portal/src/app/ccvpn-network/ccvpn-network.component.html b/usecaseui-portal/src/app/views/ccvpn-network/ccvpn-network.component.html index 25687f67..25687f67 100644 --- a/usecaseui-portal/src/app/ccvpn-network/ccvpn-network.component.html +++ b/usecaseui-portal/src/app/views/ccvpn-network/ccvpn-network.component.html diff --git a/usecaseui-portal/src/app/ccvpn-network/ccvpn-network.component.spec.ts b/usecaseui-portal/src/app/views/ccvpn-network/ccvpn-network.component.spec.ts index 9ec321c5..9ec321c5 100644 --- a/usecaseui-portal/src/app/ccvpn-network/ccvpn-network.component.spec.ts +++ b/usecaseui-portal/src/app/views/ccvpn-network/ccvpn-network.component.spec.ts diff --git a/usecaseui-portal/src/app/ccvpn-network/ccvpn-network.component.ts b/usecaseui-portal/src/app/views/ccvpn-network/ccvpn-network.component.ts index 3de992fd..8a56d885 100644 --- a/usecaseui-portal/src/app/ccvpn-network/ccvpn-network.component.ts +++ b/usecaseui-portal/src/app/views/ccvpn-network/ccvpn-network.component.ts @@ -16,7 +16,7 @@ import { Component, EventEmitter, OnInit, Output } from '@angular/core'; import * as d3 from 'd3'; import * as $ from 'jquery'; -import { networkHttpservice } from '../networkHttpservice.service'; +import { networkHttpservice } from '../../core/services/networkHttpservice.service'; @Component({ selector: 'app-ccvpn-network', @@ -131,9 +131,9 @@ export class CcvpnNetworkComponent implements OnInit { charge = -300; imgmap = { - '1': './assets/images/cloud-county1.png', - '2': './assets/images/tp.png', - '3': './assets/images/cloud-out.png', + '1': 'assets/images/cloud-county1.png', + '2': 'assets/images/tp.png', + '3': 'assets/images/cloud-out.png', }; tpoption = { container: '#tpContainer', diff --git a/usecaseui-portal/src/app/fcaps/fcaps.component.html b/usecaseui-portal/src/app/views/fcaps/fcaps.component.html index edd2111a..edd2111a 100644 --- a/usecaseui-portal/src/app/fcaps/fcaps.component.html +++ b/usecaseui-portal/src/app/views/fcaps/fcaps.component.html diff --git a/usecaseui-portal/src/app/services/services.component.less b/usecaseui-portal/src/app/views/fcaps/fcaps.component.less index e69de29b..e69de29b 100644 --- a/usecaseui-portal/src/app/services/services.component.less +++ b/usecaseui-portal/src/app/views/fcaps/fcaps.component.less diff --git a/usecaseui-portal/src/app/fcaps/fcaps.component.spec.ts b/usecaseui-portal/src/app/views/fcaps/fcaps.component.spec.ts index 42bdbc0f..42bdbc0f 100644 --- a/usecaseui-portal/src/app/fcaps/fcaps.component.spec.ts +++ b/usecaseui-portal/src/app/views/fcaps/fcaps.component.spec.ts diff --git a/usecaseui-portal/src/app/fcaps/fcaps.component.ts b/usecaseui-portal/src/app/views/fcaps/fcaps.component.ts index 7f9ab7f4..7f9ab7f4 100644 --- a/usecaseui-portal/src/app/fcaps/fcaps.component.ts +++ b/usecaseui-portal/src/app/views/fcaps/fcaps.component.ts diff --git a/usecaseui-portal/src/app/home/home.component.css b/usecaseui-portal/src/app/views/home/home.component.css index 41b3f5fe..41b3f5fe 100644 --- a/usecaseui-portal/src/app/home/home.component.css +++ b/usecaseui-portal/src/app/views/home/home.component.css diff --git a/usecaseui-portal/src/app/home/home.component.html b/usecaseui-portal/src/app/views/home/home.component.html index 4126f241..4126f241 100644 --- a/usecaseui-portal/src/app/home/home.component.html +++ b/usecaseui-portal/src/app/views/home/home.component.html diff --git a/usecaseui-portal/src/app/home/home.component.less b/usecaseui-portal/src/app/views/home/home.component.less index 9e768cf7..9e768cf7 100644 --- a/usecaseui-portal/src/app/home/home.component.less +++ b/usecaseui-portal/src/app/views/home/home.component.less diff --git a/usecaseui-portal/src/app/home/home.component.spec.ts b/usecaseui-portal/src/app/views/home/home.component.spec.ts index 9e463e65..5456a323 100644 --- a/usecaseui-portal/src/app/home/home.component.spec.ts +++ b/usecaseui-portal/src/app/views/home/home.component.spec.ts @@ -7,10 +7,10 @@ import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { RouterTestingModule } from '@angular/router/testing'; import { HomeComponent } from './home.component'; -import { PieComponent } from '../components/charts/pie/pie.component'; -import { BarComponent } from '../components/charts/bar/bar.component'; -import { LineComponent } from '../components/charts/line/line.component'; -import { HomesService } from '../homes.service'; +import { PieComponent } from '../../shared/components/charts/pie/pie.component'; +import { BarComponent } from '../../shared/components/charts/bar/bar.component'; +import { LineComponent } from '../../shared/components/charts/line/line.component'; +import { HomesService } from '../../core/services/homes.service'; describe('HomeComponent', () => { let component: HomeComponent; diff --git a/usecaseui-portal/src/app/home/home.component.ts b/usecaseui-portal/src/app/views/home/home.component.ts index 2b1f6765..11a0f1a8 100644 --- a/usecaseui-portal/src/app/home/home.component.ts +++ b/usecaseui-portal/src/app/views/home/home.component.ts @@ -14,8 +14,8 @@ limitations under the License. */ import { Component, OnInit, Input, Output, EventEmitter, HostBinding } from '@angular/core'; -import { HomesService } from '../homes.service'; -import { slideToRight } from '../animates'; +import { HomesService } from '../../core/services/homes.service'; +import { slideToRight } from '../../animates'; import { TranslateService } from "@ngx-translate/core"; import { Router } from '@angular/router'; @@ -99,7 +99,7 @@ export class HomeComponent implements OnInit { getHomeServiceData() { this.myhttp.getHomeServiceData() .subscribe( - (data) => { + (data) => { this.serviceNumber = data.serviceTotalNum; if (this.serviceNumber > 0) { this.serviceChart = true; @@ -108,10 +108,10 @@ export class HomeComponent implements OnInit { } this.serviceChartData = { series: [{ data: data.customerServiceList }] - }; + }; }, (err) => { - console.log(err); + console.error(err); } ) } @@ -121,134 +121,134 @@ export class HomeComponent implements OnInit { VMAlarmChartInit: Object = { height: 180, option: { - tooltip: { - trigger: 'item', - formatter: '{b}\n{c},{d}%' - }, - color: [ - { - type: 'linear', - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, color: '#FB93C2' // 0% color - }, { - offset: 1, color: '#FB7788' // 100% color - }], - globalCoord: false - }, { - type: 'linear', - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, color: '#A6BFE4' // 0% color - }, { - offset: 1, color: '#7A8BAE' // 100% color - }], - globalCoord: false - }], - series: [{ - name: "告警信息", - radius: ['50%', '70%'], - center: ['50%', '45%'], - label: { - normal: { - show: false, - }, - emphasis: { - show: true, - formatter: '{b}\n{c},{d}%', - color: "#3C4F8C" - } - }, - - }] - } - }; + tooltip: { + trigger: 'item', + formatter: '{b}\n{c},{d}%' + }, + color: [ + { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [{ + offset: 0, color: '#FB93C2' // 0% color + }, { + offset: 1, color: '#FB7788' // 100% color + }], + globalCoord: false + }, { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [{ + offset: 0, color: '#A6BFE4' // 0% color + }, { + offset: 1, color: '#7A8BAE' // 100% color + }], + globalCoord: false + }], + series: [{ + name: "告警信息", + radius: ['50%', '70%'], + center: ['50%', '45%'], + label: { + normal: { + show: false, + }, + emphasis: { + show: true, + formatter: '{b}\n{c},{d}%', + color: "#3C4F8C" + } + }, + + }] + } + }; // alarm bar alarmChartData: Object; alarmChartInit: Object = { height: 180, option: { - tooltip: { - trigger: 'item', - formatter: '{b}\n{c},{d}%' - }, - legend: { - orient: 'vertical', - left: '0px', - bottom: '0px', - itemWidth: 10, - itemHeight: 10, - textStyle: { - color: "#3C4F8C" - }, - data: ['Active', 'Fixed'] - }, - color: [ - { - type: 'linear', - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, color: '#FB93C2' // 0% color - }, { - offset: 1, color: '#FB7788' // 100% color - }], - globalCoord: false - }, { - type: 'linear', - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, color: '#A6BFE4' // 0% - }, { - offset: 1, color: '#7A8BAE' // 100% - }], - globalCoord: false - }], - series: [{ - name: "告警信息", - radius: '55%', - center: ['50%', '45%'], - label: { - normal: { - show: false, - }, - emphasis: { - show: true, - formatter: '{b}\n{c},{d}%', - color: "#3C4F8C" - } - } - }] + tooltip: { + trigger: 'item', + formatter: '{b}\n{c},{d}%' + }, + legend: { + orient: 'vertical', + left: '0px', + bottom: '0px', + itemWidth: 10, + itemHeight: 10, + textStyle: { + color: "#3C4F8C" + }, + data: ['Active', 'Fixed'] + }, + color: [ + { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [{ + offset: 0, color: '#FB93C2' // 0% color + }, { + offset: 1, color: '#FB7788' // 100% color + }], + globalCoord: false + }, { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [{ + offset: 0, color: '#A6BFE4' // 0% + }, { + offset: 1, color: '#7A8BAE' // 100% + }], + globalCoord: false + }], + series: [{ + name: "告警信息", + radius: '55%', + center: ['50%', '45%'], + label: { + normal: { + show: false, + }, + emphasis: { + show: true, + formatter: '{b}\n{c},{d}%', + color: "#3C4F8C" + } } - }; - - getHomeAlarmData() { - this.myhttp.getHomeAlarmData() - .subscribe((data) => { - this.alarmChartData = { - series: [{ - data: [{name: "Active", value: data[0]}, {name: "Fixed", value: data[1]}] - }] - }; - this.VMAlarmChartData = { - series: [{ - data: [{name: "Active", value: data[0]}, {name: "Fixed", value: data[1]}] - }] - }; - }) + }] } + }; + + getHomeAlarmData() { + this.myhttp.getHomeAlarmData() + .subscribe((data) => { + this.alarmChartData = { + series: [{ + data: [{ name: "Active", value: data[0] }, { name: "Fixed", value: data[1] }] + }] + }; + this.VMAlarmChartData = { + series: [{ + data: [{ name: "Active", value: data[0] }, { name: "Fixed", value: data[1] }] + }] + }; + }) + } // alarm line alarmLineChartData: Object; @@ -393,7 +393,7 @@ export class HomeComponent implements OnInit { ] } }, (err) => { - console.log(err); + console.error(err); }) } @@ -427,7 +427,7 @@ export class HomeComponent implements OnInit { ] } }, (err) => { - console.log(err); + console.error(err); }) } @@ -461,14 +461,14 @@ export class HomeComponent implements OnInit { ] } }, (err) => { - console.log(err); + console.error(err); }) } // sourceName sourceNameList = ['performanceNameOne']; sourceNameSelected = null; - + listSortMasters = null; getListSortMasters() { @@ -477,7 +477,7 @@ export class HomeComponent implements OnInit { } this.myhttp.getListSortMasters() .subscribe((data) => { - this.listSortMasters = JSON.stringify(data); + this.listSortMasters = JSON.stringify(data); sessionStorage.setItem('listSortMasters', this.listSortMasters) }) } @@ -489,7 +489,7 @@ export class HomeComponent implements OnInit { }) } sourceNameSelect(item) { - if (this.sourceNameSelected != item) { + if (this.sourceNameSelected != item) { this.sourceNameSelected = item; this.getHomeAlarmChartData() } @@ -503,7 +503,7 @@ export class HomeComponent implements OnInit { endTime: nowTime, format: "day" } - + this.myhttp.getHomeAlarmChartData(obj) .subscribe((data) => { this.alarmLineChartData = { @@ -517,7 +517,7 @@ export class HomeComponent implements OnInit { ] } }, (err) => { - console.log(err); + console.error(err); }) } diff --git a/usecaseui-portal/src/app/management/management.component.html b/usecaseui-portal/src/app/views/management/management.component.html index 2efa3f8e..c96f0253 100644 --- a/usecaseui-portal/src/app/management/management.component.html +++ b/usecaseui-portal/src/app/views/management/management.component.html @@ -14,23 +14,26 @@ limitations under the License. --> <div class="content" style="padding: 20px 20px;height: 100vh"> - <div class="management" *ngIf="nocuster" > + <div class="management" *ngIf="nocuster"> <div class="title"> <p> {{"i18nTextDefine_Create_initial_customer" | translate}} </p> <span> {{"i18nTextDefine_Customer_not_in_ONAP" | translate}} </span> <span> {{"i18nTextDefine_CreateCustomer" | translate}} </span> - <img src="./assets/images/customer01.png" alt=""> - <input nz-input placeholder=" {{'i18nTextDefine_Input_customerName' | translate}} " nzSize="large" style="height: 50px" [(ngModel)]="firstCustomer"> + <img src="../../../assets/images/customer01.png" alt=""> + <input nz-input placeholder=" {{'i18nTextDefine_Input_customerName' | translate}} " nzSize="large" + style="height: 50px" [(ngModel)]="firstCustomer"> <div class="action"> - <button nz-button nzType="primary" class="cancel" (click) = "clearCustomerInput()"> {{"i18nTextDefine_Cancel" | translate}} </button> - <button nz-button nzType="primary" class="add" (click) = "createNewCustomer(firstCustomer)"> {{"i18nTextDefine_Add" | translate}} </button> + <button nz-button nzType="primary" class="cancel" (click)="clearCustomerInput()"> + {{"i18nTextDefine_Cancel" | translate}} </button> + <button nz-button nzType="primary" class="add" (click)="createNewCustomer(firstCustomer)"> + {{"i18nTextDefine_Add" | translate}} </button> </div> </div> <div class="image"> - <img src="./assets/images/customer02.png" alt=""> + <img src="../../../assets/images/customer02.png" alt=""> </div> </div> <div *ngIf="!nocuster" style="height: 100%"> <app-customer></app-customer> </div> -</div> +</div>
\ No newline at end of file diff --git a/usecaseui-portal/src/app/management/management.component.less b/usecaseui-portal/src/app/views/management/management.component.less index 5a3a0f42..5a3a0f42 100644 --- a/usecaseui-portal/src/app/management/management.component.less +++ b/usecaseui-portal/src/app/views/management/management.component.less diff --git a/usecaseui-portal/src/app/management/management.component.spec.ts b/usecaseui-portal/src/app/views/management/management.component.spec.ts index f6152432..f6152432 100644 --- a/usecaseui-portal/src/app/management/management.component.spec.ts +++ b/usecaseui-portal/src/app/views/management/management.component.spec.ts diff --git a/usecaseui-portal/src/app/management/management.component.ts b/usecaseui-portal/src/app/views/management/management.component.ts index 0a5bfd2e..8b3afea7 100644 --- a/usecaseui-portal/src/app/management/management.component.ts +++ b/usecaseui-portal/src/app/views/management/management.component.ts @@ -14,8 +14,8 @@ limitations under the License. */ import { Component, OnInit , HostBinding} from '@angular/core'; -import { showHideAnimate, slideToRight } from '../animates'; -import { ManagemencsService } from '../managemencs.service'; +import { showHideAnimate, slideToRight } from '../../animates'; +import { ManagemencsService } from '../../core/services/managemencs.service'; @Component({ selector: 'app-management', diff --git a/usecaseui-portal/src/app/performance/performance-vm/performance-vm.component.css b/usecaseui-portal/src/app/views/performance/performance-vm/performance-vm.component.css index e9631957..e9631957 100644 --- a/usecaseui-portal/src/app/performance/performance-vm/performance-vm.component.css +++ b/usecaseui-portal/src/app/views/performance/performance-vm/performance-vm.component.css diff --git a/usecaseui-portal/src/app/performance/performance-vm/performance-vm.component.html b/usecaseui-portal/src/app/views/performance/performance-vm/performance-vm.component.html index 06d84353..06d84353 100644 --- a/usecaseui-portal/src/app/performance/performance-vm/performance-vm.component.html +++ b/usecaseui-portal/src/app/views/performance/performance-vm/performance-vm.component.html diff --git a/usecaseui-portal/src/app/performance/performance-vm/performance-vm.component.less b/usecaseui-portal/src/app/views/performance/performance-vm/performance-vm.component.less index 31623dcf..31623dcf 100644 --- a/usecaseui-portal/src/app/performance/performance-vm/performance-vm.component.less +++ b/usecaseui-portal/src/app/views/performance/performance-vm/performance-vm.component.less diff --git a/usecaseui-portal/src/app/performance/performance-vm/performance-vm.component.spec.ts b/usecaseui-portal/src/app/views/performance/performance-vm/performance-vm.component.spec.ts index b66b2ea0..b66b2ea0 100644 --- a/usecaseui-portal/src/app/performance/performance-vm/performance-vm.component.spec.ts +++ b/usecaseui-portal/src/app/views/performance/performance-vm/performance-vm.component.spec.ts diff --git a/usecaseui-portal/src/app/performance/performance-vm/performance-vm.component.ts b/usecaseui-portal/src/app/views/performance/performance-vm/performance-vm.component.ts index 73e77c52..c179cdbb 100644 --- a/usecaseui-portal/src/app/performance/performance-vm/performance-vm.component.ts +++ b/usecaseui-portal/src/app/views/performance/performance-vm/performance-vm.component.ts @@ -1,5 +1,5 @@ import { Component, OnInit, HostBinding } from '@angular/core'; -import { slideToRight, showHideAnimate } from '../../animates'; +import { slideToRight, showHideAnimate } from '../../../animates'; @Component({ selector: 'app-performance-vm', diff --git a/usecaseui-portal/src/app/performance/performance-vnf/performance-vnf.component.css b/usecaseui-portal/src/app/views/performance/performance-vnf/performance-vnf.component.css index 269af7a9..269af7a9 100644 --- a/usecaseui-portal/src/app/performance/performance-vnf/performance-vnf.component.css +++ b/usecaseui-portal/src/app/views/performance/performance-vnf/performance-vnf.component.css diff --git a/usecaseui-portal/src/app/performance/performance-vnf/performance-vnf.component.html b/usecaseui-portal/src/app/views/performance/performance-vnf/performance-vnf.component.html index f151ef33..9e0e2ed6 100644 --- a/usecaseui-portal/src/app/performance/performance-vnf/performance-vnf.component.html +++ b/usecaseui-portal/src/app/views/performance/performance-vnf/performance-vnf.component.html @@ -14,9 +14,9 @@ limitations under the License. --> <h3 class="title"> - <span (click)="performanceShow()" style="cursor:pointer;" *ngIf="graphicshow" >Performance VNF</span> - <span (click)="graphicShow()" *ngIf="graphicshow">/ Graphic list </span> - <span *ngIf="detailshow">/ Details </span> + <span (click)="performanceShow()" style="cursor:pointer;" *ngIf="graphicshow">Performance VNF</span> + <span (click)="graphicShow()" *ngIf="graphicshow">/ Graphic list </span> + <span *ngIf="detailshow">/ Details </span> </h3> <div class="select" [@showHideAnimate]="state"> <span>Source Name: </span> @@ -28,33 +28,36 @@ </li> </ul> </nz-dropdown> - <button class="search" nz-button [nzType]="'primary'"><i class="anticon anticon-search"></i><span>Search</span></button> + <button class="search" nz-button [nzType]="'primary'"><i + class="anticon anticon-search"></i><span>Search</span></button> <!-- <button class="search" nz-button [nzType]="'primary'" (click)="getperformanceSsourceNames()"><i class="anticon anticon-search"></i><span>Search</span></button> --> </div> <div class="content" [@showHideAnimate]="state"> <div class="vnfs"> <div class="vnf" *ngFor="let item of totalRecords"> - <img src="../../../assets/images/vnf01.png" title="VNF" (click)="graphicShow2(item)"> + <img src="../../../../assets/images/vnf01.png" title="VNF" (click)="graphicShow2(item)"> <!-- <h3>{{item.name}}</h3> --> - <div class="intro"> - {{item.name}} + <div class="intro"> + {{item.name}} </div> </div> <div class="vnf" *ngFor="let item of totalpnfs"> - <img src="../../../assets/images/pnf01.png" alt="PNF" (click)="graphicShow2(item)"> - <div class="intro"> + <img src="../../../../assets/images/pnf01.png" alt="PNF" (click)="graphicShow2(item)"> + <div class="intro"> {{item.name}} </div> </div> - <div class="empty" *ngFor="let empty of emptys"></div> + <div class="empty" *ngFor="let empty of emptys"></div> </div> <div class="pages"> - <nz-pagination [(nzPageIndex)]="currentPage" [nzTotal]="vnfsdataTotal" [nzSize]="'small'" [(nzPageSize)]="pageSize" [nzPageSizeOptions]="[10,15,20,25,30]" nzShowSizeChanger nzShowQuickJumper></nz-pagination> + <nz-pagination [(nzPageIndex)]="currentPage" [nzTotal]="vnfsdataTotal" [nzSize]="'small'" + [(nzPageSize)]="pageSize" [nzPageSizeOptions]="[10,15,20,25,30]" nzShowSizeChanger nzShowQuickJumper> + </nz-pagination> </div> </div> <div [@showHideAnimate]="state2"> - <app-graphiclist (detailData)="detailShow($event)" [vnfname] = "vnfname"></app-graphiclist> + <app-graphiclist (detailData)="detailShow($event)" [vnfname]="vnfname"></app-graphiclist> </div> <div [@showHideAnimate]="state3"> <app-performance-details [detailId]="detailId"></app-performance-details> -</div> +</div>
\ No newline at end of file diff --git a/usecaseui-portal/src/app/performance/performance-vnf/performance-vnf.component.less b/usecaseui-portal/src/app/views/performance/performance-vnf/performance-vnf.component.less index cc4e1ca5..cc4e1ca5 100644 --- a/usecaseui-portal/src/app/performance/performance-vnf/performance-vnf.component.less +++ b/usecaseui-portal/src/app/views/performance/performance-vnf/performance-vnf.component.less diff --git a/usecaseui-portal/src/app/performance/performance-vnf/performance-vnf.component.spec.ts b/usecaseui-portal/src/app/views/performance/performance-vnf/performance-vnf.component.spec.ts index 18526cdd..25bcfd50 100644 --- a/usecaseui-portal/src/app/performance/performance-vnf/performance-vnf.component.spec.ts +++ b/usecaseui-portal/src/app/views/performance/performance-vnf/performance-vnf.component.spec.ts @@ -7,10 +7,10 @@ import { NZ_I18N, en_US } from 'ng-zorro-antd'; import { HttpClientModule } from '@angular/common/http'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; -import { PerformanceDetailsComponent } from '../../components/performance-details/performance-details.component'; -import { GraphiclistComponent } from '../../components/graphiclist/graphiclist.component'; +import { PerformanceDetailsComponent } from '../../../shared/components/performance-details/performance-details.component'; +import { GraphiclistComponent } from '../../../shared/components/graphiclist/graphiclist.component'; import { PerformanceVnfComponent } from './performance-vnf.component'; -import { HomesService } from '../../homes.service'; +import { HomesService } from '../../../core/services/homes.service'; describe('PerformanceVnfComponent', () => { let component: PerformanceVnfComponent; diff --git a/usecaseui-portal/src/app/performance/performance-vnf/performance-vnf.component.ts b/usecaseui-portal/src/app/views/performance/performance-vnf/performance-vnf.component.ts index 05719155..96b5404c 100644 --- a/usecaseui-portal/src/app/performance/performance-vnf/performance-vnf.component.ts +++ b/usecaseui-portal/src/app/views/performance/performance-vnf/performance-vnf.component.ts @@ -14,8 +14,8 @@ limitations under the License. */ import { Component, OnInit, HostBinding } from '@angular/core'; -import { slideToRight, showHideAnimate } from '../../animates'; -import { HomesService } from '../../homes.service'; +import { slideToRight, showHideAnimate } from '../../../animates'; +import { HomesService } from '../../../core/services/homes.service'; @Component({ selector: 'app-performance-vnf', @@ -43,22 +43,22 @@ export class PerformanceVnfComponent implements OnInit { let _this = this; setTimeout(function(){ _this.totalRecords = [ - {name:"Mfvs_MMEManagedElem entdElementMfvs_MMEM anagedELement",text:"oahgieango"}, - {name:"Mfvs_MMEManagedElem entdElementMfvs_MMEM anagedELement",text:"oahgieango"}, - {name:"Mfvs_MMEManagedElem entdElementMfvs_MMEM anagedELement",text:"oahgieango"}, - {name:"Mfvs_MMEManagedElem entdElementMfvs_MMEM anagedELement",text:"oahgieango"}, - {name:"Mfvs_MMEManagedElem entdElementMfvs_MMEM anagedELement",text:"oahgieango"}, - {name:"Mfvs_MMEManagedElem entdElementMfvs_MMEM anagedELement",text:"oahgieango"}, - {name:"Mfvs_MMEManagedElem entdElementMfvs_MMEM anagedELement",text:"oahgieango"}, - {name:"Mfvs_MMEManagedElem entdElementMfvs_MMEM anagedELement",text:"oahgieango"}, - {name:"Mfvs_MMEManagedElem entdElementMfvs_MMEM anagedELement",text:"oahgieango"}, - {name:"Mfvs_MMEManagedElem entdElementMfvs_MMEM anagedELement",text:"oahgieango"}, - {name:"Mfvs_MMEManagedElem entdElementMfvs_MMEM anagedELement",text:"oahgieango"} + {name:"Mfvs_MMEManagedElem entdElementMfvs_MMEM anagedELement��",text:"oahgieango"}, + {name:"Mfvs_MMEManagedElem entdElementMfvs_MMEM anagedELement��",text:"oahgieango"}, + {name:"Mfvs_MMEManagedElem entdElementMfvs_MMEM anagedELement��",text:"oahgieango"}, + {name:"Mfvs_MMEManagedElem entdElementMfvs_MMEM anagedELement��",text:"oahgieango"}, + {name:"Mfvs_MMEManagedElem entdElementMfvs_MMEM anagedELement��",text:"oahgieango"}, + {name:"Mfvs_MMEManagedElem entdElementMfvs_MMEM anagedELement��",text:"oahgieango"}, + {name:"Mfvs_MMEManagedElem entdElementMfvs_MMEM anagedELement��",text:"oahgieango"}, + {name:"Mfvs_MMEManagedElem entdElementMfvs_MMEM anagedELement��",text:"oahgieango"}, + {name:"Mfvs_MMEManagedElem entdElementMfvs_MMEM anagedELement��",text:"oahgieango"}, + {name:"Mfvs_MMEManagedElem entdElementMfvs_MMEM anagedELement��",text:"oahgieango"}, + {name:"Mfvs_MMEManagedElem entdElementMfvs_MMEM anagedELement��",text:"oahgieango"} ]; _this.totalpnfs = [ - {name:"Mfvs_MMEManagedElem entdElementMfvs_MMEM anagedELement",text:"oahgieango"}, - {name:"Mfvs_MMEManagedElem entdElementMfvs_MMEM anagedELement",text:"oahgieango"}, - {name:"Mfvs_MMEManagedElem entdElementMfvs_MMEM anagedELement",text:"oahgieango"} + {name:"Mfvs_MMEManagedElem entdElementMfvs_MMEM anagedELement��",text:"oahgieango"}, + {name:"Mfvs_MMEManagedElem entdElementMfvs_MMEM anagedELement��",text:"oahgieango"}, + {name:"Mfvs_MMEManagedElem entdElementMfvs_MMEM anagedELement��",text:"oahgieango"} ] _this.emptys = new Array(12-_this.totalRecords.length); },300) diff --git a/usecaseui-portal/src/app/performance/performance.component.css b/usecaseui-portal/src/app/views/performance/performance.component.css index f2169538..f2169538 100644 --- a/usecaseui-portal/src/app/performance/performance.component.css +++ b/usecaseui-portal/src/app/views/performance/performance.component.css diff --git a/usecaseui-portal/src/app/performance/performance.component.html b/usecaseui-portal/src/app/views/performance/performance.component.html index cd92b659..cd92b659 100644 --- a/usecaseui-portal/src/app/performance/performance.component.html +++ b/usecaseui-portal/src/app/views/performance/performance.component.html diff --git a/usecaseui-portal/src/app/performance/performance.component.less b/usecaseui-portal/src/app/views/performance/performance.component.less index 2b1949a5..2b1949a5 100644 --- a/usecaseui-portal/src/app/performance/performance.component.less +++ b/usecaseui-portal/src/app/views/performance/performance.component.less diff --git a/usecaseui-portal/src/app/performance/performance.component.spec.ts b/usecaseui-portal/src/app/views/performance/performance.component.spec.ts index 1bdc919d..1bdc919d 100644 --- a/usecaseui-portal/src/app/performance/performance.component.spec.ts +++ b/usecaseui-portal/src/app/views/performance/performance.component.spec.ts diff --git a/usecaseui-portal/src/app/performance/performance.component.ts b/usecaseui-portal/src/app/views/performance/performance.component.ts index 12405e9e..12405e9e 100644 --- a/usecaseui-portal/src/app/performance/performance.component.ts +++ b/usecaseui-portal/src/app/views/performance/performance.component.ts diff --git a/usecaseui-portal/src/app/services/onboard-vnf-vm/onboard-vnf-vm.component.css b/usecaseui-portal/src/app/views/services/onboard-vnf-vm/onboard-vnf-vm.component.css index 4e80750c..4e80750c 100644 --- a/usecaseui-portal/src/app/services/onboard-vnf-vm/onboard-vnf-vm.component.css +++ b/usecaseui-portal/src/app/views/services/onboard-vnf-vm/onboard-vnf-vm.component.css diff --git a/usecaseui-portal/src/app/services/onboard-vnf-vm/onboard-vnf-vm.component.html b/usecaseui-portal/src/app/views/services/onboard-vnf-vm/onboard-vnf-vm.component.html index 70ee81c0..70ee81c0 100644 --- a/usecaseui-portal/src/app/services/onboard-vnf-vm/onboard-vnf-vm.component.html +++ b/usecaseui-portal/src/app/views/services/onboard-vnf-vm/onboard-vnf-vm.component.html diff --git a/usecaseui-portal/src/app/services/onboard-vnf-vm/onboard-vnf-vm.component.less b/usecaseui-portal/src/app/views/services/onboard-vnf-vm/onboard-vnf-vm.component.less index c31409c9..c31409c9 100644 --- a/usecaseui-portal/src/app/services/onboard-vnf-vm/onboard-vnf-vm.component.less +++ b/usecaseui-portal/src/app/views/services/onboard-vnf-vm/onboard-vnf-vm.component.less diff --git a/usecaseui-portal/src/app/services/onboard-vnf-vm/onboard-vnf-vm.component.spec.ts b/usecaseui-portal/src/app/views/services/onboard-vnf-vm/onboard-vnf-vm.component.spec.ts index 0e49f656..0e49f656 100644 --- a/usecaseui-portal/src/app/services/onboard-vnf-vm/onboard-vnf-vm.component.spec.ts +++ b/usecaseui-portal/src/app/views/services/onboard-vnf-vm/onboard-vnf-vm.component.spec.ts diff --git a/usecaseui-portal/src/app/services/onboard-vnf-vm/onboard-vnf-vm.component.ts b/usecaseui-portal/src/app/views/services/onboard-vnf-vm/onboard-vnf-vm.component.ts index dd2e7dd7..4899aed8 100644 --- a/usecaseui-portal/src/app/services/onboard-vnf-vm/onboard-vnf-vm.component.ts +++ b/usecaseui-portal/src/app/views/services/onboard-vnf-vm/onboard-vnf-vm.component.ts @@ -17,13 +17,11 @@ import { HttpClient, HttpRequest, HttpResponse } from '@angular/common/http'; import { Component, OnInit, HostBinding, TemplateRef } from '@angular/core'; import { NzNotificationService } from 'ng-zorro-antd'; // import { MyhttpService } from '../../myhttp.service'; -import { onboardService } from '../../onboard.service'; -import { slideToRight } from '../../animates'; +import { onboardService } from '../../../core/services/onboard.service'; +import { slideToRight } from '../../../animates'; import { NzMessageService, UploadFile, NzModalRef, NzModalService } from 'ng-zorro-antd'; import { filter } from 'rxjs/operators'; import { Title } from '@angular/platform-browser'; -import * as $ from 'jquery'; - @Component({ selector: 'app-onboard-vnf-vm', @@ -109,12 +107,12 @@ export class OnboardVnfVmComponent implements OnInit { this.notification.template(template); } notificationSuccess(notificationModel) { - this.notificationAttributes.imgPath = "../../../assets/images/execute-success.png"; + this.notificationAttributes.imgPath = "../../../../assets/images/execute-success.png"; this.notificationAttributes.status = "Success"; this.notificationModelShow(notificationModel); } notificationFailed(notificationModel) { - this.notificationAttributes.imgPath = "../../../assets/images/execute-faild.png"; + this.notificationAttributes.imgPath = "../../../../assets/images/execute-faild.png"; this.notificationAttributes.status = "Failed"; this.notificationModelShow(notificationModel); } diff --git a/usecaseui-portal/src/app/services/services-list/services-list.component.css b/usecaseui-portal/src/app/views/services/services-list/services-list.component.css index 0a7f92eb..0a7f92eb 100644 --- a/usecaseui-portal/src/app/services/services-list/services-list.component.css +++ b/usecaseui-portal/src/app/views/services/services-list/services-list.component.css diff --git a/usecaseui-portal/src/app/services/services-list/services-list.component.html b/usecaseui-portal/src/app/views/services/services-list/services-list.component.html index d47b342c..6f6d8f74 100644 --- a/usecaseui-portal/src/app/services/services-list/services-list.component.html +++ b/usecaseui-portal/src/app/views/services/services-list/services-list.component.html @@ -15,66 +15,58 @@ --> <div class="action ant-tabs-bar"> - <span> - <i class="icon"> - <img src="../../../assets/images/customer.png" alt=""> - </i> - {{"i18nTextDefine_Customer" | translate}} : - </span> + <span><i style="margin-right: 10px"><img src="assets/images/customer.png" alt=""></i> + {{"i18nTextDefine_Customer" | translate}} : </span> <nz-dropdown [nzTrigger]="'click'" [nzPlacement]="'bottomLeft'"> <button nz-button nz-dropdown><span>{{customerSelected.name}}</span> <i class="anticon anticon-down"></i> </button> - <ul nz-menu> + <ul nz-menu style="min-height:40px;max-height: 200px; overflow: auto;"> <li nz-menu-item (click)="choseCustomer(item)" *ngFor="let item of customerList"> - <a title="{{item.name}}">{{item.name}}</a> + <a title="{{item.name}}" + style="max-width: 165px; overflow: hidden; text-overflow: ellipsis;">{{item.name}}</a> </li> </ul> </nz-dropdown> - <span> - <i class="icon"> - <img src="../../../assets/images/service-type.png"alt=""> - </i> - {{"i18nTextDefine_ServiceType" | translate}} : - </span> + <span style="margin-left:40px"><i style="margin-right: 10px"><img src="assets/images/service-type.png" alt=""></i> + {{"i18nTextDefine_ServiceType" | translate}} : </span> <nz-dropdown [nzTrigger]="'click'" [nzPlacement]="'bottomLeft'"> <button nz-button nz-dropdown><span>{{serviceTypeSelected.name}}</span> <i class="anticon anticon-down"></i> </button> - <ul nz-menu> + <ul nz-menu style="min-height:40px;max-height: 200px; overflow: auto;"> <li nz-menu-item (click)="choseServiceType(item)" *ngFor="let item of serviceTypeList"> - <a title="{{item.name}}">{{item.name}}</a> + <a title="{{item.name}}" + style="max-width: 165px; overflow: hidden; text-overflow: ellipsis;">{{item.name}}</a> </li> </ul> </nz-dropdown> - <button class="create" nz-button [nzType]="'primary'" (click)="createModal()"> - <i *ngIf="width>1200" class="anticon anticon-plus"></i> - <span> {{"i18nTextDefine_Create" | translate}} </span> + <button class="create" nz-button [nzType]="'primary'" (click)="createModal()"><i class="anticon anticon-plus" + style="transform: scale(1.5);line-height: 15px;margin-right: 5px;"></i><span> + {{"i18nTextDefine_Create" | translate}} </span> </button> <nz-modal nzWidth="428" [(nzVisible)]="isVisible" nzTitle=" {{'i18nTextDefine_ServiceCreation' | translate}} " - (nzOnCancel)="handleCancel()" - (nzOnOk)="handleOk()" nzClassName="serviceCreationModel" - nzCancelText=" {{'i18nTextDefine_Cancel' | translate}} " - nzOkText=" {{'i18nTextDefine_modelOk' | translate}} "> + (nzOnCancel)="handleCancel()" (nzOnOk)="handleOk()" nzClassName="serviceCreationModel" + nzCancelText=" {{'i18nTextDefine_Cancel' | translate}} " nzOkText=" {{'i18nTextDefine_modelOk' | translate}} "> <div class="select-list"> <span style="display:inline-block;"> {{"i18nTextDefine_Customer" | translate}} : </span> <nz-select style="width: 176px;float: right;" [(ngModel)]="customerSelected2.name" nzAllowClear - (ngModelChange)="customerChange()"> + (ngModelChange)="customerChange()"> <nz-option *ngFor="let item of customerList2" [nzValue]="item.name" [nzLabel]="item.name"></nz-option> </nz-select> </div> <div class="select-list"> <span style="display:inline-block;"> {{"i18nTextDefine_ServiceType" | translate}} : </span> <nz-select style="width: 176px;float: right;" [(ngModel)]="serviceTypeSelectedName" nzAllowClear - (ngModelChange)="serviceTypeChange()"> - <nz-option *ngFor="let item of serviceTypeList2" [nzValue]="item.name" - [nzLabel]="item.name"></nz-option> + (ngModelChange)="serviceTypeChange()"> + <nz-option *ngFor="let item of serviceTypeList2" [nzValue]="item.name" [nzLabel]="item.name"> + </nz-option> </nz-select> </div> <div class="select-list"> <span style="display:inline-block;"> {{"i18nTextDefine_UseCase" | translate}} : </span> <nz-select style="width: 176px;float: right;" [(ngModel)]="templateTypeSelected" nzAllowClear - (ngModelChange)="choseTemplateType()"> + (ngModelChange)="choseTemplateType()"> <!-- <nz-option *ngFor="let item of templateType" [nzValue]="item" [nzLabel]="item"></nz-option> --> <nz-option nzValue="SOTN" nzLabel="SOTN"></nz-option> <nz-option nzValue="CCVPN" nzLabel="CCVPN"></nz-option> @@ -100,7 +92,7 @@ <div *ngIf="templateTypeSelected == 'E2E Service'"> <div class="check-box" style="margin:30px; height: 50px"> <input class="check-box-style" style="zoom: 1.8; width: 70px" type="checkbox" - [(ngModel)]="isSol005Interface" value="true" nzAllowClear> + [(ngModel)]="isSol005Interface" value="true" nzAllowClear> <label class="label" style="font-size: 20px; color: rgb(60,79,140,0.5)">Sol005</label> </div> </div> @@ -131,110 +123,101 @@ </li> </ul> <div class="list" id="services-list" [ngClass]="{'listdisplay':listDisplay == true}"> - <nz-table *ngIf="1" - #nzTable [nzData]="tableData" - nzShowSizeChanger - [nzFrontPagination]="false" - [nzShowQuickJumper]="true" - [nzPageSizeOptions]="[5,10,15,20]" - [nzTotal]='total' - [(nzPageSize)]="pageSize" - [(nzPageIndex)]='pageIndex' - [nzLoading]="loading" - [nzSize]="'middle'" - [nzScroll]="{ y: '58vh' }" - (nzPageIndexChange)="searchData()" - (nzPageSizeChange)="searchData(true)"> + <nz-table *ngIf="1" #nzTable [nzData]="tableData" nzShowSizeChanger [nzFrontPagination]="false" + [nzShowQuickJumper]="true" [nzPageSizeOptions]="[5,10,15,20]" [nzTotal]='total' [(nzPageSize)]="pageSize" + [(nzPageIndex)]='pageIndex' [nzLoading]="loading" [nzSize]="'middle'" [nzScroll]="{ y: '58vh' }" + (nzPageIndexChange)="searchData()" (nzPageSizeChange)="searchData(true)"> <thead> - <tr> - <th nzWidth="5%"> {{"i18nTextDefine_NO" | translate}}</th> - <th nzWidth="5%"></th> - <th nzWidth="20%"> {{"i18nTextDefine_Name" | translate}}</th> - <th nzWidth="20%"> {{"i18nTextDefine_InstanceID" | translate}}</th> - <th nzWidth="15%"> {{"i18nTextDefine_UseCase" | translate}}</th> - <th nzWidth="20%"> {{"i18nTextDefine_Status" | translate}}</th> - <th nzWidth="15%"> {{"i18nTextDefine_Action" | translate}}</th> - </tr> + <tr> + <th nzWidth="5%"> {{"i18nTextDefine_NO" | translate}}</th> + <th nzWidth="5%"></th> + <th nzWidth="20%"> {{"i18nTextDefine_Name" | translate}}</th> + <th nzWidth="20%"> {{"i18nTextDefine_InstanceID" | translate}}</th> + <th nzWidth="15%"> {{"i18nTextDefine_UseCase" | translate}}</th> + <th nzWidth="20%"> {{"i18nTextDefine_Status" | translate}}</th> + <th nzWidth="15%"> {{"i18nTextDefine_Action" | translate}}</th> + </tr> </thead> <tbody> - <ng-template ngFor let-data [ngForOf]="nzTable.data" let-i="index"> - <tr> - <td>{{pageSize*(pageIndex-1) + i+1}}</td> - <td [nzShowExpand]="data.childServiceInstances[0]" [(nzExpand)]="data.expand"></td> - <td>{{data["service-instance-name"] || data.nsName}}</td> - <td>{{data["service-instance-id"] || data.nsInstanceId}}</td> - <td> - <p [ngClass]="{'e2eColor':data.serviceDomain=='E2E Service','nsColor':data.serviceDomain=='Network Service','ccvpnColor':data.serviceDomain=='CCVPN','sotnColor':data.serviceDomain=='SOTN','voLTEColor':data.serviceDomain=='voLTE type'}"> - {{data.serviceDomain}} - </p> - </td> - <td> - <span [ngClass]="{'active':data.statusClass=='2001','closed':data.statusClass=='Closed','onboarding':data.statusClass=='Onboarding', + <ng-template ngFor let-data [ngForOf]="nzTable.data" let-i="index"> + <tr> + <td>{{pageSize*(pageIndex-1) + i+1}}</td> + <td [nzShowExpand]="data.childServiceInstances[0]" [(nzExpand)]="data.expand"></td> + <td>{{data["service-instance-name"] || data.nsName}}</td> + <td>{{data["service-instance-id"] || data.nsInstanceId}}</td> + <td> + <p + [ngClass]="{'e2eColor':data.serviceDomain=='E2E Service','nsColor':data.serviceDomain=='Network Service','ccvpnColor':data.serviceDomain=='CCVPN','sotnColor':data.serviceDomain=='SOTN','voLTEColor':data.serviceDomain=='voLTE type'}"> + {{data.serviceDomain}} + </p> + </td> + <td> + <span [ngClass]="{'active':data.statusClass=='2001','closed':data.statusClass=='Closed','onboarding':data.statusClass=='Onboarding', 'updating':data.statusClass=='Updating','deleting':data.statusClass=='1002','creating':data.statusClass=='1001', 'scaling':data.statusClass=='1003','healing':data.statusClass=='1004'}" - *ngIf="data.tips != 'Available' && data.tips != 'Unavailable'">{{data.tips}}</span> - <span *ngIf="data.tips == 'Available' " style="margin-left: 10px"> - <img src="assets/images/wancheng-icon.png" alt="Available"> - </span> - <span *ngIf="data.tips == 'Unavailable' " style="margin-left: 10px"> - <img src="assets/images/shibai-icon.png" alt="Unavailable"> - </span> - <nz-progress *ngIf="data.status == 'In Progress'" [nzPercent]="data.rate" [nzShowInfo]="false" - nzStatus="active"></nz-progress> - </td> - <td> - <i [ngClass]="{'cannotclick':data.status == 'In Progress'||(data.status=='Failed' && data.operationType=='1001')||(data.status=='Failed' && data.operationType=='1002')}" - class="anticon anticon-bars" (click)="serviceDetail(data,1)"></i> - <i [ngClass]="{'cannotclick':data.status == 'In Progress'}" class="anticon anticon-delete" - (click)="deleteModel(data)"></i> - <i [ngClass]="{'cannotclick':data.status == 'In Progress'}" class="anticon anticon-ellipsis" - (click)="iconMoreShow(data,tableData)" style="transform: rotate(90deg);"></i> + *ngIf="data.tips != 'Available' && data.tips != 'Unavailable'">{{data.tips}}</span> + <span *ngIf="data.tips == 'Available' " style="margin-left: 10px"> + <img src="assets/images/wancheng-icon.png" alt="Available"> + </span> + <span *ngIf="data.tips == 'Unavailable' " style="margin-left: 10px"> + <img src="assets/images/shibai-icon.png" alt="Unavailable"> + </span> + <nz-progress *ngIf="data.status == 'In Progress'" [nzPercent]="data.rate" + [nzShowInfo]="false" nzStatus="active"></nz-progress> + </td> + <td> + <i [ngClass]="{'cannotclick':data.status == 'In Progress'||(data.status=='Failed' && data.operationType=='1001')||(data.status=='Failed' && data.operationType=='1002')}" + class="anticon anticon-bars" (click)="serviceDetail(data,1)"></i> + <i [ngClass]="{'cannotclick':data.status == 'In Progress'}" class="anticon anticon-delete" + (click)="deleteModel(data)"></i> + <i [ngClass]="{'cannotclick':data.status == 'In Progress'}" class="anticon anticon-ellipsis" + (click)="iconMoreShow(data,tableData)" style="transform: rotate(90deg);"></i> - <ul *ngIf="data.iconMore==true " class="icon-more"> - <li (click)="scaleService(data)" - [ngClass]="{'cannotclick':data.serviceDomain!='E2E Service' || data.status == 'In Progress'||(data.status=='Failed' && data.operationType=='1001')||(data.status=='Failed' && data.operationType=='1002')}"> - <i class="anticon anticon-scale"></i> - <span> {{"i18nTextDefine_Scale" | translate}} </span> - </li> - <li (click)="serviceDetail(data,2)" - [ngClass]="{'cannotclick':data.serviceDomain!='CCVPN' || data.status == 'In Progress'||(data.status=='Failed' && data.operationType=='1001')||(data.status=='Failed' && data.operationType=='1002')}"> - <i class="anticon anticon-update"></i> - <span> {{"i18nTextDefine_Update" | translate}} </span> - </li> - </ul> - <!-- <i *ngIf="data.serviceDomain=='E2E Service'||data.serviceDomain=='Network Service' " class="anticon anticon-cloud-upload-o" (click)="updataService(data)"></i> --> - <!-- <i [ngClass]="{'cannotclick':data.status == 'processing'||data.status=='Deleting'||data.status=='Creating'||data.status=='Healing'}" + <ul *ngIf="data.iconMore==true " class="icon-more"> + <li (click)="scaleService(data)" + [ngClass]="{'cannotclick':data.serviceDomain!='E2E Service' || data.status == 'In Progress'||(data.status=='Failed' && data.operationType=='1001')||(data.status=='Failed' && data.operationType=='1002')}"> + <i class="anticon anticon-scale"></i> + <span> {{"i18nTextDefine_Scale" | translate}} </span> + </li> + <li (click)="serviceDetail(data,2)" + [ngClass]="{'cannotclick':data.serviceDomain!='CCVPN' || data.status == 'In Progress'||(data.status=='Failed' && data.operationType=='1001')||(data.status=='Failed' && data.operationType=='1002')}"> + <i class="anticon anticon-update"></i> + <span> {{"i18nTextDefine_Update" | translate}} </span> + </li> + </ul> + <!-- <i *ngIf="data.serviceDomain=='E2E Service'||data.serviceDomain=='Network Service' " class="anticon anticon-cloud-upload-o" (click)="updataService(data)"></i> --> + <!-- <i [ngClass]="{'cannotclick':data.status == 'processing'||data.status=='Deleting'||data.status=='Creating'||data.status=='Healing'}" *ngIf="data.serviceDomain=='Network Service' " class="anticon anticon-reload" (click)="healService(data)"></i> --> - </td> - </tr> - <tr class="childtr" [nzExpand]="data.expand" *ngFor="let item of data.childServiceInstances"> - <td></td> - <td></td> - <td>{{item["service-instance-id"] || item.nsInstanceId || item.vnfInstanceId}}</td> - <td>{{item["service-instance-name"] || item.nsName || item.vnfInstanceName}}</td> - <td> - <p [ngClass]="{'vnfColor':item.serviceDomain=='vnf','siteColor':item.serviceDomain=='SITE','SDWANColor':item.serviceDomain=='SDWAN'}"> - {{item.serviceDomain}} - </p> - </td> - <td> - <span [ngClass]="{'healing':data.statusClass=='1004'}">{{item.tips}}</span> - <nz-progress *ngIf=" item.status == 'In Progress' " [nzPercent]="item.rate"></nz-progress> - </td> - <td> - <i [ngClass]="{'cannotclick':data.serviceDomain!='Network Service' || data.status == 'In Progress'||(data.status=='Failed' && data.operationType=='1001')||(data.status=='Failed' && data.operationType=='1002')}" - class="anticon anticon-reload" (click)="healService(item)"></i> - </td> - </tr> - </ng-template> + </td> + </tr> + <tr class="childtr" [nzExpand]="data.expand" *ngFor="let item of data.childServiceInstances"> + <td></td> + <td></td> + <td>{{item["service-instance-id"] || item.nsInstanceId || item.vnfInstanceId}}</td> + <td>{{item["service-instance-name"] || item.nsName || item.vnfInstanceName}}</td> + <td> + <p + [ngClass]="{'vnfColor':item.serviceDomain=='vnf','siteColor':item.serviceDomain=='SITE','SDWANColor':item.serviceDomain=='SDWAN'}"> + {{item.serviceDomain}} + </p> + </td> + <td> + <span [ngClass]="{'healing':data.statusClass=='1004'}">{{item.tips}}</span> + <nz-progress *ngIf=" item.status == 'In Progress' " [nzPercent]="item.rate"></nz-progress> + </td> + <td> + <i [ngClass]="{'cannotclick':data.serviceDomain!='Network Service' || data.status == 'In Progress'||(data.status=='Failed' && data.operationType=='1001')||(data.status=='Failed' && data.operationType=='1002')}" + class="anticon anticon-reload" (click)="healService(item)"></i> + </td> + </tr> + </ng-template> </tbody> </nz-table> <nz-modal nzWidth="428" [nzVisible]="scaleModelVisible" nzTitle=" {{'i18nTextDefine_Scale' | translate}} " - (nzOnCancel)="scaleCancel()" - (nzOnOk)="scaleOk(templatescalestarting,templateScaleSuccessFaild)" nzClassName="scaleModel" - nzCancelText=" {{'i18nTextDefine_Cancel' | translate}} " - nzOkText=" {{'i18nTextDefine_modelOk' | translate}} "> + (nzOnCancel)="scaleCancel()" (nzOnOk)="scaleOk(templatescalestarting,templateScaleSuccessFaild)" + nzClassName="scaleModel" nzCancelText=" {{'i18nTextDefine_Cancel' | translate}} " + nzOkText=" {{'i18nTextDefine_modelOk' | translate}} "> <h3><span style="color: red">* </span> {{"i18nTextDefine_SureScale" | translate}} </h3> <div class="question"> <h4> {{"i18nTextDefine_InstanceID" | translate}} :</h4> @@ -259,7 +242,7 @@ <div class="e2eScaleContent"> <span class="e2eScaleLable"> {{"i18nTextDefine_Number_Of_Steps" | translate}} :</span> <nz-input-number style="width: 165px;" [(ngModel)]="item.numberOfSteps" [nzMin]="1" [nzMax]="100" - nzPrecision=0 [nzStep]="1" nzPlaceHolder="number"></nz-input-number> + nzPrecision=0 [nzStep]="1" nzPlaceHolder="number"></nz-input-number> </div> <div class="e2eScaleContent"> <span class="e2eScaleLable"> {{"i18nTextDefine_ScalingDirection" | translate}} :</span> @@ -302,11 +285,10 @@ </nz-modal> <nz-modal nzWidth="428" [(nzVisible)]="deleteModelVisible" nzTitle=" {{'i18nTextDefine_delete' | translate}} " - (nzOnCancel)="deleteCancel()" - (nzOnOk)="deleteOk(templatedeletestarting,templateDeleteSuccessFaild)" - nzClassName="{{thisService['serviceDomain'] == 'Network Service'?'nsdeleteModel':'deleteModel'}}" - nzCancelText=" {{'i18nTextDefine_Cancel' | translate}} " - nzOkText=" {{'i18nTextDefine_modelOk' | translate}} "> + (nzOnCancel)="deleteCancel()" (nzOnOk)="deleteOk(templatedeletestarting,templateDeleteSuccessFaild)" + nzClassName="{{thisService['serviceDomain'] == 'Network Service'?'nsdeleteModel':'deleteModel'}}" + nzCancelText=" {{'i18nTextDefine_Cancel' | translate}} " + nzOkText=" {{'i18nTextDefine_modelOk' | translate}} "> <h3><span style="color: red">* </span> {{"i18nTextDefine_SureDelete" | translate}} </h3> <div class="question"> <h4> {{"i18nTextDefine_InstanceName" | translate}} :</h4> @@ -332,7 +314,7 @@ <h4 *ngIf="terminationType=='graceful'"> {{"i18nTextDefine_gracefulTerminationTimeout" | translate}} :</h4> <input *ngIf="terminationType=='graceful'" style="width: 306px;" nz-input - [(ngModel)]="gracefulTerminationTimeout"> + [(ngModel)]="gracefulTerminationTimeout"> </div> </div> @@ -343,16 +325,16 @@ <img src="assets/images/execute-inproess.png" alt="instance temination is starting"> </span> <div class="ant-notification-notice-message" - *ngIf="thisService['serviceDomain'] == 'CCVPN' || thisService['serviceDomain'] == 'SOTN'"> + *ngIf="thisService['serviceDomain'] == 'CCVPN' || thisService['serviceDomain'] == 'SOTN'"> {{ thisService['serviceDomain'] }} {{"i18nTextDefine_InstanceTeminationStarting" | translate}} </div> <div class="ant-notification-notice-message" - *ngIf="thisService['serviceDomain'] == 'E2E Service'">E2E + *ngIf="thisService['serviceDomain'] == 'E2E Service'">E2E {{"i18nTextDefine_InstanceTeminationStarting" | translate}} </div> <div class="ant-notification-notice-message" - *ngIf="thisService['serviceDomain'] == 'Network Service'">NS + *ngIf="thisService['serviceDomain'] == 'Network Service'">NS {{"i18nTextDefine_InstanceTeminationStarting" | translate}} </div> <div class="ant-notification-notice-description"> @@ -378,10 +360,9 @@ </nz-modal> <nz-modal nzWidth="428" [nzVisible]="healModelVisible" nzTitle=" {{'i18nTextDefine_Heal' | translate}} " - (nzOnCancel)="healCancel()" - (nzOnOk)="healOk(templatehealstarting,templatehealSuccessFaild)" nzClassName="healModel" - nzCancelText=" {{'i18nTextDefine_Cancel' | translate}} " - nzOkText=" {{'i18nTextDefine_modelOk' | translate}} "> + (nzOnCancel)="healCancel()" (nzOnOk)="healOk(templatehealstarting,templatehealSuccessFaild)" + nzClassName="healModel" nzCancelText=" {{'i18nTextDefine_Cancel' | translate}} " + nzOkText=" {{'i18nTextDefine_modelOk' | translate}} "> <h3><span style="color: red">* </span> {{"i18nTextDefine_SureHeal" | translate}} </h3> <div class="heal-question"> <p class="heal-label"> {{"i18nTextDefine_InstanceID" | translate}} : </p> @@ -396,7 +377,7 @@ <div class="question"> <p class="heal-label"> {{"i18nTextDefine_degreeHealing" | translate}} :</p> <nz-select style="width: 200px;height:42px;margin-left: 15px;border-radius: 6px" - [(ngModel)]="nsParams.degreeHealing"> + [(ngModel)]="nsParams.degreeHealing"> <nz-option nzValue="HEAL_RESTORE" nzLabel="HEAL_RESTORE"></nz-option> <nz-option nzValue="HEAL_QOS" nzLabel="HEAL_QOS"></nz-option> <nz-option nzValue="HEAL_RESET" nzLabel="HEAL_RESET"></nz-option> @@ -443,8 +424,8 @@ <div class="heal-question"> <p class="heal-label"> {{"i18nTextDefine_actionvminfo" | translate}}:</p> <nz-select - style=" float: right;width: 200px;margin-left: 15px;border-radius: 6px;margin-right: 30px" - [(ngModel)]="vmSelected"> + style=" float: right;width: 200px;margin-left: 15px;border-radius: 6px;margin-right: 30px" + [(ngModel)]="vmSelected"> <nz-option *ngFor="let item of vnfVms" [nzValue]="item" [nzLabel]="item.vmName"></nz-option> </nz-select> </div> @@ -485,27 +466,27 @@ <ng-template #templateCreatestarting> <div class="ant-notification-notice-content"> <div class="ant-notification-notice-with-icon"> - <span class="ant-notification-notice-icon"> - <img src="assets/images/execute-inproess.png" alt="instance temination is starting"> - </span> + <span class="ant-notification-notice-icon"> + <img src="assets/images/execute-inproess.png" alt="instance temination is starting"> + </span> <div class="ant-notification-notice-message" - *ngIf="thisCreateService['serviceDomain'] == 'CCVPN' || thisService['serviceDomain'] == 'SOTN'"> + *ngIf="thisCreateService['serviceDomain'] == 'CCVPN' || thisService['serviceDomain'] == 'SOTN'"> {{ thisService['serviceDomain'] }} {{"i18nTextDefine_InstanceCreationStarting" | translate}} </div> <div class="ant-notification-notice-message" - *ngIf="thisCreateService['serviceDomain'] == 'E2E Service'">E2E + *ngIf="thisCreateService['serviceDomain'] == 'E2E Service'">E2E {{"i18nTextDefine_InstanceCreationStarting" | translate}} </div> <div class="ant-notification-notice-message" - *ngIf="thisCreateService['serviceDomain'] == 'Network Service'">NS + *ngIf="thisCreateService['serviceDomain'] == 'Network Service'">NS {{"i18nTextDefine_InstanceCreationStarting" | translate}} </div> <div class="ant-notification-notice-description"> <div class="notificationlist"> <p> {{"i18nTextDefine_InstanceName" | translate}} :</p> <span>{{ thisCreateService["service-instance-name"] }} - </span> + </span> </div> <div class="notificationlist"> <p> {{"i18nTextDefine_Customer" | translate}} :</p> @@ -523,36 +504,36 @@ <ng-template #templateCreateSuccessFaild> <div class="ant-notification-notice-content"> <div class="ant-notification-notice-with-icon"> - <span class="ant-notification-notice-icon"> - <img src="assets/images/execute-success.png" alt="instance temination is starting" - *ngIf="thisCreateService.status == 'Successful'"> - <img src="assets/images/execute-faild.png" alt="instance temination is starting" - *ngIf="thisCreateService.status == 'Failed'"> - </span> + <span class="ant-notification-notice-icon"> + <img src="assets/images/execute-success.png" alt="instance temination is starting" + *ngIf="thisCreateService.status == 'Successful'"> + <img src="assets/images/execute-faild.png" alt="instance temination is starting" + *ngIf="thisCreateService.status == 'Failed'"> + </span> <div class="ant-notification-notice-message" - *ngIf="(thisCreateService['serviceDomain'] == 'CCVPN' || thisCreateService['serviceDomain'] == 'SOTN') && thisCreateService.status == 'Successful'"> + *ngIf="(thisCreateService['serviceDomain'] == 'CCVPN' || thisCreateService['serviceDomain'] == 'SOTN') && thisCreateService.status == 'Successful'"> {{ thisCreateService['serviceDomain'] }} {{"i18nTextDefine_InstanceCreatedSuccessfully" | translate}} </div> <div class="ant-notification-notice-message" - *ngIf="(thisCreateService['serviceDomain'] == 'E2E Service') && thisCreateService.status == 'Successful'"> + *ngIf="(thisCreateService['serviceDomain'] == 'E2E Service') && thisCreateService.status == 'Successful'"> E2E {{"i18nTextDefine_InstanceCreatedSuccessfully" | translate}} </div> <div class="ant-notification-notice-message" - *ngIf="(thisCreateService['serviceDomain'] == 'Network Service') && thisCreateService.status == 'Successful'"> + *ngIf="(thisCreateService['serviceDomain'] == 'Network Service') && thisCreateService.status == 'Successful'"> NS {{"i18nTextDefine_InstanceCreatedSuccessfully" | translate}} </div> <div class="ant-notification-notice-message" - *ngIf="(thisCreateService['serviceDomain'] == 'CCVPN' || thisCreateService['serviceDomain'] == 'SOTN') && thisCreateService.status == 'Failed'"> + *ngIf="(thisCreateService['serviceDomain'] == 'CCVPN' || thisCreateService['serviceDomain'] == 'SOTN') && thisCreateService.status == 'Failed'"> {{ thisCreateService['serviceDomain'] }} {{"i18nTextDefine_InstanceCreationFailed" | translate}} </div> <div class="ant-notification-notice-message" - *ngIf="(thisCreateService['serviceDomain'] == 'E2E Service') && thisCreateService.status == 'Failed'"> + *ngIf="(thisCreateService['serviceDomain'] == 'E2E Service') && thisCreateService.status == 'Failed'"> E2E {{"i18nTextDefine_InstanceCreationFailed" | translate}} </div> <div class="ant-notification-notice-message" - *ngIf="(thisCreateService['serviceDomain'] == 'Network Service') && thisCreateService.status == 'Failed'"> + *ngIf="(thisCreateService['serviceDomain'] == 'Network Service') && thisCreateService.status == 'Failed'"> NS {{"i18nTextDefine_InstanceCreationFailed" | translate}} </div> <div class="ant-notification-notice-description"> @@ -560,7 +541,7 @@ <p> {{"i18nTextDefine_InstanceName" | translate}} :</p> <span>{{ thisCreateService["service-instance-name"] || thisCreateService["nsInstanceName"] }} - </span> + </span> </div> <div class="notificationlist"> <p> {{"i18nTextDefine_Customer" | translate}} :</p> @@ -578,36 +559,36 @@ <ng-template #templateDeleteSuccessFaild> <div class="ant-notification-notice-content"> <div class="ant-notification-notice-with-icon"> - <span class="ant-notification-notice-icon"> - <img src="assets/images/execute-success.png" alt="instance temination is starting" - *ngIf="thisService.status == 'Successful'"> - <img src="assets/images/execute-faild.png" alt="instance temination is starting" - *ngIf="thisService.status == 'Failed'"> - </span> + <span class="ant-notification-notice-icon"> + <img src="assets/images/execute-success.png" alt="instance temination is starting" + *ngIf="thisService.status == 'Successful'"> + <img src="assets/images/execute-faild.png" alt="instance temination is starting" + *ngIf="thisService.status == 'Failed'"> + </span> <div class="ant-notification-notice-message" - *ngIf="(thisService['serviceDomain'] == 'CCVPN' || thisService['serviceDomain'] == 'SOTN') && thisService.status == 'Successful'"> + *ngIf="(thisService['serviceDomain'] == 'CCVPN' || thisService['serviceDomain'] == 'SOTN') && thisService.status == 'Successful'"> {{ thisService['serviceDomain'] }} {{"i18nTextDefine_InstanceTeminatedSuccessfully" | translate}} </div> <div class="ant-notification-notice-message" - *ngIf="(thisService['serviceDomain'] == 'E2E Service') && thisService.status == 'Successful'"> + *ngIf="(thisService['serviceDomain'] == 'E2E Service') && thisService.status == 'Successful'"> E2E {{"i18nTextDefine_InstanceTeminatedSuccessfully" | translate}} </div> <div class="ant-notification-notice-message" - *ngIf="(thisService['serviceDomain'] == 'Network Service') && thisService.status == 'Successful'"> + *ngIf="(thisService['serviceDomain'] == 'Network Service') && thisService.status == 'Successful'"> NS {{"i18nTextDefine_InstanceTeminatedSuccessfully" | translate}} </div> <div class="ant-notification-notice-message" - *ngIf="(thisService['serviceDomain'] == 'CCVPN' || thisService['serviceDomain'] == 'SOTN') && thisService.status == 'Failed'"> + *ngIf="(thisService['serviceDomain'] == 'CCVPN' || thisService['serviceDomain'] == 'SOTN') && thisService.status == 'Failed'"> {{ thisService['serviceDomain'] }} {{"i18nTextDefine_InstanceTeminationFailed" | translate}} </div> <div class="ant-notification-notice-message" - *ngIf="(thisService['serviceDomain'] == 'E2E Service') && thisService.status == 'Failed'">E2E + *ngIf="(thisService['serviceDomain'] == 'E2E Service') && thisService.status == 'Failed'">E2E {{"i18nTextDefine_InstanceTeminationFailed" | translate}} </div> <div class="ant-notification-notice-message" - *ngIf="(thisService['serviceDomain'] == 'Network Service') && thisService.status == 'Failed'"> + *ngIf="(thisService['serviceDomain'] == 'Network Service') && thisService.status == 'Failed'"> NS {{"i18nTextDefine_InstanceTeminationFailed" | translate}} </div> <div class="ant-notification-notice-description"> @@ -615,7 +596,7 @@ <p> {{"i18nTextDefine_InstanceName" | translate}} :</p> <span>{{ thisService["service-instance-name"] || thisService["nsInstanceName"] }} - </span> + </span> </div> <div class="notificationlist"> <p> {{"i18nTextDefine_Customer" | translate}} :</p> @@ -633,12 +614,12 @@ <ng-template #templateScaleSuccessFaild> <div class="ant-notification-notice-content"> <div class="ant-notification-notice-with-icon"> - <span class="ant-notification-notice-icon"> - <img src="assets/images/execute-success.png" alt="instance temination is starting" - *ngIf="thisService.status == 'Successful'"> - <img src="assets/images/execute-faild.png" alt="instance temination is starting" - *ngIf="thisService.status == 'Failed'"> - </span> + <span class="ant-notification-notice-icon"> + <img src="assets/images/execute-success.png" alt="instance temination is starting" + *ngIf="thisService.status == 'Successful'"> + <img src="assets/images/execute-faild.png" alt="instance temination is starting" + *ngIf="thisService.status == 'Failed'"> + </span> <div class="ant-notification-notice-message" *ngIf="thisService.status == 'Successful'">E2E {{"i18nTextDefine_InstanceScaledSuccessfully" | translate}} </div> @@ -650,7 +631,7 @@ <p> {{"i18nTextDefine_InstanceName" | translate}} :</p> <span>{{ thisService["service-instance-name"] || thisService["nsInstanceName"] }} - </span> + </span> </div> <div class="notificationlist"> <p> {{"i18nTextDefine_Customer" | translate}} :</p> @@ -668,12 +649,12 @@ <ng-template #templatehealSuccessFaild> <div class="ant-notification-notice-content"> <div class="ant-notification-notice-with-icon"> - <span class="ant-notification-notice-icon"> - <img src="assets/images/execute-success.png" alt="instance temination is starting" - *ngIf="thisService.status == 'Successful'"> - <img src="assets/images/execute-faild.png" alt="instance temination is starting" - *ngIf="thisService.status == 'Failed'"> - </span> + <span class="ant-notification-notice-icon"> + <img src="assets/images/execute-success.png" alt="instance temination is starting" + *ngIf="thisService.status == 'Successful'"> + <img src="assets/images/execute-faild.png" alt="instance temination is starting" + *ngIf="thisService.status == 'Failed'"> + </span> <div class="ant-notification-notice-message" *ngIf="thisService.status == 'Successful'">NS {{"i18nTextDefine_InstanceHealedSuccessfully" | translate}} </div> @@ -685,7 +666,7 @@ <p> {{"i18nTextDefine_InstanceName" | translate}} :</p> <span>{{ thisService["service-instance-name"] || thisService["nsInstanceName"] }} - </span> + </span> </div> <div class="notificationlist"> <p> {{"i18nTextDefine_Customer" | translate}} :</p> @@ -704,11 +685,11 @@ <div class="ant-notification-notice-content"> <div class="ant-notification-notice-with-icon"> <span class="ant-notification-notice-icon"> - <img src="assets/images/execute-success.png" alt="instance temination is starting" - *ngIf="thisService.status == 'Successful'"> - <img src="assets/images/execute-faild.png" alt="instance temination is starting" - *ngIf="thisService.status == 'Failed'"> - </span> + <img src="assets/images/execute-success.png" alt="instance temination is starting" + *ngIf="thisService.status == 'Successful'"> + <img src="assets/images/execute-faild.png" alt="instance temination is starting" + *ngIf="thisService.status == 'Failed'"> + </span> <div class="ant-notification-notice-message" *ngIf="thisService.status == 'Successful'">CCVPN {{"i18nTextDefine_InstanceUpdatedSuccessfully" | translate}} </div> @@ -720,7 +701,7 @@ <p> {{"i18nTextDefine_InstanceName" | translate}} :</p> <span>{{ thisService["service-instance-name"] || thisService["nsInstanceName"] }} - </span> + </span> </div> <div class="notificationlist"> <p> {{"i18nTextDefine_Customer" | translate}} :</p> @@ -737,33 +718,28 @@ </ng-template> </div> <div class="detailComponent" *ngIf="detailshow"> - <app-ccvpn-detail [detailParams]="detailData" - [upDateShow]="upDateShow" - (closeUpdate)="closeCCVPNUpdate($event,templateUpdateSuccessFaild)" - (closeDetail)="detailshow = false;listDisplay = false;"></app-ccvpn-detail> + <app-ccvpn-detail [detailParams]="detailData" [upDateShow]="upDateShow" + (closeUpdate)="closeCCVPNUpdate($event,templateUpdateSuccessFaild)" + (closeDetail)="detailshow = false;listDisplay = false;"></app-ccvpn-detail> </div> <div class="detailComponent" *ngIf="detailshow2"> - <app-e2e-detail [detailParams]="detailData" - (closeDetail)="detailshow2 = false;listDisplay = false;"></app-e2e-detail> + <app-e2e-detail [detailParams]="detailData" (closeDetail)="detailshow2 = false;listDisplay = false;"> + </app-e2e-detail> </div> <div class="createComponent" *ngIf="createshow"> - <app-ccvpn-creation - [createParams]="createData" - [ccvpn_temParametersContent]="ccvpn_temParametersContent" - (closeCreate)="closeCreate($event,templateCreatestarting,templateCreateSuccessFaild)"> + <app-ccvpn-creation [createParams]="createData" [ccvpn_temParametersContent]="ccvpn_temParametersContent" + (closeCreate)="closeCreate($event,templateCreatestarting,templateCreateSuccessFaild)"> </app-ccvpn-creation> </div> <div class="createComponent" *ngIf="createshow2"> - <app-e2e-creation - [createParams]="createData" - [e2e_ns_temParametersContent]="e2e_ns_temParametersContent" - (nsCloseCreate)="nsCloseCreate($event,templateCreatestarting,templateCreateSuccessFaild)" - (e2eCloseCreate)="e2eCloseCreate($event,templateCreatestarting,templateCreateSuccessFaild)"> + <app-e2e-creation [createParams]="createData" [e2e_ns_temParametersContent]="e2e_ns_temParametersContent" + (nsCloseCreate)="nsCloseCreate($event,templateCreatestarting,templateCreateSuccessFaild)" + (e2eCloseCreate)="e2eCloseCreate($event,templateCreatestarting,templateCreateSuccessFaild)"> </app-e2e-creation> </div> <!--</div>--> </nz-layout> <div class="loading" *ngIf="loadingAnimateShow"> - <img src="./assets/images/loading-animate2.gif" alt="loading"> + <img src="assets/images/loading-animate2.gif" alt="loading"> <p>Please wating……</p> -</div> +</div>
\ No newline at end of file diff --git a/usecaseui-portal/src/app/services/services-list/services-list.component.less b/usecaseui-portal/src/app/views/services/services-list/services-list.component.less index 2a19e5bb..392d1b3a 100644 --- a/usecaseui-portal/src/app/services/services-list/services-list.component.less +++ b/usecaseui-portal/src/app/views/services/services-list/services-list.component.less @@ -13,52 +13,6 @@ See the License for the specific language governing permissions and limitations under the License. */ -@media screen and (min-width: 1050px){ - .action{ - span:nth-of-type(2){ - margin-left: 40px; - } - } - -} -@media screen and (max-width: 1050px){ - .action{ - span:nth-of-type(2){ - margin-left: 20px; - } - } - -} -@media screen and (max-width: 1300px){ - .top-list-text{ - p{ - width: 200px; - } - } -} -@media screen and (min-width: 1200px){ - .round{ - top:45%; - left: 50px; - margin-top: -40px; - } - -} - -@media screen and (max-width: 1200px){ - .round{ - top:12%; - left: 12%; - } - .top-list-text{ - p{ - width: 170px; - } - } - -} - - .title { font: 700 18px/18px "思源黑体"; color: #4c5e70; @@ -73,18 +27,6 @@ hr { .ant-tabs-bar{ margin-bottom: 0!important; } -.ant-dropdown-menu{ - min-height:40px; - max-height: 200px; - overflow: auto; -} -.ant-dropdown-menu-item{ - a{ - max-width: 165px; - overflow: hidden; - text-overflow: ellipsis; - } -} .mask{ width: 100%; height: 100%; @@ -135,20 +77,15 @@ hr { font: 700 14px "Arial"; color: #3C4F8C; margin-right: 5px; - .icon{ - margin-right: 10px; - } } nz-dropdown { - width: 20%; vertical-align: middle; background-color:#ffffff; :hover{ border-color: #48C6EF; } button { - width: 100%; - max-width:165px; + width: 165px; height: 42px; background-color:#ffffff; text-align: left; @@ -174,15 +111,11 @@ hr { position: absolute; right: 3%; top:50%; + width:116px; height:42px; background:#0DA9E2; border-radius:6px; margin-top: -15px; - i{ - transform: scale(1.5); - line-height: 15px; - margin-right: 5px; - } span { color: #fff; font-weight: 400; @@ -200,76 +133,90 @@ hr { } } -nz-layout{ - padding: 20px 32px; - .top-num{ - - width: 100%; - display: flex; - justify-content: space-around; - .top-list{ - position: relative; - width:32%; - max-width:400px; - height:170px; - background:url("../../../assets/images/servicelist-e2e.png") no-repeat; - background-size: 100% 100%; - border-radius:2px; - .round{ - position: absolute; - width: 60px; - height: 60px; - line-height: 60px; - text-align: center; - background:#E0EDFF; - border:2px solid rgba(224,237,255,1); - border-radius: 50%; - font-size:16px; - font-family:ArialMT; - color:#3C4F8C; - transition: .5s; - } - .top-list-text{ - position: absolute; +.top-num{ + overflow: auto; + width: 100%; +} +.top-list{ + position: relative; + width:29%; + height:170px; + margin: 10px 1%; + float: left; + background:url("../../../../assets/images/servicelist-e2e.png") no-repeat; + background-size: 100% 100%; + border-radius:2px; +} +.top-num .top-list:nth-child(2){ + background:url("../../../../assets/images/servicelist-e2e.png") no-repeat; + background-size: 100% 100%; +} +.top-num .top-list:nth-child(3){ + background:url("../../../../assets/images/servicelist-e2e.png") no-repeat; + background-size: 100% 100%; +} +.top-num .top-list:nth-child(4){ + background:url("../../../../assets/images/servicelist-sotn.png") no-repeat; + background-size: 100% 100%; +} +.top-list .round{ + position: absolute; + width: 60px; + height: 60px; + line-height: 60px; + text-align: center; + top:45%; + left: 50px; + margin-top: -30px; + background:#E0EDFF; + border:2px solid rgba(224,237,255,1); + border-radius: 50%; + font-size:16px; + font-family:ArialMT; + color:#3C4F8C; +} +.top-list { + .top-list-text { + position: absolute; + text-align: right; + height: 40px; + line-height: 20px; + right: 50px; + color: #fff; + p { + font-size: 14px; + width: 250px; + margin: 15px 0 0 0; + height: 13px; + clear: both; + span { + display: inline-block; + font-weight: 500; text-align: right; - line-height: 20px; - right: 12%; - color: #fff; - p{ - height: 28px; - margin-bottom: 0; - padding-left: 5px; - font-size: 14px; - clear: both; - span{ - display: inline-block; - float: right; - font-weight: 500; - text-align: right; - } - span:nth-child(1){ - font-size: 18px; - margin-left: 15px; - } - span:nth-child(2){ - width: 85px; - font-size: 16px; - } - } - p:nth-child(1){ - margin-top: 25px; - } - .service-description{ - - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - color: #3C4F8C; - - } + float: right; + } + span:nth-child(1) { + font-size: 18px; + width: 40px; + min-width: 40px; + } + span:nth-child(2) { + width: 85px; + font-size: 16px; } } - + p:nth-child(1) { + margin-top: 25px; + } + } + .service-description{ + font-size: 14px; + width: 250px; + height: 13px; + position: absolute; + bottom: 30px; + left: 50px; + color: #3C4F8C; } } .list { @@ -343,10 +290,10 @@ nz-layout{ .anticon{ width: 18px; height: 18px; - background: url("../../../assets/images/scale.png") no-repeat; + background: url("../../../../assets/images/scale.png") no-repeat; } .anticon.anticon-update{ - background: url("../../../assets/images/update.png") no-repeat; + background: url("../../../../assets/images/update.png") no-repeat; } span{ margin-left: 5px; @@ -355,10 +302,10 @@ nz-layout{ li:hover{ color: #0DA9E2; .anticon{ - background: url("../../../assets/images/scale-active.png") no-repeat; + background: url("../../../../assets/images/scale-active.png") no-repeat; } .anticon.anticon-update{ - background: url("../../../assets/images/update-active.png") no-repeat; + background: url("../../../../assets/images/update-active.png") no-repeat; } } } diff --git a/usecaseui-portal/src/app/services/services-list/services-list.component.spec.ts b/usecaseui-portal/src/app/views/services/services-list/services-list.component.spec.ts index 61440dc3..61440dc3 100644 --- a/usecaseui-portal/src/app/services/services-list/services-list.component.spec.ts +++ b/usecaseui-portal/src/app/views/services/services-list/services-list.component.spec.ts diff --git a/usecaseui-portal/src/app/services/services-list/services-list.component.ts b/usecaseui-portal/src/app/views/services/services-list/services-list.component.ts index 3a07c1fe..c15e9f11 100644 --- a/usecaseui-portal/src/app/services/services-list/services-list.component.ts +++ b/usecaseui-portal/src/app/views/services/services-list/services-list.component.ts @@ -14,11 +14,10 @@ limitations under the License. */ import { Component, OnInit, HostBinding, TemplateRef } from '@angular/core'; -import { MyhttpService } from '../../myhttp.service'; -import { slideToRight } from '../../animates'; +import { MyhttpService } from '../../../core/services/myhttp.service'; +import { slideToRight } from '../../../animates'; import { NzModalService } from 'ng-zorro-antd'; import { NzNotificationService } from 'ng-zorro-antd'; -import { Observable } from 'rxjs/Rx'; @Component({ selector: 'app-services-list', @@ -29,16 +28,11 @@ import { Observable } from 'rxjs/Rx'; export class ServicesListComponent implements OnInit { @HostBinding('@routerAnimate') routerAnimateState; - public width:number = document.documentElement.clientWidth; - constructor(private myhttp: MyhttpService, private modalService: NzModalService, private notification: NzNotificationService) { } ngOnInit() { this.getallCustomers(); - Observable.fromEvent(window, 'resize').subscribe((event) => { - this.width = document.documentElement.clientWidth - }); } // customer servicetype @@ -1279,6 +1273,19 @@ export class ServicesListComponent implements OnInit { queryProgress(obj, callback) { let mypromise = new Promise((res, rej) => { + // let data = { + // operationStatus:{ + // "operationId": "XXXXXX", + // "operation": "create|delete|update|scale", + // "result": "finished|error|processing", + // "reason": "", + // "userId": "", + // "operationContent": "Be creating pop.", + // "progress": 0, + // "operateAt": "", + // "finishedAt": "" + // } + // } let errorNums = 180; let requery = () => { this.myhttp.getProgress(obj) @@ -1312,6 +1319,17 @@ export class ServicesListComponent implements OnInit { res(data.operationStatus); } }) + // setTimeout(()=>{ + // console.log(data.operationStatus.progress) + // data.operationStatus.progress++; + // if(data.operationStatus.progress<100){ + // callback(data.operationStatus); + // requery() + // }else{ + // callback(data.operationStatus); + // res(data.operationStatus) + // } + // },100) } requery(); }) @@ -1320,7 +1338,25 @@ export class ServicesListComponent implements OnInit { queryNsProgress(jobid, id, callback, operationType) { let mypromise = new Promise((res, rej) => { - + // let data = { + // "jobId": "string", + // "responseDescriptor": { + // "status": "string", + // "progress": 0, + // "statusDescription": "string", + // "errorCode": "string", + // "responseId": "string", + // "responseHistoryList": [ + // { + // "status": "string", + // "progress": "string", + // "statusDescription": "string", + // "errorCode": "string", + // "responseId": "string" + // } + // ] + // } + // } let errorNums = 180; let requery = () => { this.myhttp.getNsProgress(jobid, id, operationType) @@ -1330,6 +1366,7 @@ export class ServicesListComponent implements OnInit { return false; } if (data.responseDescriptor == null || data.responseDescriptor.progress == undefined) { + // console.log(data); errorNums--; if (errorNums == 0) { callback({ progress: 255, status: "time over" }); @@ -1353,7 +1390,17 @@ export class ServicesListComponent implements OnInit { res(data); } }) - + // setTimeout(()=>{ + // console.log(data.responseDescriptor.progress) + // data.responseDescriptor.progress++; + // if(data.responseDescriptor.progress<100){ + // callback(data.responseDescriptor); + // requery() + // }else{ + // callback(data); + // res(data) + // } + // },100) }; requery(); }); diff --git a/usecaseui-portal/src/app/services/services.component.html b/usecaseui-portal/src/app/views/services/services.component.html index 10142833..10142833 100644 --- a/usecaseui-portal/src/app/services/services.component.html +++ b/usecaseui-portal/src/app/views/services/services.component.html diff --git a/usecaseui-portal/src/app/views/services/services.component.less b/usecaseui-portal/src/app/views/services/services.component.less new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/usecaseui-portal/src/app/views/services/services.component.less diff --git a/usecaseui-portal/src/app/services/services.component.spec.ts b/usecaseui-portal/src/app/views/services/services.component.spec.ts index 2e76b9f9..2e76b9f9 100644 --- a/usecaseui-portal/src/app/services/services.component.spec.ts +++ b/usecaseui-portal/src/app/views/services/services.component.spec.ts diff --git a/usecaseui-portal/src/app/services/services.component.ts b/usecaseui-portal/src/app/views/services/services.component.ts index eec235b4..eec235b4 100644 --- a/usecaseui-portal/src/app/services/services.component.ts +++ b/usecaseui-portal/src/app/views/services/services.component.ts |