aboutsummaryrefslogtreecommitdiffstats
path: root/cds-ui
diff options
context:
space:
mode:
Diffstat (limited to 'cds-ui')
-rw-r--r--cds-ui/client/src/app/feature-modules/blueprint/select-template/search-template/search-template.service.ts21
-rw-r--r--cds-ui/server/src/controllers/blueprint-rest.controller.ts107
-rw-r--r--cds-ui/server/src/datasources/blueprint.datasource-template.ts19
-rw-r--r--cds-ui/server/src/services/blueprint.service.ts1
4 files changed, 99 insertions, 49 deletions
diff --git a/cds-ui/client/src/app/feature-modules/blueprint/select-template/search-template/search-template.service.ts b/cds-ui/client/src/app/feature-modules/blueprint/select-template/search-template/search-template.service.ts
index fdb261d52..dd17a30d2 100644
--- a/cds-ui/client/src/app/feature-modules/blueprint/select-template/search-template/search-template.service.ts
+++ b/cds-ui/client/src/app/feature-modules/blueprint/select-template/search-template/search-template.service.ts
@@ -1,3 +1,24 @@
+/*
+============LICENSE_START==========================================
+===================================================================
+Copyright (C) 2019 IBM Intellectual Property. All rights reserved.
+===================================================================
+
+Unless otherwise specified, all software contained herein is licensed
+under the Apache License, Version 2.0 (the License);
+you may not use this software 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 { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
diff --git a/cds-ui/server/src/controllers/blueprint-rest.controller.ts b/cds-ui/server/src/controllers/blueprint-rest.controller.ts
index 52e77ee7b..14aba5617 100644
--- a/cds-ui/server/src/controllers/blueprint-rest.controller.ts
+++ b/cds-ui/server/src/controllers/blueprint-rest.controller.ts
@@ -42,20 +42,20 @@ import {
Response,
RestBindings,
} from '@loopback/rest';
-import {Blueprint} from '../models';
+import { Blueprint } from '../models';
import { inject } from '@loopback/core';
import { BlueprintService } from '../services';
import * as fs from 'fs';
import * as multiparty from 'multiparty';
import * as request_lib from 'request';
-import {controllerApiConfig, processorApiConfig, appConfig} from '../config/app-config';
-import {bluePrintManagementServiceGrpcClient} from '../clients/blueprint-management-service-grpc-client';
+import { controllerApiConfig, processorApiConfig, appConfig } from '../config/app-config';
+import { bluePrintManagementServiceGrpcClient } from '../clients/blueprint-management-service-grpc-client';
export class BlueprintRestController {
constructor(
- @inject('services.BlueprintService')
+ @inject('services.BlueprintService')
public bpservice: BlueprintService,
- ) {}
+ ) { }
@get('/blueprints', {
responses: {
@@ -69,6 +69,17 @@ export class BlueprintRestController {
return await this.bpservice.getAllblueprints();
}
+ @get('/searchByTags/{tags}', {
+ responses: {
+ '200': {
+ content: { 'application/json': {} },
+ },
+ },
+ })
+ async getByTags(@param.path.string('tags') tags: string) {
+ return await this.bpservice.getByTags(tags);
+ }
+
@post('/create-blueprint')
async upload(
@requestBody({
@@ -78,21 +89,21 @@ export class BlueprintRestController {
'multipart/form-data': {
// Skip body parsing
'x-parser': 'stream',
- schema: {type: 'object'},
+ schema: { type: 'object' },
},
},
})
request: Request,
@inject(RestBindings.Http.RESPONSE) response: Response,
): Promise<Response> {
- return new Promise((resolve, reject) => {
- this.getFileFromMultiPartForm(request).then(file=>{
- this.uploadFileToBlueprintController(file, "/blueprint-model/", response).then(resp=>{
+ return new Promise((resolve, reject) => {
+ this.getFileFromMultiPartForm(request).then(file => {
+ this.uploadFileToBlueprintController(file, "/blueprint-model/", response).then(resp => {
resolve(resp);
- }, err=>{
- reject(err);
- });
- }, err=>{
+ }, err => {
+ reject(err);
+ });
+ }, err => {
reject(err);
});
});
@@ -107,21 +118,21 @@ export class BlueprintRestController {
'multipart/form-data': {
// Skip body parsing
'x-parser': 'stream',
- schema: {type: 'object'},
+ schema: { type: 'object' },
},
},
})
request: Request,
@inject(RestBindings.Http.RESPONSE) response: Response,
): Promise<Response> {
- return new Promise((resolve, reject) => {
- this.getFileFromMultiPartForm(request).then(file=>{
- this.uploadFileToBlueprintController(file, "/blueprint-model/publish/", response).then(resp=>{
+ 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=>{
+ }, err => {
+ reject(err);
+ });
+ }, err => {
reject(err);
});
});
@@ -136,21 +147,21 @@ export class BlueprintRestController {
'multipart/form-data': {
// Skip body parsing
'x-parser': 'stream',
- schema: {type: 'object'},
+ schema: { type: 'object' },
},
},
})
request: Request,
@inject(RestBindings.Http.RESPONSE) response: Response,
): Promise<Response> {
- 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=>{
+ 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);
});
});
@@ -159,21 +170,21 @@ export class BlueprintRestController {
@get('/download-blueprint/{name}/{version}')
async download(
@param.path.string('name') name: string,
- @param.path.string('version') version:string,
+ @param.path.string('version') version: string,
@inject(RestBindings.Http.RESPONSE) response: Response,
): Promise<Response> {
- return this.downloadFileFromBlueprintController("/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>{
+ async getFileFromMultiPartForm(request: Request): Promise<multiparty.File> {
return new Promise((resolve, reject) => {
let form = new multiparty.Form();
form.parse(request, (err: any, fields: any, files: { [x: string]: any[]; }) => {
if (err) reject(err);
let file = files['file'][0]; // get the file from the returned files object
- if(!file){
+ if (!file) {
reject('File was not found in form data.');
- }else{
+ } else {
resolve(file);
}
});
@@ -189,34 +200,34 @@ export class BlueprintRestController {
'multipart/form-data': {
// Skip body parsing
'x-parser': 'stream',
- schema: {type: 'object'},
+ schema: { type: 'object' },
},
},
})
request: Request,
@inject(RestBindings.Http.RESPONSE) response: Response,
): Promise<Response> {
- return new Promise((resolve, reject) => {
- this.getFileFromMultiPartForm(request).then(file=>{
- if(appConfig.action.deployBlueprint.grpcEnabled)
- return this.uploadFileToBlueprintProcessorGrpc(file, response);
- else
+ return new Promise((resolve, reject) => {
+ this.getFileFromMultiPartForm(request).then(file => {
+ if (appConfig.action.deployBlueprint.grpcEnabled)
+ return this.uploadFileToBlueprintProcessorGrpc(file, response);
+ else
return this.uploadFileToBlueprintProcessor(file, "/execution-service/upload/", response);
- }, err=>{
+ }, err => {
reject(err);
});
});
}
- async uploadFileToBlueprintController(file: multiparty.File, uri: string, response: Response): Promise<Response>{
+ async uploadFileToBlueprintController(file: multiparty.File, uri: string, response: Response): Promise<Response> {
return this.uploadFileToBlueprintService(file, controllerApiConfig.http.url + uri, controllerApiConfig.http.authToken, response);
}
- async uploadFileToBlueprintProcessor(file: multiparty.File, uri: string, response: Response): Promise<Response>{
+ async uploadFileToBlueprintProcessor(file: multiparty.File, uri: string, response: Response): Promise<Response> {
return this.uploadFileToBlueprintService(file, processorApiConfig.http.url + uri, processorApiConfig.http.authToken, response);
}
- async uploadFileToBlueprintService(file: multiparty.File, url: string, authToken: string, response: Response): Promise<Response>{
+ async uploadFileToBlueprintService(file: multiparty.File, url: string, authToken: string, response: Response): Promise<Response> {
let options = {
url: url,
headers: {
@@ -238,7 +249,7 @@ export class BlueprintRestController {
fs.unlink(file.path, (err: any) => {
if (err) {
console.error(err);
- }
+ }
});
}
@@ -280,10 +291,10 @@ export class BlueprintRestController {
async uploadFileToBlueprintProcessorGrpc(file: multiparty.File, response: Response): Promise<Response> {
return new Promise<Response>((resolve, reject) => {
- bluePrintManagementServiceGrpcClient.uploadBlueprint(file.path).then(output=>{
+ bluePrintManagementServiceGrpcClient.uploadBlueprint(file.path).then(output => {
response.send(output.status.message);
resolve(response);
- }, err=>{
+ }, err => {
response.status(500).send(err);
resolve(response);
});
diff --git a/cds-ui/server/src/datasources/blueprint.datasource-template.ts b/cds-ui/server/src/datasources/blueprint.datasource-template.ts
index 35edf33e3..1188d9bcf 100644
--- a/cds-ui/server/src/datasources/blueprint.datasource-template.ts
+++ b/cds-ui/server/src/datasources/blueprint.datasource-template.ts
@@ -21,5 +21,22 @@ export default {
"getAllblueprints": []
}
- }]
+ },
+ {
+ "template": {
+ "method": "GET",
+ "url": controllerApiConfig.http.url + "/blueprint-model/search/{tags}",
+ "headers": {
+ "accepts": "application/json",
+ "content-type": "application/json",
+ "authorization": controllerApiConfig.http.authToken
+ },
+ "responsePath": "$.*"
+ },
+ "functions": {
+ "getByTags": ["tags"]
+
+ }
+ },
+]
}; \ No newline at end of file
diff --git a/cds-ui/server/src/services/blueprint.service.ts b/cds-ui/server/src/services/blueprint.service.ts
index 970b2afda..0545faca8 100644
--- a/cds-ui/server/src/services/blueprint.service.ts
+++ b/cds-ui/server/src/services/blueprint.service.ts
@@ -4,6 +4,7 @@ import {BlueprintDataSource} from '../datasources';
export interface BlueprintService {
getAllblueprints(): Promise<any>;
+ getByTags(tags: string): Promise<JSON>;
}
export class BlueprintServiceProvider implements Provider<BlueprintService> {