From 515636e496d18b908f2abab90439b395a66f2087 Mon Sep 17 00:00:00 2001 From: Ezhilarasi Date: Thu, 17 Oct 2019 15:58:08 +0530 Subject: Loopback code for GRPC functionality GRPC integration for Draft, Publish, Download Change-Id: I24e138fae766da7a112ac9f49a8ba036d81b5bb5 Issue-ID: CCSDK-1785 Signed-off-by: Ezhilarasi --- .../blueprint-management-service-grpc-client.ts | 37 ++++++++- cds-ui/server/src/config/app-config.ts | 4 +- .../src/controllers/blueprint-rest.controller.ts | 88 ++++++++++++++++------ 3 files changed, 103 insertions(+), 26 deletions(-) (limited to 'cds-ui') diff --git a/cds-ui/server/src/clients/blueprint-management-service-grpc-client.ts b/cds-ui/server/src/clients/blueprint-management-service-grpc-client.ts index b66b2a771..8975f4501 100644 --- a/cds-ui/server/src/clients/blueprint-management-service-grpc-client.ts +++ b/cds-ui/server/src/clients/blueprint-management-service-grpc-client.ts @@ -17,7 +17,7 @@ import * as fs from 'fs'; import * as uuidv1 from 'uuid/v1'; const grpc = require('grpc'); import * as protoLoader from '@grpc/proto-loader'; -import {processorApiConfig} from '../config/app-config'; +import { processorApiConfig } from '../config/app-config'; const PROTO_PATH = processorApiConfig.grpc.bluePrintManagement.protoPath; @@ -44,7 +44,7 @@ metadata.add('Authorization', processorApiConfig.grpc.authToken); class BluePrintManagementServiceGrpcClient { - async uploadBlueprint(filePath: string): Promise { + async uploadBlueprint(filePath: string, actionName: string): Promise { let input = { commonHeader: { @@ -55,6 +55,11 @@ class BluePrintManagementServiceGrpcClient { }, fileChunk: { chunk: fs.readFileSync(filePath) + }, + actionIdentifiers: { + mode: "sync", + blueprintName: "cds.zip", + actionName: actionName } } @@ -80,6 +85,34 @@ class BluePrintManagementServiceGrpcClient { }); } + + async downloadBlueprint(blueprintName: string,blueprintVersion: string): Promise { + + let input = { + commonHeader: { + timestamp: new Date(), + originatorId: "cds-ui", + requestId: uuidv1(), + subRequestId: "1234-56", + }, + actionIdentifiers: { + mode: "sync", + blueprintName: blueprintName, + blueprintVersion: blueprintVersion + } + } + + return new Promise((resolve, reject) => { + stub.downloadBlueprint(input, metadata, (err: any, output: any) => { + if (err) { + reject(err); + return; + } + resolve(output); + }); + }); + + } } export const bluePrintManagementServiceGrpcClient = new BluePrintManagementServiceGrpcClient(); diff --git a/cds-ui/server/src/config/app-config.ts b/cds-ui/server/src/config/app-config.ts index a2cebe59d..9b253b8fc 100644 --- a/cds-ui/server/src/config/app-config.ts +++ b/cds-ui/server/src/config/app-config.ts @@ -15,9 +15,9 @@ */ export const appConfig = Object.freeze({ action: Object.freeze({ - deployBlueprint: Object.freeze({ + // deployBlueprint: Object.freeze({ grpcEnabled: process.env.APP_ACTION_DEPLOY_BLUEPRINT_GRPC_ENABLED || true - }) + // }) }) }); diff --git a/cds-ui/server/src/controllers/blueprint-rest.controller.ts b/cds-ui/server/src/controllers/blueprint-rest.controller.ts index 789589837..1eef6fbcb 100644 --- a/cds-ui/server/src/controllers/blueprint-rest.controller.ts +++ b/cds-ui/server/src/controllers/blueprint-rest.controller.ts @@ -98,15 +98,26 @@ export class BlueprintRestController { ): Promise { return new Promise((resolve, reject) => { this.getFileFromMultiPartForm(request).then(file => { - this.uploadFileToBlueprintController(file, "/blueprint-model/", response).then(resp => { - resolve(resp); - }, err => { - reject(err); - }); + // if (appConfig.action.deployBlueprint.grpcEnabled) + if (appConfig.action.grpcEnabled) + return this.uploadFileToBlueprintProcessorGrpc(file, "DRAFT", response); + else + return this.uploadFileToBlueprintController(file, "/blueprint-model/", response); }, err => { reject(err); }); }); + // return new Promise((resolve, reject) => { + // this.getFileFromMultiPartForm(request).then(file => { + // this.uploadFileToBlueprintController(file, "/blueprint-model/", response).then(resp => { + // resolve(resp); + // }, err => { + // reject(err); + // }); + // }, err => { + // reject(err); + // }); + // }); } @post('/controllerblueprint/publish') @@ -127,15 +138,26 @@ export class BlueprintRestController { ): Promise { return new Promise((resolve, reject) => { this.getFileFromMultiPartForm(request).then(file => { - this.uploadFileToBlueprintController(file, "/blueprint-model/publish/", response).then(resp => { - resolve(resp); - }, err => { - reject(err); - }); + // if (appConfig.action.deployBlueprint.grpcEnabled) + if (appConfig.action.grpcEnabled) + return this.uploadFileToBlueprintProcessorGrpc(file, "PUBLISH", response); + else + return this.uploadFileToBlueprintController(file, "/blueprint-model/publish/", response); }, err => { reject(err); }); }); + // return new Promise((resolve, reject) => { + // this.getFileFromMultiPartForm(request).then(file => { + // this.uploadFileToBlueprintController(file, "/blueprint-model/publish/", response).then(resp => { + // resolve(resp); + // }, err => { + // reject(err); + // }); + // }, err => { + // reject(err); + // }); + // }); } @post('/controllerblueprint/enrich-blueprint') @@ -156,13 +178,17 @@ export class BlueprintRestController { ): Promise { return new Promise((resolve, reject) => { this.getFileFromMultiPartForm(request).then(file => { - this.uploadFileToBlueprintController(file, "/blueprint-model/enrich/", response).then(resp => { - resolve(resp); - }, err => { - reject(err); - }); - }, err => { - reject(err); + if (appConfig.action.grpcEnabled) + return this.uploadFileToBlueprintProcessorGrpc(file, "ENRICH", response); + else + return this.uploadFileToBlueprintController(file, "/blueprint-model/enrich/", response) + // this.uploadFileToBlueprintController(file, "/blueprint-model/enrich/", response).then(resp => { + // resolve(resp); + // }, err => { + // reject(err); + // }); + // }, err => { + // reject(err); }); }); } @@ -173,9 +199,14 @@ export class BlueprintRestController { @param.path.string('version') version: string, @inject(RestBindings.Http.RESPONSE) response: Response, ): Promise { - return this.downloadFileFromBlueprintController("/blueprint-model/download/by-name/" + name + "/version/" + version, response); + + if (appConfig.action.grpcEnabled) + return this.downloadFileFromBlueprintProcessorGrpc(name, version, response); + else + return this.downloadFileFromBlueprintController("/blueprint-model/download/by-name/" + name + "/version/" + version, response); } + async getFileFromMultiPartForm(request: Request): Promise { return new Promise((resolve, reject) => { let form = new multiparty.Form(); @@ -209,8 +240,9 @@ export class BlueprintRestController { ): Promise { return new Promise((resolve, reject) => { this.getFileFromMultiPartForm(request).then(file => { - if (appConfig.action.deployBlueprint.grpcEnabled) - return this.uploadFileToBlueprintProcessorGrpc(file, response); + // if (appConfig.action.deployBlueprint.grpcEnabled) + if (appConfig.action.grpcEnabled) + return this.uploadFileToBlueprintProcessorGrpc(file, "PUBLISH", response); else return this.uploadFileToBlueprintProcessor(file, "/execution-service/upload/", response); }, err => { @@ -289,9 +321,9 @@ export class BlueprintRestController { }) } - async uploadFileToBlueprintProcessorGrpc(file: multiparty.File, response: Response): Promise { + async uploadFileToBlueprintProcessorGrpc(file: multiparty.File, actionName: string, response: Response): Promise { return new Promise((resolve, reject) => { - bluePrintManagementServiceGrpcClient.uploadBlueprint(file.path).then(output => { + bluePrintManagementServiceGrpcClient.uploadBlueprint(file.path, actionName).then(output => { response.send(output.status.message); resolve(response); }, err => { @@ -300,4 +332,16 @@ export class BlueprintRestController { }); }); } + async downloadFileFromBlueprintProcessorGrpc(blueprintName: string, blueprintVersion: string, response: Response): Promise { + return new Promise((resolve, reject) => { + bluePrintManagementServiceGrpcClient.downloadBlueprint(blueprintName, blueprintVersion) + .then(output => { + response.send(output.status.message); + resolve(response); + }, err => { + response.status(500).send(err); + resolve(response); + }); + }); + } } \ No newline at end of file -- cgit 1.2.3-korg