summaryrefslogtreecommitdiffstats
path: root/cds-ui/server
diff options
context:
space:
mode:
authorNirvan Ramjuttun <nirvan.ramjuttun@amdocs.com>2019-05-07 12:39:19 -0400
committerNirvan Ramjuttun <nirvan.ramjuttun@amdocs.com>2019-05-07 12:40:03 -0400
commit087d4b667a9c5517ac7d014c2bbdad994b927147 (patch)
tree1c0f7eb856794a3a161ebdb3029fba4eb48a6f3e /cds-ui/server
parent0924c4da768d1119a17936933606a38de6526b52 (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.ts9
-rw-r--r--cds-ui/server/src/controllers/blueprint-rest.controller.ts44
-rw-r--r--cds-ui/server/src/controllers/data-dictionary.controller.ts14
-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.ts2
-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.ts2
-rw-r--r--cds-ui/server/src/services/blueprint.service.ts2
-rw-r--r--cds-ui/server/src/services/resource-dictionary.service.ts10
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> {