diff options
author | Michael Lando <ml636r@att.com> | 2018-03-04 14:53:33 +0200 |
---|---|---|
committer | Michael Lando <ml636r@att.com> | 2018-03-07 13:19:05 +0000 |
commit | a5445100050e49e83f73424198d73cd72d672a4d (patch) | |
tree | cacf4df817df31be23e4e790d1dda857bdae061e /catalog-ui/src/app/ng2/services/component-services | |
parent | 51157f92c21976cba4914c378aaa3cba49826931 (diff) |
Sync Integ to Master
Change-Id: I71e3acc26fa612127756ac04073a522b9cc6cd74
Issue-ID: SDC-977
Signed-off-by: Gitelman, Tal (tg851x) <tg851x@intl.att.com>
Diffstat (limited to 'catalog-ui/src/app/ng2/services/component-services')
3 files changed, 173 insertions, 15 deletions
diff --git a/catalog-ui/src/app/ng2/services/component-services/component.service.factory.ts b/catalog-ui/src/app/ng2/services/component-services/component.service.factory.ts new file mode 100644 index 0000000000..6e9d0e8031 --- /dev/null +++ b/catalog-ui/src/app/ng2/services/component-services/component.service.factory.ts @@ -0,0 +1,41 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. 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. + * ============LICENSE_END========================================================= + */ + + +import {Injectable} from "@angular/core"; +import {Component} from "../../../models/components/component"; +import {ComponentServiceNg2} from "./component.service"; +import {ServiceServiceNg2} from "./service.service"; + +@Injectable() +export class ComponentServiceFactoryNg2 { + componentService: ComponentServiceNg2; + serviceService: ServiceServiceNg2; + constructor(componentService: ComponentServiceNg2, serviceService: ServiceServiceNg2) { + this.serviceService = serviceService; + this.componentService = componentService; + } + getComponentService(component: Component):ComponentServiceNg2 { + if (component.isService()) { + return this.serviceService; + } + return this.componentService; + } +}
\ No newline at end of file diff --git a/catalog-ui/src/app/ng2/services/component-services/component.service.ts b/catalog-ui/src/app/ng2/services/component-services/component.service.ts index ba1cb15561..9c3f78a444 100644 --- a/catalog-ui/src/app/ng2/services/component-services/component.service.ts +++ b/catalog-ui/src/app/ng2/services/component-services/component.service.ts @@ -18,13 +18,13 @@ * ============LICENSE_END========================================================= */ +import * as _ from "lodash"; import {Injectable, Inject} from '@angular/core'; import {Observable} from 'rxjs/Observable'; import 'rxjs/add/operator/map'; import 'rxjs/add/operator/toPromise'; import {Response, URLSearchParams} from '@angular/http'; -import { Component, PropertyBEModel, InstancePropertiesAPIMap, FilterPropertiesAssignmentData} from "app/models"; -import {downgradeInjectable} from '@angular/upgrade/static'; +import { Component, InputBEModel, InstancePropertiesAPIMap, FilterPropertiesAssignmentData} from "app/models"; import {COMPONENT_FIELDS} from "app/utils"; import {ComponentGenericResponse} from "../responses/component-generic-response"; import {InstanceBePropertiesMap} from "../../../models/properties-inputs/property-fe-map"; @@ -40,11 +40,11 @@ export class ComponentServiceNg2 { protected baseUrl; - constructor(private http:HttpService, @Inject(SdcConfigToken) sdcConfig:ISdcConfig) { + constructor(protected http:HttpService, @Inject(SdcConfigToken) sdcConfig:ISdcConfig) { this.baseUrl = sdcConfig.api.root + sdcConfig.api.component_api_root; } - private getComponentDataByFieldsName(componentType:string, componentId: string, fields:Array<string>):Observable<ComponentGenericResponse> { + protected getComponentDataByFieldsName(componentType:string, componentId: string, fields:Array<string>):Observable<ComponentGenericResponse> { let params:URLSearchParams = new URLSearchParams(); _.forEach(fields, (field:string):void => { @@ -53,10 +53,14 @@ export class ComponentServiceNg2 { return this.http.get(this.baseUrl + this.getServerTypeUrl(componentType) + componentId + '/filteredDataByParams', {search: params}) .map((res:Response) => { - return new ComponentGenericResponse().deserialize(res.json()); + return this.analyzeComponentDataResponse(res); }); } + protected analyzeComponentDataResponse(res: Response):ComponentGenericResponse { + return new ComponentGenericResponse().deserialize(res.json()); + } + private getServerTypeUrl = (componentType:string):string => { switch (componentType) { case ComponentType.SERVICE: @@ -78,8 +82,8 @@ export class ComponentServiceNg2 { return this.getComponentDataByFieldsName(component.componentType, component.uniqueId, [COMPONENT_FIELDS.COMPONENT_ATTRIBUTES]); } - getComponentInstancesAndRelation(component:Component):Observable<ComponentGenericResponse> { - return this.getComponentDataByFieldsName(component.componentType, component.uniqueId, [COMPONENT_FIELDS.COMPONENT_INSTANCES_RELATION, COMPONENT_FIELDS.COMPONENT_INSTANCES]); + getComponentCompositionData(component:Component):Observable<ComponentGenericResponse> { + return this.getComponentDataByFieldsName(component.componentType, component.uniqueId, [COMPONENT_FIELDS.COMPONENT_INSTANCES_RELATION, COMPONENT_FIELDS.COMPONENT_INSTANCES, COMPONENT_FIELDS.COMPONENT_POLICIES, COMPONENT_FIELDS.COMPONENT_GROUPS]); } getComponentResourceInstances(component:Component):Observable<ComponentGenericResponse> { @@ -125,19 +129,19 @@ export class ComponentServiceNg2 { }) } - deleteInput(component:Component, input:PropertyBEModel):Observable<PropertyBEModel> { + deleteInput(component:Component, input:InputBEModel):Observable<InputBEModel> { return this.http.delete(this.baseUrl + component.getTypeUrl() + component.uniqueId + '/delete/' + input.uniqueId + '/input') .map((res:Response) => { - return new PropertyBEModel(res.json()); + return new InputBEModel(res.json()); }) } - updateComponentInput(component:Component, input:PropertyBEModel):Observable<PropertyBEModel> { + updateComponentInputs(component:Component, inputs:InputBEModel[]):Observable<InputBEModel[]> { - return this.http.post(this.baseUrl + component.getTypeUrl() + component.uniqueId + '/update/inputs', input) + return this.http.post(this.baseUrl + component.getTypeUrl() + component.uniqueId + '/update/inputs', inputs) .map((res:Response) => { - return new PropertyBEModel(res.json()) + return res.json().map((input) => new InputBEModel(input)); }) } diff --git a/catalog-ui/src/app/ng2/services/component-services/service.service.ts b/catalog-ui/src/app/ng2/services/component-services/service.service.ts index f38dbef595..0439f2047e 100644 --- a/catalog-ui/src/app/ng2/services/component-services/service.service.ts +++ b/catalog-ui/src/app/ng2/services/component-services/service.service.ts @@ -22,19 +22,30 @@ import { Injectable, Inject } from '@angular/core'; import { Observable } from 'rxjs/Observable'; import 'rxjs/add/operator/map'; import 'rxjs/add/operator/toPromise'; -import { Response } from '@angular/http'; +import { Response, URLSearchParams } from '@angular/http'; import {Service} from "app/models"; import { downgradeInjectable } from '@angular/upgrade/static'; import { HttpService } from '../http.service'; + import {SdcConfigToken, ISdcConfig} from "../../config/sdc-config.config"; +import {ForwardingPath} from "app/models/forwarding-path"; +import {ComponentMetadata} from "app/models/component-metadata"; +import {ComponentType} from "app/utils"; +import {Component} from "app/models/components/component"; +import {ComponentGenericResponse} from "app/ng2/services/responses/component-generic-response"; +import {COMPONENT_FIELDS, SERVICE_FIELDS} from "app/utils/constants"; +import {ComponentServiceNg2} from "./component.service"; +import {ServiceGenericResponse} from "app/ng2/services/responses/service-generic-response"; +import {ServicePathMapItem} from "app/models/graph/nodes-and-links-map"; @Injectable() -export class ServiceServiceNg2 { +export class ServiceServiceNg2 extends ComponentServiceNg2 { protected baseUrl = ""; - constructor(private http: HttpService, @Inject(SdcConfigToken) sdcConfig:ISdcConfig) { + constructor(protected http: HttpService, @Inject(SdcConfigToken) sdcConfig:ISdcConfig) { + super(http, sdcConfig); this.baseUrl = sdcConfig.api.root + sdcConfig.api.component_api_root; } @@ -46,4 +57,106 @@ export class ServiceServiceNg2 { }); } + getNodesAndLinksMap(service: Service):Observable<Array<ServicePathMapItem>> { + return this.http.get(this.baseUrl + service.getTypeUrl() + service.uniqueId + '/linksMap').map(res => { + return <Array<ServicePathMapItem>>res.json(); + }); + } + + getServicePath(service: Service, id: string):Observable<any> { + return this.http.get(this.baseUrl + service.getTypeUrl() + service.uniqueId + '/paths/' + id) + .map(res => { + return res.json(); + }) + } + + getServicePaths(service: Service):Observable<any> { + return this.http.get(this.baseUrl + service.getTypeUrl() + service.uniqueId + '/paths') + .map(res => { + return res.json(); + }) + } + + createOrUpdateServicePath(service: Service, inputsToCreate: ForwardingPath):Observable<ForwardingPath> { + if (inputsToCreate.uniqueId) { + return this.updateServicePath(service, inputsToCreate); + } else { + return this.createServicePath(service, inputsToCreate); + } + } + + createServicePath(service: Service, inputsToCreate: ForwardingPath):Observable<ForwardingPath> { + let input = new ServicePathRequestData(inputsToCreate); + + return this.http.post(this.baseUrl + service.getTypeUrl() + service.uniqueId + '/paths', input) + .map(res => { + return this.parseServicePathResponse(res); + }); + } + + deleteServicePath(service: Service, id: string):Observable<any> { + return this.http.delete(this.baseUrl + service.getTypeUrl() + service.uniqueId + '/paths/' + id ) + .map((res) => { + return res.json(); + }); + } + + updateServicePath(service: Service, inputsToUpdate:ForwardingPath):Observable<ForwardingPath> { + let input = new ServicePathRequestData(inputsToUpdate); + + return this.http.put(this.baseUrl + service.getTypeUrl() + service.uniqueId + '/paths', input) + .map((res) => { + return this.parseServicePathResponse(res); + }); + } + + checkComponentInstanceVersionChange(service: Service, newVersionId: string):Observable<Array<string>> { + let instanceId = service.selectedInstance.uniqueId; + let queries = {componentInstanceId: instanceId, newComponentInstanceId: newVersionId}; + + let params:URLSearchParams = new URLSearchParams(); + _.map(_.keys(queries), (key:string):void => { + params.append(key, queries[key]); + }); + + let url = this.baseUrl + service.getTypeUrl() + service.uniqueId + '/paths-to-delete'; + return this.http.get(url, {search: params}).map((res: Response) => { + return res.json().forwardingPathToDelete; + }); + } + + getComponentCompositionData(component:Component):Observable<ComponentGenericResponse> { + return this.getComponentDataByFieldsName(component.componentType, component.uniqueId, [COMPONENT_FIELDS.COMPONENT_INSTANCES_RELATION, COMPONENT_FIELDS.COMPONENT_INSTANCES, SERVICE_FIELDS.FORWARDING_PATHS]); + } + + protected analyzeComponentDataResponse(res: Response):ComponentGenericResponse { + return new ServiceGenericResponse().deserialize(res.json()); + } + + private parseServicePathResponse(res: Response):ForwardingPath { + let resJSON = res.json(); + let pathId = Object.keys(resJSON.forwardingPaths)[0]; + let forwardingPath = resJSON.forwardingPaths[pathId]; + let path:ForwardingPath = new ForwardingPath(); + path.deserialize(forwardingPath); + path.uniqueId = pathId; + return path; + } } + +class ServicePathRequestData { + forwardingPaths: { [key:string]:ForwardingPath } = {}; + componentMetadataDefinition: ComponentMetadata; + toscaType: string = "topology_template"; + + constructor(fp? : ForwardingPath) { + this.componentMetadataDefinition = new ComponentMetadata(); + this.componentMetadataDefinition.ecompGeneratedNaming = true; + this.componentMetadataDefinition.componentType = ComponentType.SERVICE; + if (fp) { + let id = fp.uniqueId ? fp.uniqueId : "NEW"; + this.forwardingPaths[fp.uniqueId] = fp; + } + } +} + |