diff options
author | Nirvan Ramjuttun <nirvan.ramjuttun@amdocs.com> | 2019-05-07 12:39:19 -0400 |
---|---|---|
committer | Nirvan Ramjuttun <nirvan.ramjuttun@amdocs.com> | 2019-05-07 12:40:03 -0400 |
commit | 087d4b667a9c5517ac7d014c2bbdad994b927147 (patch) | |
tree | 1c0f7eb856794a3a161ebdb3029fba4eb48a6f3e /cds-ui/server | |
parent | 0924c4da768d1119a17936933606a38de6526b52 (diff) |
Modify CDS-UI server to allow communicating with external blueprint mS
Issue-ID: CCSDK-1292
Change-Id: I3536437bad334841d7c7ecd577c092cd13f42a9b
Signed-off-by: Nirvan Ramjuttun <nirvan.ramjuttun@amdocs.com>
Diffstat (limited to 'cds-ui/server')
-rw-r--r-- | cds-ui/server/config/app-config.ts | 9 | ||||
-rw-r--r-- | cds-ui/server/src/controllers/blueprint-rest.controller.ts | 44 | ||||
-rw-r--r-- | cds-ui/server/src/controllers/data-dictionary.controller.ts | 14 | ||||
-rw-r--r-- | cds-ui/server/src/datasources/blueprint.datasource-template.ts (renamed from cds-ui/server/src/datasources/blueprint.datasource.json) | 14 | ||||
-rw-r--r-- | cds-ui/server/src/datasources/blueprint.datasource.ts | 2 | ||||
-rw-r--r-- | cds-ui/server/src/datasources/resource-dictionary.datasource-template.ts (renamed from cds-ui/server/src/datasources/resource-dictionary.datasource.json) | 38 | ||||
-rw-r--r-- | cds-ui/server/src/datasources/resource-dictionary.datasource.ts | 2 | ||||
-rw-r--r-- | cds-ui/server/src/services/blueprint.service.ts | 2 | ||||
-rw-r--r-- | cds-ui/server/src/services/resource-dictionary.service.ts | 10 |
9 files changed, 80 insertions, 55 deletions
diff --git a/cds-ui/server/config/app-config.ts b/cds-ui/server/config/app-config.ts new file mode 100644 index 000000000..80f246427 --- /dev/null +++ b/cds-ui/server/config/app-config.ts @@ -0,0 +1,9 @@ +export const controllerApiConfig = Object.freeze({ + url: process.env.API_BLUEPRINT_CONTROLLER_BASE_URL || "http://localhost:8080/api/v1", + authToken: process.env.API_BLUEPRINT_CONTROLLER_AUTH_TOKEN || "Basic Y2NzZGthcHBzOmNjc2RrYXBwcw==" +}); + +export const processorApiConfig = Object.freeze({ + url: process.env.API_BLUEPRINT_PROCESSOR_BASE_URL || "http://localhost:8081/api/v1", + authToken: process.env.API_BLUEPRINT_PROCESSOR_AUTH_TOKEN || "Basic Y2NzZGthcHBzOmNjc2RrYXBwcw==" +});
\ No newline at end of file diff --git a/cds-ui/server/src/controllers/blueprint-rest.controller.ts b/cds-ui/server/src/controllers/blueprint-rest.controller.ts index 38abad80c..877fa02bb 100644 --- a/cds-ui/server/src/controllers/blueprint-rest.controller.ts +++ b/cds-ui/server/src/controllers/blueprint-rest.controller.ts @@ -48,11 +48,7 @@ import { BlueprintService } from '../services'; import * as fs from 'fs'; import * as multiparty from 'multiparty'; import * as request_lib from 'request'; - -const REST_BLUEPRINT_CONTROLLER_BASE_URL = process.env.REST_BLUEPRINT_CONTROLLER_BASE_URL || "http://localhost:8080/api/v1"; -const REST_BLUEPRINT_CONTROLLER_BASIC_AUTH_HEADER = process.env.REST_BLUEPRINT_CONTROLLER_BASIC_AUTH_HEADER || "Basic Y2NzZGthcHBzOmNjc2RrYXBwcw=="; -const REST_BLUEPRINT_PROCESSOR_BASE_URL= process.env.REST_BLUEPRINT_PROCESSOR_BASE_URL ||"http://localhost:8081/api/v1"; -const MULTIPART_FORM_UPLOAD_DIR = process.env.MULTIPART_FORM_UPLOAD_DIR || "/tmp"; +import {controllerApiConfig, processorApiConfig} from '../../config/app-config'; export class BlueprintRestController { constructor( @@ -69,7 +65,7 @@ export class BlueprintRestController { }, }) async getall() { - return await this.bpservice.getAllblueprints(REST_BLUEPRINT_CONTROLLER_BASIC_AUTH_HEADER); + return await this.bpservice.getAllblueprints(); } @post('/create-blueprint') @@ -90,7 +86,7 @@ export class BlueprintRestController { ): Promise<Response> { return new Promise((resolve, reject) => { this.getFileFromMultiPartForm(request).then(file=>{ - this.uploadFileToBlueprintController(file, REST_BLUEPRINT_CONTROLLER_BASE_URL+"/blueprint-model/", response).then(resp=>{ + this.uploadFileToBlueprintController(file, "/blueprint-model/", response).then(resp=>{ resolve(resp); }, err=>{ reject(err); @@ -100,6 +96,7 @@ export class BlueprintRestController { }); }); } + @post('/publish') async publish( @requestBody({ @@ -118,7 +115,7 @@ export class BlueprintRestController { ): Promise<Response> { return new Promise((resolve, reject) => { this.getFileFromMultiPartForm(request).then(file=>{ - this.uploadFileToBlueprintController(file, REST_BLUEPRINT_CONTROLLER_BASE_URL+"/blueprint-model/publish/", response).then(resp=>{ + this.uploadFileToBlueprintController(file, "/blueprint-model/publish/", response).then(resp=>{ resolve(resp); }, err=>{ reject(err); @@ -128,6 +125,7 @@ export class BlueprintRestController { }); }); } + @post('/enrich-blueprint') async enrich( @requestBody({ @@ -146,7 +144,7 @@ export class BlueprintRestController { ): Promise<Response> { return new Promise((resolve, reject) => { this.getFileFromMultiPartForm(request).then(file=>{ - this.uploadFileToBlueprintController(file, REST_BLUEPRINT_CONTROLLER_BASE_URL+"/blueprint-model/enrich/", response).then(resp=>{ + this.uploadFileToBlueprintController(file, "/blueprint-model/enrich/", response).then(resp=>{ resolve(resp); }, err=>{ reject(err); @@ -163,7 +161,7 @@ export class BlueprintRestController { @param.path.string('version') version:string, @inject(RestBindings.Http.RESPONSE) response: Response, ): Promise<Response> { - return this.downloadFileFromBlueprintController(REST_BLUEPRINT_CONTROLLER_BASE_URL+"/blueprint-model/download/by-name/"+name+"/version/"+version, response); + return this.downloadFileFromBlueprintController("/blueprint-model/download/by-name/"+name+"/version/"+version, response); } async getFileFromMultiPartForm(request: Request): Promise<multiparty.File>{ @@ -199,7 +197,7 @@ export class BlueprintRestController { ): Promise<Response> { return new Promise((resolve, reject) => { this.getFileFromMultiPartForm(request).then(file=>{ - this.uploadFileToBlueprintController(file, REST_BLUEPRINT_PROCESSOR_BASE_URL+"/execution-service/upload/", response).then(resp=>{ + this.uploadFileToBlueprintProcessor(file, "/execution-service/upload/", response).then(resp=>{ resolve(resp); }, err=>{ reject(err); @@ -209,12 +207,20 @@ export class BlueprintRestController { }); }); } + async uploadFileToBlueprintController(file: multiparty.File, uri: string, response: Response): Promise<Response>{ + return this.uploadFileToBlueprintService(file, controllerApiConfig.url + uri, controllerApiConfig.authToken, response); + } + + async uploadFileToBlueprintProcessor(file: multiparty.File, uri: string, response: Response): Promise<Response>{ + return this.uploadFileToBlueprintService(file, processorApiConfig.url + uri, processorApiConfig.authToken, response); + } + + async uploadFileToBlueprintService(file: multiparty.File, url: string, authToken: string, response: Response): Promise<Response>{ let options = { - // url: REST_BLUEPRINT_CONTROLLER_BASE_URL + uri, - url:uri, + url: url, headers: { - Authorization: REST_BLUEPRINT_CONTROLLER_BASIC_AUTH_HEADER, + Authorization: authToken, 'content-type': 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' }, formData: { @@ -248,12 +254,16 @@ export class BlueprintRestController { }); }) } + async downloadFileFromBlueprintController(uri: string, response: Response): Promise<Response> { + return this.downloadFileFromBlueprintService(controllerApiConfig.url + uri, controllerApiConfig.authToken, response); + } + + async downloadFileFromBlueprintService(url: string, authToken: string, response: Response): Promise<Response> { let options = { - url: uri, - // REST_BLUEPRINT_CONTROLLER_BASE_URL + uri, + url: url, headers: { - Authorization: REST_BLUEPRINT_CONTROLLER_BASIC_AUTH_HEADER, + Authorization: authToken, } }; return new Promise((resolve, reject) => { diff --git a/cds-ui/server/src/controllers/data-dictionary.controller.ts b/cds-ui/server/src/controllers/data-dictionary.controller.ts index d535e27b2..486c28658 100644 --- a/cds-ui/server/src/controllers/data-dictionary.controller.ts +++ b/cds-ui/server/src/controllers/data-dictionary.controller.ts @@ -18,7 +18,6 @@ import { import { inject } from '@loopback/core'; import { ResourceDictionaryService } from '../services'; -const REST_RESOURCE_DICTIONARY_BASIC_AUTH_HEADER = process.env.REST_BLUEPRINT_CONTROLLER_BASIC_AUTH_HEADER || "Basic Y2NzZGthcHBzOmNjc2RrYXBwcw=="; export class DataDictionaryController { constructor( @inject('services.ResourceDictionaryService') @@ -33,8 +32,9 @@ export class DataDictionaryController { }, }) async getByName(@param.path.string('name') name: string) { - return await this.rdservice.getByName(name, REST_RESOURCE_DICTIONARY_BASIC_AUTH_HEADER); + return await this.rdservice.getByName(name); } + @get('/resourcedictionary/search/{tags}', { responses: { '200': { @@ -43,7 +43,7 @@ export class DataDictionaryController { }, }) async getByTags(@param.path.string('tags') tags: string) { - return await this.rdservice.getByTags(tags, REST_RESOURCE_DICTIONARY_BASIC_AUTH_HEADER); + return await this.rdservice.getByTags(tags); } @get('/resourcedictionary/source-mapping', { @@ -54,8 +54,9 @@ export class DataDictionaryController { }, }) async getSourceMapping() { - return await this.rdservice.getSourceMapping(REST_RESOURCE_DICTIONARY_BASIC_AUTH_HEADER); + return await this.rdservice.getSourceMapping(); } + @post('/resourcedictionary/save', { responses: { '200': { @@ -67,8 +68,9 @@ export class DataDictionaryController { content: { 'application/json': { schema: { 'x-ts-type': JSON } } }, accepts: { 'application/json': { schema: { 'x-ts-type': JSON } } } }) resourceDictionary: JSON): Promise<any> { - return await this.rdservice.save(REST_RESOURCE_DICTIONARY_BASIC_AUTH_HEADER, resourceDictionary); + return await this.rdservice.save(resourceDictionary); } + @post('/resourcedictionary/search/by-names', { responses: { '200': { @@ -80,6 +82,6 @@ export class DataDictionaryController { content: { 'application/json': { schema: { 'x-ts-type': JSON } } }, accepts: { 'application/json': { schema: { 'x-ts-type': JSON } } } }) resourceDictionaryList: JSON): Promise<any> { - return await this.rdservice.searchbyNames(REST_RESOURCE_DICTIONARY_BASIC_AUTH_HEADER, resourceDictionaryList); + return await this.rdservice.searchbyNames(resourceDictionaryList); } } diff --git a/cds-ui/server/src/datasources/blueprint.datasource.json b/cds-ui/server/src/datasources/blueprint.datasource-template.ts index 86b1c2c15..3cbf09576 100644 --- a/cds-ui/server/src/datasources/blueprint.datasource.json +++ b/cds-ui/server/src/datasources/blueprint.datasource-template.ts @@ -1,22 +1,24 @@ -{ +import {controllerApiConfig} from '../../config/app-config'; + +export default { "name": "blueprint", "connector": "rest", - "baseURL": "http://localhost:8080/api/v1/", + "baseURL": controllerApiConfig.url, "crud": false, "operations": [{ "template": { "method": "GET", - "url": "http://localhost:8080/api/v1/blueprint-model/", + "url": controllerApiConfig.url + "/blueprint-model/", "headers": { "accepts": "application/json", "content-type": "application/json", - "authorization": "{authtoken}" + "authorization": controllerApiConfig.authToken }, "responsePath": "$.*" }, "functions": { - "getAllblueprints": ["authtoken"] + "getAllblueprints": [] } }] -}
\ No newline at end of file +};
\ No newline at end of file diff --git a/cds-ui/server/src/datasources/blueprint.datasource.ts b/cds-ui/server/src/datasources/blueprint.datasource.ts index 008612693..ce901b6d7 100644 --- a/cds-ui/server/src/datasources/blueprint.datasource.ts +++ b/cds-ui/server/src/datasources/blueprint.datasource.ts @@ -1,6 +1,6 @@ import {inject} from '@loopback/core'; import {juggler} from '@loopback/repository'; -import * as config from './blueprint.datasource.json'; +import config from './blueprint.datasource-template'; export class BlueprintDataSource extends juggler.DataSource { static dataSourceName = 'blueprint'; diff --git a/cds-ui/server/src/datasources/resource-dictionary.datasource.json b/cds-ui/server/src/datasources/resource-dictionary.datasource-template.ts index 9bf5f30c4..b987e588c 100644 --- a/cds-ui/server/src/datasources/resource-dictionary.datasource.json +++ b/cds-ui/server/src/datasources/resource-dictionary.datasource-template.ts @@ -1,89 +1,91 @@ -{ +import {controllerApiConfig} from '../../config/app-config'; + +export default { "name": "resourceDictionary", "connector": "rest", - "baseURL": "http://localhost:8080/api/v1/dictionary", + "baseURL": controllerApiConfig.url + "/dictionary", "crud": false, "operations": [{ "template": { "method": "GET", - "url": "http://localhost:8080/api/v1/dictionary/{name}", + "url": controllerApiConfig.url + "/dictionary/{name}", "headers": { "accepts": "application/json", "content-type": "application/json", - "authorization": "{authtoken}" + "authorization": controllerApiConfig.authToken }, "responsePath": "$.*" }, "functions": { - "getByName": ["name", "authtoken"] + "getByName": ["name"] } }, { "template": { "method": "GET", - "url": "http://localhost:8080/api/v1/dictionary/source-mapping", + "url": controllerApiConfig.url + "/dictionary/source-mapping", "headers": { "accepts": "application/json", "content-type": "application/json", - "authorization": "{authtoken}" + "authorization": controllerApiConfig.authToken }, "responsePath": "$.*" }, "functions": { - "getSourceMapping": ["authtoken"] + "getSourceMapping": [] } }, { "template": { "method": "GET", - "url": "http://localhost:8080/api/v1/dictionary/search/{tags}", + "url": controllerApiConfig.url + "/dictionary/search/{tags}", "headers": { "accepts": "application/json", "content-type": "application/json", - "authorization": "{authtoken}" + "authorization": controllerApiConfig.authToken }, "responsePath": "$.*" }, "functions": { - "getByTags": ["tags", "authtoken"] + "getByTags": ["tags"] } }, { "template": { "method": "POST", - "url": "http://localhost:8080/api/v1/dictionary", + "url": controllerApiConfig.url + "/dictionary", "headers": { "accepts": "application/json", "content-type": "application/json", - "authorization": "{authtoken}" + "authorization": controllerApiConfig.authToken }, "body": "{resourceDictionary}", "responsePath": "$.*" }, "functions": { - "save": ["authtoken", "resourceDictionary"] + "save": ["resourceDictionary"] } }, { "template": { "method": "POST", - "url": "http://localhost:8080/api/v1/dictionary/by-names", + "url": controllerApiConfig.url + "/dictionary/by-names", "headers": { "accepts": "application/json", "content-type": "application/json", - "authorization": "{authtoken}" + "authorization": controllerApiConfig.authToken }, "body": "{resourceDictionaryList}", "responsePath": "$.*" }, "functions": { - "searchbyNames": ["authtoken", "resourceDictionaryList"] + "searchbyNames": ["resourceDictionaryList"] } } ] -}
\ No newline at end of file +};
\ No newline at end of file diff --git a/cds-ui/server/src/datasources/resource-dictionary.datasource.ts b/cds-ui/server/src/datasources/resource-dictionary.datasource.ts index 381ab9a78..ba12c78e2 100644 --- a/cds-ui/server/src/datasources/resource-dictionary.datasource.ts +++ b/cds-ui/server/src/datasources/resource-dictionary.datasource.ts @@ -1,6 +1,6 @@ import {inject} from '@loopback/core'; import {juggler} from '@loopback/repository'; -import * as config from './resource-dictionary.datasource.json'; +import config from './resource-dictionary.datasource-template'; export class ResourceDictionaryDataSource extends juggler.DataSource { static dataSourceName = 'resourceDictionary'; diff --git a/cds-ui/server/src/services/blueprint.service.ts b/cds-ui/server/src/services/blueprint.service.ts index f48253652..970b2afda 100644 --- a/cds-ui/server/src/services/blueprint.service.ts +++ b/cds-ui/server/src/services/blueprint.service.ts @@ -3,7 +3,7 @@ import {inject, Provider} from '@loopback/core'; import {BlueprintDataSource} from '../datasources'; export interface BlueprintService { - getAllblueprints(authtoken: string): Promise<any>; + getAllblueprints(): Promise<any>; } export class BlueprintServiceProvider implements Provider<BlueprintService> { diff --git a/cds-ui/server/src/services/resource-dictionary.service.ts b/cds-ui/server/src/services/resource-dictionary.service.ts index 44ba1a347..8bc61fad1 100644 --- a/cds-ui/server/src/services/resource-dictionary.service.ts +++ b/cds-ui/server/src/services/resource-dictionary.service.ts @@ -3,11 +3,11 @@ import {inject, Provider} from '@loopback/core'; import {ResourceDictionaryDataSource} from '../datasources'; export interface ResourceDictionaryService { - getByName(name: string, authtoken: string): Promise<JSON>; - getSourceMapping(authtoken: string): Promise<JSON>; - getByTags(tags: string, authtoken: string): Promise<JSON>; - save(authtoken: string, resourceDictionary: JSON): Promise<JSON>; - searchbyNames(authtoken: string, resourceDictionaryList: JSON): Promise<JSON>; + getByName(name: string): Promise<JSON>; + getSourceMapping(): Promise<JSON>; + getByTags(tags: string): Promise<JSON>; + save(resourceDictionary: JSON): Promise<JSON>; + searchbyNames(resourceDictionaryList: JSON): Promise<JSON>; } export class ResourceDictionaryServiceProvider implements Provider<ResourceDictionaryService> { |