diff --git a/.gitignore b/.gitignore
index 4a5b2ec..4bcc468 100644
--- a/.gitignore
+++ b/.gitignore
@@ -38,7 +38,6 @@ testem.log
Thumbs.db
**/*/proc-logs/*.log
-provisions
**/*/.terraform*
**/*/terraform.tfstate*
scenarios_templates/azqmi-qseok/bin
diff --git a/dist/qmi-cloud/main.js b/dist/qmi-cloud/main.js
index 472a073..b88c538 100644
--- a/dist/qmi-cloud/main.js
+++ b/dist/qmi-cloud/main.js
@@ -365,7 +365,10 @@ var ProvisionsComponent = /** @class */ (function () {
this.subscription.unsubscribe();
this.instantSubs.unsubscribe();
};
- ProvisionsComponent.prototype.del = function () {
+ ProvisionsComponent.prototype.del = function (provision) {
+ this._provisionsService.delProvision({ "id": provision._id }).subscribe(function (res) {
+ console.log("Done!", res);
+ });
};
ProvisionsComponent.prototype.destroy = function (provision) {
this._provisionsService.newDestroy({ "id": provision._id }).subscribe(function (res) {
@@ -611,6 +614,9 @@ var ProvisionsService = /** @class */ (function () {
ProvisionsService.prototype.newProvision = function (body) {
return this.httpClient.post("/api/users/" + this._userId + "/provisions", body);
};
+ ProvisionsService.prototype.delProvision = function (id) {
+ return this.httpClient.delete("/provisions/" + id);
+ };
ProvisionsService.prototype.newDestroy = function (body) {
return this.httpClient.post("/api/users/" + this._userId + "/destroyprovisions", body);
};
diff --git a/dist/qmi-cloud/main.js.map b/dist/qmi-cloud/main.js.map
index 88fa2cc..951e198 100644
--- a/dist/qmi-cloud/main.js.map
+++ b/dist/qmi-cloud/main.js.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack:///./src/$_lazy_route_resource lazy namespace object","webpack:///./src/app/app-routing.module.ts","webpack:///./src/app/app.component.html","webpack:///./src/app/app.component.scss","webpack:///./src/app/app.component.ts","webpack:///./src/app/app.module.ts","webpack:///./src/app/logs/logs.component.html","webpack:///./src/app/logs/logs.component.scss","webpack:///./src/app/logs/logs.component.ts","webpack:///./src/app/provisions/provisions.component.html","webpack:///./src/app/provisions/provisions.component.scss","webpack:///./src/app/provisions/provisions.component.ts","webpack:///./src/app/scenarios/scenarios.component.html","webpack:///./src/app/scenarios/scenarios.component.scss","webpack:///./src/app/scenarios/scenarios.component.ts","webpack:///./src/app/services/auth.guard.ts","webpack:///./src/app/services/provisions.service.ts","webpack:///./src/app/ui/footer/footer.component.html","webpack:///./src/app/ui/footer/footer.component.scss","webpack:///./src/app/ui/footer/footer.component.ts","webpack:///./src/app/ui/header/header.component.html","webpack:///./src/app/ui/header/header.component.scss","webpack:///./src/app/ui/header/header.component.ts","webpack:///./src/app/ui/layout/layout.component.html","webpack:///./src/app/ui/layout/layout.component.scss","webpack:///./src/app/ui/layout/layout.component.ts","webpack:///./src/app/ui/ui.module.ts","webpack:///./src/environments/environment.ts","webpack:///./src/main.ts"],"names":[],"mappings":"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","file":"main.js","sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./src/$$_lazy_route_resource lazy recursive\";","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { ProvisionsComponent } from './provisions/provisions.component';\nimport { AuthGuard } from './services/auth.guard';\n\nconst routes: Routes = [\n { path: 'provisions', component: ProvisionsComponent, canActivate: [AuthGuard]},\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule]\n})\nexport class AppRoutingModule { }\n","module.exports = \"\\n \\n
QMI Cloud
\\n
\\n Launch QMI scenarios in the Cloud in no time.\\n
\\n
\\n\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2FwcC5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss']\n})\n\nexport class AppComponent {\n title = 'qmi-cloud';\n constructor() {\n \n }\n}\n","import { BrowserModule } from '@angular/platform-browser';\nimport { NgModule } from '@angular/core';\n\nimport { AppRoutingModule } from './app-routing.module';\nimport { AppComponent } from './app.component';\nimport { UiModule } from './ui/ui.module';\nimport { ProvisionsComponent } from './provisions/provisions.component';\nimport { AuthGuard } from './services/auth.guard';\nimport { ProvisionsService } from './services/provisions.service';\nimport { HttpClientModule } from '@angular/common/http';\nimport { LogsComponent } from './logs/logs.component';\nimport { ScenariosComponent } from './scenarios/scenarios.component';\n\n@NgModule({\n declarations: [\n AppComponent,\n ProvisionsComponent,\n LogsComponent,\n ScenariosComponent\n ],\n imports: [\n BrowserModule,\n AppRoutingModule,\n UiModule,\n HttpClientModule\n ],\n providers: [ProvisionsService, AuthGuard],\n bootstrap: [AppComponent]\n})\nexport class AppModule { }\n","module.exports = \"
\\n
\\n
\\n
\\n
\\n
{{selectedprov._id}} - {{selectedprov.scenario}}
\\n
{{content}}\\n
\\n
\\n
\\n
\\n
\\n\"","module.exports = \".provlogs {\\n position: fixed;\\n width: 70%;\\n height: 100%;\\n right: 0px;\\n top: 0px;\\n z-index: 10000;\\n background: #fff;\\n padding: 25px;\\n overflow: auto;\\n font-size: 0.8em;\\n border-left: 2px solid #ccc; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9hb3IvRGV2ZWwvZ2Vhci9xbWktY2xvdWQvc3JjL2FwcC9sb2dzL2xvZ3MuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxnQkFBZTtFQUNmLFdBQVU7RUFDVixhQUFZO0VBQ1osV0FBVTtFQUNWLFNBQVE7RUFDUixlQUFjO0VBQ2QsaUJBQWdCO0VBQ2hCLGNBQWE7RUFDYixlQUFjO0VBQ2QsaUJBQWdCO0VBQ2hCLDRCQUEyQixFQUM5QiIsImZpbGUiOiJzcmMvYXBwL2xvZ3MvbG9ncy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5wcm92bG9ncyB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHdpZHRoOiA3MCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHJpZ2h0OiAwcHg7XG4gICAgdG9wOiAwcHg7XG4gICAgei1pbmRleDogMTAwMDA7XG4gICAgYmFja2dyb3VuZDogI2ZmZjtcbiAgICBwYWRkaW5nOiAyNXB4O1xuICAgIG92ZXJmbG93OiBhdXRvO1xuICAgIGZvbnQtc2l6ZTogMC44ZW07XG4gICAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjY2NjO1xufSJdfQ== */\"","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { ProvisionsService } from '../services/provisions.service'; \nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'app-logs',\n templateUrl: './logs.component.html',\n styleUrls: ['./logs.component.scss']\n})\nexport class LogsComponent implements OnInit {\n\n content: String = null;\n sub: Subscription;\n\n constructor(private _provisionsService: ProvisionsService) { }\n \n @Input() selectedprov;\n @Output() onClose = new EventEmitter();\n\n refresh(): void {\n this.sub = this._provisionsService.getLogs(this.selectedprov._id).subscribe(content=> {\n this.content = content;\n });\n }\n ngOnInit() {\n this.refresh();\n }\n\n ngOnDestroy() {\n this.sub.unsubscribe();\n }\n\n close(): void {\n this.onClose.emit(false);\n }\n\n}\n","module.exports = \"\\n\\n\\n\\n \\n \\n | Provision ID | \\n Create Date | \\n Scenario | \\n Status | \\n Terraform Project Path | \\n Destroy ID | \\n Status Destroy | \\n Destroyed? | \\n | \\n
\\n \\n \\n | {{ provision._id }} | \\n {{provision.created | date: 'MMM dd, yyyy - H:mm'}} | \\n {{ provision.scenario }} | \\n \\n {{provision.status}}\\n \\n \\n \\n | \\n {{provision.path}} | \\n {{provision.destroyId? provision.destroyId : '-'}} | \\n \\n {{provision.statusDestroy}}\\n \\n \\n \\n | \\n \\n {{provision.isDestroyed}} | \\n \\n \\n \\n | \\n
\\n
\\n\"","module.exports = \"td.ell {\\n max-width: 150px;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9hb3IvRGV2ZWwvZ2Vhci9xbWktY2xvdWQvc3JjL2FwcC9wcm92aXNpb25zL3Byb3Zpc2lvbnMuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxpQkFBZ0I7RUFDaEIsaUJBQWdCO0VBQ2hCLHdCQUF1QjtFQUN2QixvQkFBbUIsRUFDdEIiLCJmaWxlIjoic3JjL2FwcC9wcm92aXNpb25zL3Byb3Zpc2lvbnMuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJ0ZC5lbGwge1xuICAgIG1heC13aWR0aDogMTUwcHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufSJdfQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { ProvisionsService } from '../services/provisions.service'; \nimport { Subscription, timer} from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\n\n\n@Component({\n selector: 'app-provisions',\n templateUrl: './provisions.component.html',\n styleUrls: ['./provisions.component.scss'],\n providers: [ProvisionsService]\n})\nexport class ProvisionsComponent implements OnInit {\n\n provisions;\n destroys;\n subscription: Subscription;\n instantSubs: Subscription;\n logShow: boolean = false;\n selectedprov: Object = null;\n\n constructor(private _provisionsService: ProvisionsService) {}\n\n private _compose(pair) {\n this.destroys = pair['1'];\n pair['0'].forEach(prov => {\n var foundDes = this.destroys.filter(d=>{\n return d.provId.toString() === prov._id.toString()\n });\n if (foundDes.length){\n prov.destroyId = foundDes[0]._id.toString();\n prov.statusDestroy = foundDes[0].status;\n } else {\n prov.destroyId = \"-\";\n }\n });\n this.provisions = pair['0'];\n }\n\n ngOnInit() {\n this.subscription = timer(0, 5000).pipe( switchMap(() => this._provisionsService.getCombinedProvisions() ) ).subscribe(pair => { \n this._compose(pair);\n })\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n this.instantSubs.unsubscribe();\n }\n\n del(): void {\n\n }\n\n destroy(provision) : void{\n this._provisionsService.newDestroy({\"id\": provision._id}).subscribe( res => {\n console.log(\"Done!\", res);\n })\n }\n\n showLogs($event, provision): void {\n this.logShow = false;\n $event.preventDefault();\n this.selectedprov = provision;\n this.logShow = true;\n }\n\n onLogsClose($event): void {\n this.selectedprov = null;\n this.logShow = false;\n }\n\n onStartProvision($event): void {\n console.log(\"onStartProvision\");\n this.instantSubs = this._provisionsService.getCombinedProvisions().subscribe( pair=>{\n this._compose(pair);\n this.instantSubs.unsubscribe();\n })\n }\n\n}\n","module.exports = \"\\n
\\n \\n | {{s.desc}} | \\n {{s.name}} | \\n | \\n
\\n
\\n
\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NjZW5hcmlvcy9zY2VuYXJpb3MuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, Output, OnInit, EventEmitter } from '@angular/core';\nimport { ProvisionsService } from '../services/provisions.service';\n\n@Component({\n selector: 'app-scenarios',\n templateUrl: './scenarios.component.html',\n styleUrls: ['./scenarios.component.scss']\n})\nexport class ScenariosComponent implements OnInit {\n\n constructor(private _provisionsService: ProvisionsService) { }\n\n @Output() onStartProvision = new EventEmitter();\n\n scenarios = [/*{\n name: \"azqmi-qdc-sn\",\n desc: \"QDC in Proffessional Azure\"\n },*/\n {\n name: \"azqmi-qdc-ss\",\n desc: \"QDC Single Server September 2019\"\n },\n {\n name: \"azqmi-qseok\",\n desc: \"QSE on Kubernetes\"\n },{\n name: \"azqmi-wn-bl\",\n desc: \"Windows Server 2016 Blank\"\n }\n ]\n\n ngOnInit() {\n }\n\n provision(scenario) : void{\n this._provisionsService.newProvision({\"scenario\": scenario.name}).subscribe( res => {\n console.log(\"Done!\", res);\n this.onStartProvision.emit();\n })\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';\n\nimport { of, Observable, BehaviorSubject } from 'rxjs';\nimport { map, catchError } from 'rxjs/operators';\nimport { HttpClient } from '@angular/common/http';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthGuard implements CanActivate {\n\n private userInfo: BehaviorSubject = new BehaviorSubject(null);\n\n // Inject Router so we can hand off the user to the Login Page \n constructor(private httpClient: HttpClient, private router: Router) {\n\n this.getMe().subscribe(value => {\n this.userInfo.next(value);\n localStorage.setItem(\"user\", JSON.stringify(value));\n });\n\n }\n\n canActivate(route: ActivatedRouteSnapshot): Observable {\n console.log(\"guard!\");\n return this.getMe().pipe(\n map(res => {\n this.userInfo.next(res);\n return true;\n }),\n catchError((err) => {\n this.userInfo.next(null);\n return of(false);\n })\n );\n }\n\n getMe() {\n return this.httpClient.get('/api/users/me');\n }\n\n getUserInfo(): any {\n return this.userInfo;\n }\n}\n\n\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, forkJoin } from 'rxjs';\nimport { AuthGuard } from './auth.guard';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProvisionsService {\n\n private _user: any;\n private _userId: String;\n\n constructor( private httpClient: HttpClient, private _auth: AuthGuard ) { \n this._auth.getUserInfo().subscribe( value => {\n this._user = value;\n this._userId = value._id;\n });\n }\n\n getProvisions() : Observable {\n return this.httpClient.get(`/api/users/${this._userId}/provisions`);\n }\n\n newProvision(body) : Observable {\n return this.httpClient.post(`/api/users/${this._userId}/provisions`, body);\n }\n\n newDestroy(body) : Observable {\n return this.httpClient.post(`/api/users/${this._userId}/destroyprovisions`, body);\n }\n\n getDestroyProvisions() : Observable {\n return this.httpClient.get(`/api/users/${this._userId}/destroyprovisions`);\n }\n\n getCombinedProvisions(): Observable {\n return forkJoin(this.getProvisions(), this.getDestroyProvisions())\n }\n\n\n getLogs(id) : Observable {\n return this.httpClient.get(`/api/provisions/${id}/logs`, {responseType: 'text'});\n }\n\n}\n","module.exports = \"\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3VpL2Zvb3Rlci9mb290ZXIuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-footer',\n templateUrl: './footer.component.html',\n styleUrls: ['./footer.component.scss']\n})\nexport class FooterComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","module.exports = \"\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3VpL2hlYWRlci9oZWFkZXIuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { AuthGuard } from '../../services/auth.guard';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'app-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss']\n})\nexport class HeaderComponent implements OnInit {\n\n user;\n subs: Subscription;\n\n constructor( private _auth: AuthGuard){\n this.subs = this._auth.getUserInfo().subscribe( value => {\n this.user = value;\n console.log(\"USER\", this.user);\n });\n }\n\n ngOnInit() {\n \n }\n\n ngOnDestroy() {\n this.subs.unsubscribe();\n }\n\n}\n","module.exports = \"\\n\\n\\n \\n \\n
\\n\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3VpL2xheW91dC9sYXlvdXQuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-layout',\n templateUrl: './layout.component.html',\n styleUrls: ['./layout.component.scss']\n})\nexport class LayoutComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LayoutComponent } from './layout/layout.component';\nimport { HeaderComponent } from './header/header.component';\nimport { FooterComponent } from './footer/footer.component';\nimport { AppRoutingModule } from '../app-routing.module';\n\n@NgModule({\n declarations: [LayoutComponent, HeaderComponent, FooterComponent],\n imports: [\n CommonModule,\n AppRoutingModule\n ],\n exports: [LayoutComponent],\n schemas: [\n CUSTOM_ELEMENTS_SCHEMA\n ]\n})\nexport class UiModule { }\n","export const environment = {\n production: false,\n config: {\n tenant: 'c21eeb5f-f5a6-44e8-a997-124f2f7a497c',\n clientId: '40742f13-bde8-4b1b-ac07-54c11b36b779',\n postLogoutRedirectUri: 'http://localhost:4200',\n endpoints: {\n 'http://localhost:4200/': 'the id'\n }\n }\n};","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.error(err));\n"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack:///./src/$_lazy_route_resource lazy namespace object","webpack:///./src/app/app-routing.module.ts","webpack:///./src/app/app.component.html","webpack:///./src/app/app.component.scss","webpack:///./src/app/app.component.ts","webpack:///./src/app/app.module.ts","webpack:///./src/app/logs/logs.component.html","webpack:///./src/app/logs/logs.component.scss","webpack:///./src/app/logs/logs.component.ts","webpack:///./src/app/provisions/provisions.component.html","webpack:///./src/app/provisions/provisions.component.scss","webpack:///./src/app/provisions/provisions.component.ts","webpack:///./src/app/scenarios/scenarios.component.html","webpack:///./src/app/scenarios/scenarios.component.scss","webpack:///./src/app/scenarios/scenarios.component.ts","webpack:///./src/app/services/auth.guard.ts","webpack:///./src/app/services/provisions.service.ts","webpack:///./src/app/ui/footer/footer.component.html","webpack:///./src/app/ui/footer/footer.component.scss","webpack:///./src/app/ui/footer/footer.component.ts","webpack:///./src/app/ui/header/header.component.html","webpack:///./src/app/ui/header/header.component.scss","webpack:///./src/app/ui/header/header.component.ts","webpack:///./src/app/ui/layout/layout.component.html","webpack:///./src/app/ui/layout/layout.component.scss","webpack:///./src/app/ui/layout/layout.component.ts","webpack:///./src/app/ui/ui.module.ts","webpack:///./src/environments/environment.ts","webpack:///./src/main.ts"],"names":[],"mappings":"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","file":"main.js","sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./src/$$_lazy_route_resource lazy recursive\";","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { ProvisionsComponent } from './provisions/provisions.component';\nimport { AuthGuard } from './services/auth.guard';\n\nconst routes: Routes = [\n { path: 'provisions', component: ProvisionsComponent, canActivate: [AuthGuard]},\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule]\n})\nexport class AppRoutingModule { }\n","module.exports = \"\\n \\n
QMI Cloud
\\n
\\n Launch QMI scenarios in the Cloud in no time.\\n
\\n
\\n\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2FwcC5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss']\n})\n\nexport class AppComponent {\n title = 'qmi-cloud';\n constructor() {\n \n }\n}\n","import { BrowserModule } from '@angular/platform-browser';\nimport { NgModule } from '@angular/core';\n\nimport { AppRoutingModule } from './app-routing.module';\nimport { AppComponent } from './app.component';\nimport { UiModule } from './ui/ui.module';\nimport { ProvisionsComponent } from './provisions/provisions.component';\nimport { AuthGuard } from './services/auth.guard';\nimport { ProvisionsService } from './services/provisions.service';\nimport { HttpClientModule } from '@angular/common/http';\nimport { LogsComponent } from './logs/logs.component';\nimport { ScenariosComponent } from './scenarios/scenarios.component';\n\n@NgModule({\n declarations: [\n AppComponent,\n ProvisionsComponent,\n LogsComponent,\n ScenariosComponent\n ],\n imports: [\n BrowserModule,\n AppRoutingModule,\n UiModule,\n HttpClientModule\n ],\n providers: [ProvisionsService, AuthGuard],\n bootstrap: [AppComponent]\n})\nexport class AppModule { }\n","module.exports = \"\\n
\\n
\\n
\\n
\\n
{{selectedprov._id}} - {{selectedprov.scenario}}
\\n
{{content}}\\n
\\n
\\n
\\n
\\n
\\n\"","module.exports = \".provlogs {\\n position: fixed;\\n width: 70%;\\n height: 100%;\\n right: 0px;\\n top: 0px;\\n z-index: 10000;\\n background: #fff;\\n padding: 25px;\\n overflow: auto;\\n font-size: 0.8em;\\n border-left: 2px solid #ccc; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9hb3IvRGV2ZWwvZ2Vhci9xbWktY2xvdWQvc3JjL2FwcC9sb2dzL2xvZ3MuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxnQkFBZTtFQUNmLFdBQVU7RUFDVixhQUFZO0VBQ1osV0FBVTtFQUNWLFNBQVE7RUFDUixlQUFjO0VBQ2QsaUJBQWdCO0VBQ2hCLGNBQWE7RUFDYixlQUFjO0VBQ2QsaUJBQWdCO0VBQ2hCLDRCQUEyQixFQUM5QiIsImZpbGUiOiJzcmMvYXBwL2xvZ3MvbG9ncy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5wcm92bG9ncyB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHdpZHRoOiA3MCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHJpZ2h0OiAwcHg7XG4gICAgdG9wOiAwcHg7XG4gICAgei1pbmRleDogMTAwMDA7XG4gICAgYmFja2dyb3VuZDogI2ZmZjtcbiAgICBwYWRkaW5nOiAyNXB4O1xuICAgIG92ZXJmbG93OiBhdXRvO1xuICAgIGZvbnQtc2l6ZTogMC44ZW07XG4gICAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjY2NjO1xufSJdfQ== */\"","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { ProvisionsService } from '../services/provisions.service'; \nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'app-logs',\n templateUrl: './logs.component.html',\n styleUrls: ['./logs.component.scss']\n})\nexport class LogsComponent implements OnInit {\n\n content: String = null;\n sub: Subscription;\n\n constructor(private _provisionsService: ProvisionsService) { }\n \n @Input() selectedprov;\n @Output() onClose = new EventEmitter();\n\n refresh(): void {\n this.sub = this._provisionsService.getLogs(this.selectedprov._id).subscribe(content=> {\n this.content = content;\n });\n }\n ngOnInit() {\n this.refresh();\n }\n\n ngOnDestroy() {\n this.sub.unsubscribe();\n }\n\n close(): void {\n this.onClose.emit(false);\n }\n\n}\n","module.exports = \"\\n\\n\\n\\n \\n \\n | Provision ID | \\n Create Date | \\n Scenario | \\n Status | \\n Terraform Project Path | \\n Destroy ID | \\n Status Destroy | \\n Destroyed? | \\n | \\n
\\n \\n \\n | {{ provision._id }} | \\n {{provision.created | date: 'MMM dd, yyyy - H:mm'}} | \\n {{ provision.scenario }} | \\n \\n {{provision.status}}\\n \\n \\n \\n | \\n {{provision.path}} | \\n {{provision.destroyId? provision.destroyId : '-'}} | \\n \\n {{provision.statusDestroy}}\\n \\n \\n \\n | \\n \\n {{provision.isDestroyed}} | \\n \\n \\n \\n | \\n
\\n
\\n\"","module.exports = \"td.ell {\\n max-width: 150px;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9hb3IvRGV2ZWwvZ2Vhci9xbWktY2xvdWQvc3JjL2FwcC9wcm92aXNpb25zL3Byb3Zpc2lvbnMuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxpQkFBZ0I7RUFDaEIsaUJBQWdCO0VBQ2hCLHdCQUF1QjtFQUN2QixvQkFBbUIsRUFDdEIiLCJmaWxlIjoic3JjL2FwcC9wcm92aXNpb25zL3Byb3Zpc2lvbnMuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJ0ZC5lbGwge1xuICAgIG1heC13aWR0aDogMTUwcHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufSJdfQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { ProvisionsService } from '../services/provisions.service'; \nimport { Subscription, timer} from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\n\n\n@Component({\n selector: 'app-provisions',\n templateUrl: './provisions.component.html',\n styleUrls: ['./provisions.component.scss'],\n providers: [ProvisionsService]\n})\nexport class ProvisionsComponent implements OnInit {\n\n provisions;\n destroys;\n subscription: Subscription;\n instantSubs: Subscription;\n logShow: boolean = false;\n selectedprov: Object = null;\n\n constructor(private _provisionsService: ProvisionsService) {}\n\n private _compose(pair) {\n this.destroys = pair['1'];\n pair['0'].forEach(prov => {\n var foundDes = this.destroys.filter(d=>{\n return d.provId.toString() === prov._id.toString()\n });\n if (foundDes.length){\n prov.destroyId = foundDes[0]._id.toString();\n prov.statusDestroy = foundDes[0].status;\n } else {\n prov.destroyId = \"-\";\n }\n });\n this.provisions = pair['0'];\n }\n\n ngOnInit() {\n this.subscription = timer(0, 5000).pipe( switchMap(() => this._provisionsService.getCombinedProvisions() ) ).subscribe(pair => { \n this._compose(pair);\n })\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n this.instantSubs.unsubscribe();\n }\n\n del(provision): void {\n \n this._provisionsService.delProvision({\"id\": provision._id}).subscribe( res => {\n console.log(\"Done!\", res);\n })\n }\n\n destroy(provision) : void{\n this._provisionsService.newDestroy({\"id\": provision._id}).subscribe( res => {\n console.log(\"Done!\", res);\n })\n }\n\n showLogs($event, provision): void {\n this.logShow = false;\n $event.preventDefault();\n this.selectedprov = provision;\n this.logShow = true;\n }\n\n onLogsClose($event): void {\n this.selectedprov = null;\n this.logShow = false;\n }\n\n onStartProvision($event): void {\n console.log(\"onStartProvision\");\n this.instantSubs = this._provisionsService.getCombinedProvisions().subscribe( pair=>{\n this._compose(pair);\n this.instantSubs.unsubscribe();\n })\n }\n\n}\n","module.exports = \"\\n
\\n \\n | {{s.desc}} | \\n {{s.name}} | \\n | \\n
\\n
\\n
\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NjZW5hcmlvcy9zY2VuYXJpb3MuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, Output, OnInit, EventEmitter } from '@angular/core';\nimport { ProvisionsService } from '../services/provisions.service';\n\n@Component({\n selector: 'app-scenarios',\n templateUrl: './scenarios.component.html',\n styleUrls: ['./scenarios.component.scss']\n})\nexport class ScenariosComponent implements OnInit {\n\n constructor(private _provisionsService: ProvisionsService) { }\n\n @Output() onStartProvision = new EventEmitter();\n\n scenarios = [/*{\n name: \"azqmi-qdc-sn\",\n desc: \"QDC in Proffessional Azure\"\n },*/\n {\n name: \"azqmi-qdc-ss\",\n desc: \"QDC Single Server September 2019\"\n },\n {\n name: \"azqmi-qseok\",\n desc: \"QSE on Kubernetes\"\n },{\n name: \"azqmi-wn-bl\",\n desc: \"Windows Server 2016 Blank\"\n }\n ]\n\n ngOnInit() {\n }\n\n provision(scenario) : void{\n this._provisionsService.newProvision({\"scenario\": scenario.name}).subscribe( res => {\n console.log(\"Done!\", res);\n this.onStartProvision.emit();\n })\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';\n\nimport { of, Observable, BehaviorSubject } from 'rxjs';\nimport { map, catchError } from 'rxjs/operators';\nimport { HttpClient } from '@angular/common/http';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthGuard implements CanActivate {\n\n private userInfo: BehaviorSubject = new BehaviorSubject(null);\n\n // Inject Router so we can hand off the user to the Login Page \n constructor(private httpClient: HttpClient, private router: Router) {\n\n this.getMe().subscribe(value => {\n this.userInfo.next(value);\n localStorage.setItem(\"user\", JSON.stringify(value));\n });\n\n }\n\n canActivate(route: ActivatedRouteSnapshot): Observable {\n console.log(\"guard!\");\n return this.getMe().pipe(\n map(res => {\n this.userInfo.next(res);\n return true;\n }),\n catchError((err) => {\n this.userInfo.next(null);\n return of(false);\n })\n );\n }\n\n getMe() {\n return this.httpClient.get('/api/users/me');\n }\n\n getUserInfo(): any {\n return this.userInfo;\n }\n}\n\n\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, forkJoin } from 'rxjs';\nimport { AuthGuard } from './auth.guard';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProvisionsService {\n\n private _user: any;\n private _userId: String;\n\n constructor( private httpClient: HttpClient, private _auth: AuthGuard ) { \n this._auth.getUserInfo().subscribe( value => {\n this._user = value;\n this._userId = value._id;\n });\n }\n\n getProvisions() : Observable {\n return this.httpClient.get(`/api/users/${this._userId}/provisions`);\n }\n\n newProvision(body) : Observable {\n return this.httpClient.post(`/api/users/${this._userId}/provisions`, body);\n }\n\n delProvision(id): Observable {\n return this.httpClient.delete(`/provisions/${id}`);\n }\n\n newDestroy(body) : Observable {\n return this.httpClient.post(`/api/users/${this._userId}/destroyprovisions`, body);\n }\n\n getDestroyProvisions() : Observable {\n return this.httpClient.get(`/api/users/${this._userId}/destroyprovisions`);\n }\n\n getCombinedProvisions(): Observable {\n return forkJoin(this.getProvisions(), this.getDestroyProvisions())\n }\n\n\n getLogs(id) : Observable {\n return this.httpClient.get(`/api/provisions/${id}/logs`, {responseType: 'text'});\n }\n\n}\n","module.exports = \"\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3VpL2Zvb3Rlci9mb290ZXIuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-footer',\n templateUrl: './footer.component.html',\n styleUrls: ['./footer.component.scss']\n})\nexport class FooterComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","module.exports = \"\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3VpL2hlYWRlci9oZWFkZXIuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { AuthGuard } from '../../services/auth.guard';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'app-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss']\n})\nexport class HeaderComponent implements OnInit {\n\n user;\n subs: Subscription;\n\n constructor( private _auth: AuthGuard){\n this.subs = this._auth.getUserInfo().subscribe( value => {\n this.user = value;\n console.log(\"USER\", this.user);\n });\n }\n\n ngOnInit() {\n \n }\n\n ngOnDestroy() {\n this.subs.unsubscribe();\n }\n\n}\n","module.exports = \"\\n\\n\\n \\n \\n
\\n\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3VpL2xheW91dC9sYXlvdXQuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-layout',\n templateUrl: './layout.component.html',\n styleUrls: ['./layout.component.scss']\n})\nexport class LayoutComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LayoutComponent } from './layout/layout.component';\nimport { HeaderComponent } from './header/header.component';\nimport { FooterComponent } from './footer/footer.component';\nimport { AppRoutingModule } from '../app-routing.module';\n\n@NgModule({\n declarations: [LayoutComponent, HeaderComponent, FooterComponent],\n imports: [\n CommonModule,\n AppRoutingModule\n ],\n exports: [LayoutComponent],\n schemas: [\n CUSTOM_ELEMENTS_SCHEMA\n ]\n})\nexport class UiModule { }\n","export const environment = {\n production: false,\n config: {\n tenant: 'c21eeb5f-f5a6-44e8-a997-124f2f7a497c',\n clientId: '40742f13-bde8-4b1b-ac07-54c11b36b779',\n postLogoutRedirectUri: 'http://localhost:4200',\n endpoints: {\n 'http://localhost:4200/': 'the id'\n }\n }\n};","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.error(err));\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/server/routes/api.js b/server/routes/api.js
index 5709269..158fba3 100644
--- a/server/routes/api.js
+++ b/server/routes/api.js
@@ -214,6 +214,41 @@ router.get('/provisions/:id', passport.ensureAuthenticated, async (req, res, nex
}
});
+/**
+ * @swagger
+ * /provisions/{id}:
+ * delete:
+ * description: Delete Provision by ID
+ * summary: Delete a Terraform Provision by ID
+ * produces:
+ * - application/json
+ * parameters:
+ * - name: id
+ * in: path
+ * type: string
+ * required: true
+ * responses:
+ * 200:
+ * description: Provision
+ * 404:
+ * description: Not found
+ *
+ */
+router.delete('/provisions/:id', passport.ensureAuthenticated, async (req, res, next) => {
+ try {
+ const mongoJob = await db.provision.getSingle(req.params.id);
+ if (!mongoJob){
+ return res.status(404).json({"msg": "Not found"});
+ }
+ const toDestroy = await db.destroy.get({"provId": req.params.id});
+ await db.destroy.del(toDestroy[0]._id.toStrong());
+ const delProv = await db.provision.del(req.params.id);
+ return res.json(delProv);
+ } catch (error) {
+ next(error);
+ }
+});
+
/**
* @swagger
* /provisions/{id}/logs:
diff --git a/src/app/provisions/provisions.component.html b/src/app/provisions/provisions.component.html
new file mode 100644
index 0000000..089cf55
--- /dev/null
+++ b/src/app/provisions/provisions.component.html
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+ | Provision ID |
+ Create Date |
+ Scenario |
+ Status |
+ Terraform Project Path |
+ Destroy ID |
+ Status Destroy |
+ Destroyed? |
+ |
+
+
+
+ | {{ provision._id }} |
+ {{provision.created | date: 'MMM dd, yyyy - H:mm'}} |
+ {{ provision.scenario }} |
+
+ {{provision.status}}
+
+
+
+ |
+ {{provision.path}} |
+ {{provision.destroyId? provision.destroyId : '-'}} |
+
+ {{provision.statusDestroy}}
+
+
+
+ |
+
+ {{provision.isDestroyed}} |
+
+
+
+ |
+
+
diff --git a/src/app/provisions/provisions.component.scss b/src/app/provisions/provisions.component.scss
new file mode 100644
index 0000000..3b47a60
--- /dev/null
+++ b/src/app/provisions/provisions.component.scss
@@ -0,0 +1,6 @@
+td.ell {
+ max-width: 150px;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
\ No newline at end of file
diff --git a/src/app/provisions/provisions.component.spec.ts b/src/app/provisions/provisions.component.spec.ts
new file mode 100644
index 0000000..5b2c343
--- /dev/null
+++ b/src/app/provisions/provisions.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { ProvisionsComponent } from './provisions.component';
+
+describe('ProvisionsComponent', () => {
+ let component: ProvisionsComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ ProvisionsComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(ProvisionsComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/provisions/provisions.component.ts b/src/app/provisions/provisions.component.ts
new file mode 100644
index 0000000..44f37b3
--- /dev/null
+++ b/src/app/provisions/provisions.component.ts
@@ -0,0 +1,84 @@
+import { Component, OnInit } from '@angular/core';
+import { ProvisionsService } from '../services/provisions.service';
+import { Subscription, timer} from 'rxjs';
+import { switchMap } from 'rxjs/operators';
+
+
+@Component({
+ selector: 'app-provisions',
+ templateUrl: './provisions.component.html',
+ styleUrls: ['./provisions.component.scss'],
+ providers: [ProvisionsService]
+})
+export class ProvisionsComponent implements OnInit {
+
+ provisions;
+ destroys;
+ subscription: Subscription;
+ instantSubs: Subscription;
+ logShow: boolean = false;
+ selectedprov: Object = null;
+
+ constructor(private _provisionsService: ProvisionsService) {}
+
+ private _compose(pair) {
+ this.destroys = pair['1'];
+ pair['0'].forEach(prov => {
+ var foundDes = this.destroys.filter(d=>{
+ return d.provId.toString() === prov._id.toString()
+ });
+ if (foundDes.length){
+ prov.destroyId = foundDes[0]._id.toString();
+ prov.statusDestroy = foundDes[0].status;
+ } else {
+ prov.destroyId = "-";
+ }
+ });
+ this.provisions = pair['0'];
+ }
+
+ ngOnInit() {
+ this.subscription = timer(0, 5000).pipe( switchMap(() => this._provisionsService.getCombinedProvisions() ) ).subscribe(pair => {
+ this._compose(pair);
+ })
+ }
+
+ ngOnDestroy() {
+ this.subscription.unsubscribe();
+ this.instantSubs.unsubscribe();
+ }
+
+ del(provision): void {
+
+ this._provisionsService.delProvision({"id": provision._id}).subscribe( res => {
+ console.log("Done!", res);
+ })
+ }
+
+ destroy(provision) : void{
+ this._provisionsService.newDestroy({"id": provision._id}).subscribe( res => {
+ console.log("Done!", res);
+ })
+ }
+
+ showLogs($event, provision): void {
+ this.logShow = false;
+ $event.preventDefault();
+ this.selectedprov = provision;
+ this.logShow = true;
+ }
+
+ onLogsClose($event): void {
+ this.selectedprov = null;
+ this.logShow = false;
+ }
+
+ onStartProvision($event): void {
+ console.log("onStartProvision");
+ this.instantSubs = this._provisionsService.getCombinedProvisions().subscribe( pair=>{
+ this._compose(pair);
+ this.instantSubs.unsubscribe();
+ })
+ }
+
+}
diff --git a/src/app/services/provisions.service.ts b/src/app/services/provisions.service.ts
index 499f199..f8191ce 100644
--- a/src/app/services/provisions.service.ts
+++ b/src/app/services/provisions.service.ts
@@ -27,6 +27,10 @@ export class ProvisionsService {
return this.httpClient.post(`/api/users/${this._userId}/provisions`, body);
}
+ delProvision(id): Observable {
+ return this.httpClient.delete(`/provisions/${id}`);
+ }
+
newDestroy(body) : Observable {
return this.httpClient.post(`/api/users/${this._userId}/destroyprovisions`, body);
}