Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • ssa/workspaces
1 result
Show changes
Commits on Source (5)
Showing
with 37971 additions and 10078 deletions
......@@ -31,7 +31,8 @@ include:
build base image:
stage: build-base
script:
- docker build -t ${REGISTRY_URL}/ops/base:${PROJECT_NAME} -f Dockerfile.base . ; \
- docker build -t ${REGISTRY_URL}/ops/base:${PROJECT_NAME} -f Dockerfile.base .
- docker tag ${REGISTRY_URL}/ops/base:${PROJECT_NAME} ${REGISTRY_URL}/ops/base:${CI_COMMIT_SHORT_SHA}
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_COMMIT_MESSAGE =~ /\A(?i)-ops/'
changes:
......@@ -43,11 +44,11 @@ push base image:
script:
- echo "$HARBOR_PASSWORD" | docker login -u "$HARBOR_USER" --password-stdin $REGISTRY_URL
- docker push ${REGISTRY_URL}/ops/base:${PROJECT_NAME}
- docker push ${REGISTRY_URL}/ops/base:${CI_COMMIT_SHORT_SHA}
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_COMMIT_MESSAGE =~ /\A(?i)-ops/'
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE =~ /\A(?i)-ops/'
changes:
- Dockerfile.base
when: always
# Build Stages
build dev workflow:
......@@ -76,18 +77,24 @@ unit test dev workflow:
variables:
SERVICE_NAME: "workflow"
extends: .unit-test
needs:
- build dev workflow
unit test dev capability:
stage: unit-test-dev
variables:
SERVICE_NAME: "capability"
extends: .unit-test
needs:
- build dev capability
unit test dev notification:
stage: unit-test-dev
variables:
SERVICE_NAME: "notification"
extends: .unit-test
needs:
- build dev notification
# Push Stages
push dev workflow:
......@@ -96,7 +103,7 @@ push dev workflow:
SERVICE_NAME: "workflow"
extends: .push
needs:
- build dev workflow
- unit test dev workflow
push dev capability:
stage: push-dev
......@@ -104,7 +111,7 @@ push dev capability:
SERVICE_NAME: "capability"
extends: .push
needs:
- build dev capability
- unit test dev capability
push dev notification:
stage: push-dev
......@@ -112,7 +119,7 @@ push dev notification:
SERVICE_NAME: "notification"
extends: .push
needs:
- build dev notification
- unit test dev notification
# Cleanup
clean build workflow:
......@@ -120,24 +127,18 @@ clean build workflow:
variables:
SERVICE_NAME: "workflow"
extends: .cleanup
needs:
- build dev workflow
clean build capability:
stage: clean-images
variables:
SERVICE_NAME: "capability"
extends: .cleanup
needs:
- build dev capability
clean build notification:
stage: clean-images
variables:
SERVICE_NAME: "notification"
extends: .cleanup
needs:
- build dev notification
# Deploy Stages
......
......@@ -12,6 +12,7 @@ RUN apt-get update \
# - CAPO_PROFILE will be overridden for Dev, Test, and Prod
ENV PIP_NO_CACHE_DIR false
ENV CAPO_PROFILE docker
ENV CAPO_PATH /root/.capo
# Set up Capo
WORKDIR /root/.capo
......
{
"lockfileVersion": 1
}
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"cli": {
"analytics": "100e0aff-9de6-4ed0-bde4-11777b09bc13"
},
"version": 1,
"newProjectRoot": "projects",
"projects": {
......@@ -30,8 +33,7 @@
"styles": [
"src/styles.scss"
],
"scripts": [],
"es5BrowserSupport": true
"scripts": []
},
"configurations": {
"production": {
......
File moved
This diff is collapsed.
......@@ -11,44 +11,44 @@
},
"private": true,
"dependencies": {
"@angular/animations": "~7.2.0",
"@angular/common": "~7.2.0",
"@angular/compiler": "~7.2.0",
"@angular/core": "~7.2.0",
"@angular/forms": "~7.2.0",
"@angular/platform-browser": "~7.2.0",
"@angular/platform-browser-dynamic": "~7.2.0",
"@angular/router": "~7.2.0",
"@angular/animations": "~11.1.1",
"@angular/common": "~11.1.1",
"@angular/compiler": "~11.1.1",
"@angular/core": "~11.1.1",
"@angular/forms": "~11.1.1",
"@angular/platform-browser": "~11.1.1",
"@angular/platform-browser-dynamic": "~11.1.1",
"@angular/router": "~11.1.1",
"@ng-bootstrap/ng-bootstrap": "^4.2.1",
"bootstrap": "^4.3.1",
"core-js": "^2.5.4",
"jquery": "^3.4.1",
"ng-angular": "0.0.1",
"ng-bootstrap": "^1.6.3",
"ng-bootstrap": "^0.46.0",
"popper": "^1.0.1",
"rxjs": "~6.3.3",
"tslib": "^1.9.0",
"zone.js": "~0.8.26"
"rxjs": "~6.6.3",
"tslib": "^1.14.1",
"zone.js": "~0.10.3"
},
"devDependencies": {
"@angular-devkit/build-angular": "~0.13.0",
"@angular/cli": "~7.3.9",
"@angular/compiler-cli": "~7.2.0",
"@angular/language-service": "~7.2.0",
"@angular-devkit/build-angular": "~0.1101.2",
"@angular/cli": "~11.1.2",
"@angular/compiler-cli": "~11.1.1",
"@angular/language-service": "~11.1.1",
"@types/jasmine": "~2.8.8",
"@types/jasminewd2": "~2.0.3",
"@types/node": "~8.9.4",
"codelyzer": "~4.5.0",
"codelyzer": "^5.0.1",
"jasmine-core": "~2.99.1",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~4.0.0",
"karma": "~5.2.3",
"karma-chrome-launcher": "~2.2.0",
"karma-coverage-istanbul-reporter": "~2.0.1",
"karma-jasmine": "~1.1.2",
"karma-jasmine-html-reporter": "^0.2.2",
"protractor": "~5.4.0",
"protractor": "~7.0.0",
"ts-node": "~7.0.0",
"tslint": "~5.11.0",
"typescript": "~3.2.2"
"tslint": "~6.1.3",
"typescript": "~4.0.5"
}
}
import {NgModule} from '@angular/core';
import {PreloadAllModules, RouterModule, Routes} from "@angular/router";
import {SplashComponent} from "./splash/splash.component";
import {PreloadAllModules, RouterModule, Routes} from '@angular/router';
import {SplashComponent} from './splash/splash.component';
const routes: Routes = [
{path: 'aat', loadChildren: () => import('./archive-search/archive-search.module').then(mod => mod.ArchiveSearchModule) },
{path: 'workspaces', loadChildren: () => import('./workspaces/workspaces.module').then(mod => mod.WorkspacesModule) },
{path: '', component: SplashComponent},
{path: '**', redirectTo: '', pathMatch: 'full'}
];
......
import {Component, ViewChild, ViewContainerRef, OnInit, Input} from '@angular/core';
import { FacetsService } from "../services/facets.service";
import { ResultTypeService } from "../services/result-type.service";
import {Component, Input, OnInit, ViewChild, ViewContainerRef} from '@angular/core';
import {FacetsService} from "../services/facets.service";
import {ResultTypeService} from "../services/result-type.service";
import {ResultType} from "../model/result-type";
import {FilterService} from "../services/filter.service";
import {verticleSlide} from "../../animations";
import {BehaviorSubject, Subscription} from "rxjs";
import {FormGroup, FormArray} from "@angular/forms";
import {FormArray, FormGroup} from "@angular/forms";
import {FilterFormService} from "../services/filter-form.service";
import {SelectedFilterService} from "../services/selected-filter.service";
import {Field} from "../model/field";
......@@ -42,8 +42,8 @@ export class FiltersComponent implements OnInit {
return this._resultType.getValue();
}
@ViewChild('primary', {read: ViewContainerRef}) primaryViewContainerRef: ViewContainerRef;
@ViewChild('secondary', {read: ViewContainerRef}) secondaryViewContainerRef: ViewContainerRef;
@ViewChild('primary', { read: ViewContainerRef, static: true }) primaryViewContainerRef: ViewContainerRef;
@ViewChild('secondary', { read: ViewContainerRef, static: true }) secondaryViewContainerRef: ViewContainerRef;
constructor(
private facetService: FacetsService,
......
import { Injectable } from '@angular/core';
import {Injectable} from '@angular/core';
import {ResultType} from "../model/result-type";
import {BehaviorSubject, Observable} from "rxjs";
import { HttpClient } from "@angular/common/http";
import { EnvService } from "../../env/env.service";
import {HttpClient} from "@angular/common/http";
import {EnvService} from "../../env/env.service";
@Injectable({
providedIn: 'root'
})
export class ResultTypeService {
private resultType: ResultType;
private resultType: ResultType = undefined;
private _resultType: BehaviorSubject<ResultType> = new BehaviorSubject(this.resultType);
public readonly resultType$: Observable<ResultType> = this._resultType.asObservable();
......@@ -19,7 +19,7 @@ export class ResultTypeService {
this.serverAddress = env.apiUrl;
}
updateResultType(name: string){
updateResultType(name: string): void {
this.resultType = ResultType.getResultType(name);
this._resultType.next(this.resultType);
}
......
......@@ -5,7 +5,8 @@ import { Injectable } from '@angular/core';
})
export class EnvService {
public apiUrl: string = '';
public apiUrl: string;
public workspacesUrl: string;
constructor() {
}
......
export interface CapabilityExecution {
capability_request_id: string;
current_step: string;
current_workflow_request_id: string;
id: string;
state: string;
version_number: string;
}
export interface CapabilityRequest {
id: string;
capabilityId: string;
state: string;
parameters: Array<string>;
}
import { TestBed } from '@angular/core/testing';
import { CapabilityLauncherService } from './capability-launcher.service';
describe('CapabilityLauncherService', () => {
let service: CapabilityLauncherService;
beforeEach(() => {
TestBed.configureTestingModule({});
service = TestBed.inject(CapabilityLauncherService);
});
it('should be created', () => {
expect(service).toBeTruthy();
});
});
import { Injectable } from "@angular/core";
import { HttpClient, HttpParams, HttpResponse } from "@angular/common/http";
import { EnvService } from "../../env/env.service";
import { Observable } from "rxjs";
import { CapabilityRequest } from "../model/capability-request";
import { CapabilityExecution } from "../model/capability-execution";
@Injectable({
providedIn: "root",
})
export class CapabilityLauncherService {
private endpoint = "capability/request";
constructor(private httpClient: HttpClient, private env: EnvService) {}
/**
* Create capability request and send it to capability service
* @param: capabilityName Name of capability to create request for
* @param: args Arguments for capability execution
*/
createRequest(
capabilityName: string,
args: string
): Observable<CapabilityRequest> {
const url = this.env.workspacesUrl + this.endpoint;
const params = JSON.stringify({ capability: capabilityName, args: args });
return this.httpClient.post<CapabilityRequest>(url, params);
}
/**
* Submit capability request
* @param: requestId ID of capability request to submit
*/
submit(requestId: string): Observable<CapabilityExecution> {
const url = `${this.env.workspacesUrl}${this.endpoint}/${requestId}/submit`;
return this.httpClient.post<CapabilityExecution>(url, null);
}
}
import {NgModule} from '@angular/core';
import {Routes, RouterModule} from '@angular/router';
import {WorkspacesComponent} from './workspaces.component';
const routes: Routes = [
{path: '', component: WorkspacesComponent},
{path: '**', redirectTo: 'Search', pathMatch: 'full'}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class WorkspacesRoutingModule {
}
<div class="container-fluid">
<div class="row">
<div class="col">
<button type="button" class="btn btn-primary" (click)="nullButtonOnClick()">Launch null capability [null -g]</button>
</div>
</div>
</div>
<div *ngFor="let request of capabilityRequests; index as i">
<code>Capability request created: {{request | json}}</code><br>
<code *ngIf="capabilityExecutions[i]">Capability execution created: {{capabilityExecutions[i] | json}}</code>
</div>
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { WorkspacesComponent } from './workspaces.component';
describe('WorkspacesComponent', () => {
let component: WorkspacesComponent;
let fixture: ComponentFixture<WorkspacesComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ WorkspacesComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(WorkspacesComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { Component, OnInit } from "@angular/core";
import { CapabilityLauncherService } from "./services/capability-launcher.service";
import { Observable } from "rxjs";
import { CapabilityRequest } from "./model/capability-request";
import { map } from "rxjs/operators";
import { CapabilityExecution } from "./model/capability-execution";
@Component({
selector: "app-workspaces",
templateUrl: "./workspaces.component.html",
styleUrls: ["./workspaces.component.scss"],
})
export class WorkspacesComponent implements OnInit {
public capabilityRequests: Array<CapabilityRequest> = [];
public capabilityExecutions: Array<CapabilityExecution> = [];
constructor(private capabilityLauncher: CapabilityLauncherService) {}
ngOnInit(): void {}
/**
* OnClick method that creates a capability request for the null capability and submits it
*/
nullButtonOnClick(): void {
// Create capability request
// TODO: Change this to request download capability execution
this.capabilityLauncher.createRequest("null", "-g").subscribe(
(requestResponse) => {
this.capabilityRequests.push(requestResponse);
if (requestResponse.id) {
// Capability request created; ID found
const requestId = requestResponse.id;
// Submit capability request
this.capabilityLauncher.submit(requestId).subscribe(
(submitResponse) => {
this.capabilityExecutions.push(submitResponse);
},
(error) => {
console.log(error);
}
);
}
},
(error) => {
console.log(error);
}
);
}
}