From 61cca2f2887446b3dbd5ef9374491ed861a3e403 Mon Sep 17 00:00:00 2001 From: nhertz <nhertz@nrao.edu> Date: Thu, 8 Apr 2021 16:11:28 -0600 Subject: [PATCH] Removed capability name from URL of all capability request REST endpoints except for `create_capability_request` (ex: `capability/null/request/1/submit` is now `capability/request/1/submit`) --- .../services/capability-launcher.service.ts | 35 +++++--------- .../app/workspaces/workspaces.component.html | 48 +++++++++++++++---- .../app/workspaces/workspaces.component.ts | 28 +++++------ services/capability/capability/routes.py | 2 +- .../capability/views/capability_request.py | 5 +- 5 files changed, 69 insertions(+), 49 deletions(-) diff --git a/apps/web/src/app/workspaces/services/capability-launcher.service.ts b/apps/web/src/app/workspaces/services/capability-launcher.service.ts index 2523a7db2..22d7f2b72 100644 --- a/apps/web/src/app/workspaces/services/capability-launcher.service.ts +++ b/apps/web/src/app/workspaces/services/capability-launcher.service.ts @@ -1,15 +1,15 @@ -import { Injectable } from '@angular/core'; -import { HttpClient } from '@angular/common/http'; -import { environment } from '../../../environments/environment'; -import { Observable } from 'rxjs'; -import { CapabilityRequest } from '../model/capability-request'; -import { CapabilityExecution } from '../model/capability-execution'; +import { Injectable } from "@angular/core"; +import { HttpClient } from "@angular/common/http"; +import { environment } from "../../../environments/environment"; +import { Observable } from "rxjs"; +import { CapabilityRequest } from "../model/capability-request"; +import { CapabilityExecution } from "../model/capability-execution"; @Injectable({ - providedIn: 'root', + providedIn: "root", }) export class CapabilityLauncherService { - private endpoint = 'capability/'; + private endpoint = "capability/"; constructor(private httpClient: HttpClient) {} @@ -18,26 +18,17 @@ export class CapabilityLauncherService { * @param: capabilityName Name of capability to create request for * @param: parameters Parameters for capability request */ - createRequest( - capabilityName: string, - parameters: any - ): Observable<CapabilityRequest> { - const url = - this.endpoint + - capabilityName + - '/request/create'; - return this.httpClient.post<CapabilityRequest>(url, JSON.stringify({'parameters': parameters})); + createRequest(capabilityName: string, parameters: JSON): Observable<CapabilityRequest> { + const url = this.endpoint + capabilityName + "/request/create"; + return this.httpClient.post<CapabilityRequest>(url, JSON.stringify({ parameters: parameters })); } /** * Submit capability request * @param: requestId ID of capability request to submit */ - submit( - capabilityName: string, - requestId: string - ): Observable<CapabilityExecution> { - const url = `${this.endpoint}${capabilityName}/request/${requestId}/submit`; + submit(requestId: string): Observable<CapabilityExecution> { + const url = `${this.endpoint}request/${requestId}/submit`; return this.httpClient.post<CapabilityExecution>(url, null); } } diff --git a/apps/web/src/app/workspaces/workspaces.component.html b/apps/web/src/app/workspaces/workspaces.component.html index 23fe1c38b..539a1bbdb 100644 --- a/apps/web/src/app/workspaces/workspaces.component.html +++ b/apps/web/src/app/workspaces/workspaces.component.html @@ -1,33 +1,63 @@ <div class="container-fluid"> <div class="row py-2"> <div class="col"> - <button type="button" id="launchNullCapabilityBtn" class="btn btn-secondary" (click)="nullButtonOnClick()">Launch null capability</button> + <button + type="button" + id="launchNullCapabilityBtn" + class="btn btn-secondary" + (click)="nullButtonOnClick()" + > + Launch null capability + </button> </div> </div> - <br/> - <br/> + <br /> + <br /> <div class="md-form"> <label for="splInput" class="">Science Product</label> - <input type="text" id="splInput" [value]="productLocator" (change)="setProductLocator($event.target.value)" class="form-control" placeholder="e.g. uid://evla/execblock/27561b56-4c6a-4614-bc26-67e436b5e92c"> + <input + type="text" + id="splInput" + [value]="productLocator" + (change)="setProductLocator($event.target.value)" + class="form-control" + placeholder="e.g. uid://evla/execblock/27561b56-4c6a-4614-bc26-67e436b5e92c" + /> </div> - <br/> + <br /> <div class="md-form"> <label for="userEmail" class="">Email Address</label> - <input type="text" id="userEmail" [value]="userEmail" (change)="setUserEmail($event.target.value)" class="form-control"> + <input + type="text" + id="userEmail" + [value]="userEmail" + (change)="setUserEmail($event.target.value)" + class="form-control" + /> </div> <div class="row py-2"> <div class="col"> - <button type="button" id="launchDownloadCapabilityBtn" class="btn btn-warning" (click)="downloadButtonOnClick()">Launch download capability</button> + <button + type="button" + id="launchDownloadCapabilityBtn" + class="btn btn-warning" + (click)="downloadButtonOnClick()" + > + Launch download capability + </button> </div> </div> </div> <div class="p-2" id="capabilityResults" *ngFor="let request of capabilityRequests; index as i"> - <code id="request-{{i}}">Capability request created: {{request | json}}</code><br> - <code id="execution-{{i}}">Capability *ngIf="capabilityExecutions[i]">Capability execution created: {{capabilityExecutions[i] | json}}</code><br/> + <code id="request-{{ i }}">Capability request created: {{ request | json }}</code + ><br /> + <code id="execution-{{ i }}" *ngIf="capabilityExecutions[i]" + >Capability execution created: {{ capabilityExecutions[i] | json }}</code + ><br /> </div> diff --git a/apps/web/src/app/workspaces/workspaces.component.ts b/apps/web/src/app/workspaces/workspaces.component.ts index ce356d498..13d66cfa4 100644 --- a/apps/web/src/app/workspaces/workspaces.component.ts +++ b/apps/web/src/app/workspaces/workspaces.component.ts @@ -18,8 +18,8 @@ export class WorkspacesComponent implements OnInit { constructor(private capabilityLauncher: CapabilityLauncherService) { // this is the famous 394 MB 13B-014 execblock, a useful smallish test - this.productLocator = - "uid://evla/image/3d3db489-9331-4e61-aa80-002bc2989b1e"; + this.productLocator = "uid://evla/image/3d3db489-9331-4e61-aa80-002bc2989b1e"; + this.userEmail = null; } @@ -46,7 +46,7 @@ export class WorkspacesComponent implements OnInit { * method that sets the user input Science Product Locator for the download capability * @param spl the Science Product Locator to download */ - setProductLocator(spl: string) { + setProductLocator(spl: string): void { this.productLocator = spl; } @@ -54,7 +54,7 @@ export class WorkspacesComponent implements OnInit { * method to set the user email for notifications * @param email user specified email */ - setUserEmail(email: string) { + setUserEmail(email: string): void { this.userEmail = email; } @@ -72,21 +72,19 @@ export class WorkspacesComponent implements OnInit { if (requestResponse.id) { // Capability request created; ID found // Submit capability request - this.capabilityLauncher - .submit(capabilityName, requestResponse.id) - .subscribe( - (submitResponse) => { - this.capabilityExecutions.push(submitResponse); - }, - (error) => { - console.log(error); - } - ); + this.capabilityLauncher.submit(requestResponse.id).subscribe( + (submitResponse) => { + this.capabilityExecutions.push(submitResponse); + }, + (error) => { + console.log(error); + }, + ); } }, (error) => { console.log(error); - } + }, ); } } diff --git a/services/capability/capability/routes.py b/services/capability/capability/routes.py index 1178ac5e5..83a6668ba 100644 --- a/services/capability/capability/routes.py +++ b/services/capability/capability/routes.py @@ -63,7 +63,7 @@ def capability_request_routes(config: Configurator): :param config: Pyramid server config object """ - request_url = "capability/{capability_name}/request/{request_id}" + request_url = "capability/request/{request_id}" # GET config.add_route( name="view_capability_request", diff --git a/services/capability/capability/views/capability_request.py b/services/capability/capability/views/capability_request.py index 3757f0cb6..577a22bd9 100644 --- a/services/capability/capability/views/capability_request.py +++ b/services/capability/capability/views/capability_request.py @@ -95,13 +95,14 @@ def submit_capability_request(request: Request) -> Response: or 412 response (HTTPPreconditionFailed) if capability request with given ID does not exist and thus cannot be submitted """ - capability_name = request.matchdict["capability_name"] request_id = request.matchdict["request_id"] capability_request = request.capability_info.lookup_capability_request(request_id) if not capability_request: # Capability request not found - does_not_exist_msg = f"Capability request for {capability_name} with ID {request_id} does not exist. Cannot submit." + does_not_exist_msg = ( + f"Capability request with ID {request_id} does not exist. Cannot submit." + ) return HTTPPreconditionFailed(detail=does_not_exist_msg) else: execution = request.capability_service.run_capability(capability_request) -- GitLab