109 Commits

Author SHA1 Message Date
Manuel Romero
456bd00d47 populates 2020-06-26 14:11:33 +02:00
Manuel Romero
5a2a73a671 Provision populates from UI services 2020-06-26 14:06:57 +02:00
Manuel Romero
4fc3ea8ad2 virtual scenario injection in provision 2020-06-26 13:36:30 +02:00
Manuel Romero
dd1380f13b discurage external access 2020-06-25 16:53:23 +02:00
Manuel Romero
811c1560c4 docker-compose back to version 3.7 2020-06-10 16:46:00 +02:00
Manuel Romero
257cc64d8d Added docker image versions for workers 2020-06-10 16:40:15 +02:00
Manuel Romero
7abf246fd5 some examples in readme.md 2020-06-08 10:33:51 +02:00
Manuel Romero
3aea0e6acc new version 2020-06-08 09:16:46 +02:00
Manuel Romero
d3bf735edc build order changed 2020-06-05 15:53:09 +02:00
Manuel Romero
de09fe22a7 build order changed 2020-06-05 15:43:25 +02:00
Manuel Romero
75bbf452d2 dbinit 2020-06-05 15:30:11 +02:00
Manuel Romero
c5f3ddc4f2 better help script for cli 2020-06-05 15:24:23 +02:00
Manuel Romero
6751e8f0e3 final commit 2020-06-05 15:04:20 +02:00
Manuel Romero
aa4e6a9008 entrypoint for cli 2020-06-05 14:50:32 +02:00
Manuel Romero
9ef992752c dockerfiles 2020-06-05 13:46:24 +02:00
Manuel Romero
9ca0d8c374 rename projects 2020-06-05 12:56:06 +02:00
Manuel Romero
0ba99ed104 fix 2020-06-05 12:50:53 +02:00
Manuel Romero
a4b2262699 new cli docker image. Depency qmi-cloud-common 2020-06-05 12:46:30 +02:00
Manuel Romero
6f93a796a5 boom new dependency 2020-06-05 11:20:40 +02:00
Manuel Romero
2388fb6796 Better docker-compose 2020-06-05 10:44:29 +02:00
Manuel Romero
a920087c2c worker refactor with common 2020-06-04 17:21:06 +02:00
Manuel Romero
676057c583 new fix 2020-06-04 13:40:57 +02:00
Manuel Romero
bc9d2979f0 revert fix 2020-06-04 13:35:27 +02:00
Manuel Romero
4f79244f41 fix 2020-06-04 12:21:49 +02:00
Manuel Romero
297fe7bdbf server 2020-06-03 18:06:42 +02:00
Manuel Romero
52f4d11085 do not delete destroy items from destroy table 2020-06-03 18:00:19 +02:00
Manuel Romero
c4fe70cd9a Adding actualDestroyDate 2020-06-03 17:23:07 +02:00
Manuel Romero
422e5223c0 fix timeRunning for destroy with stopped vms 2020-06-03 16:22:33 +02:00
Manuel Romero
ccfb966afa disabled vmtypes query 2020-06-02 17:51:47 +02:00
Manuel Romero
a4a0c0a8d6 fix 2020-06-02 17:36:08 +02:00
Manuel Romero
749e607634 disabled vmtype 2020-06-02 17:34:51 +02:00
Manuel Romero
ae7c30cf23 Merge branch 'dev' 2020-06-02 14:55:15 +02:00
Manuel Romero
72e18a5758 last small fix 2020-06-02 14:49:48 +02:00
Manuel Romero
8fdef58216 fix 2020-06-02 13:50:27 +02:00
Manuel Romero
493d0f255d fixes 2020-06-02 13:30:14 +02:00
Manuel Romero
aba0eeff9c fix error_plan and error_init 2020-06-02 13:22:12 +02:00
Manuel Romero
600390ba5d Try error at init and plan 2020-06-02 13:06:37 +02:00
Manuel Romero
14d1c929a8 Removed old attributes for provision and scenario 2020-06-01 15:39:33 +02:00
Manuel Romero
22b0f5f66e Merge branch 'dev' 2020-05-29 14:26:48 +02:00
Manuel Romero
368d1fb318 fix old scenarios 2020-05-29 13:53:40 +02:00
Manuel Romero
fd7f2011ba provision showing scenario version 2020-05-29 13:35:41 +02:00
Manuel Romero
4d55ea40f1 fix version provision 2020-05-29 13:16:50 +02:00
Manuel Romero
3436b762bb Fix scenario version 2020-05-29 13:11:39 +02:00
Manuel Romero
d154688afc A lot of things. 2020-05-29 12:31:49 +02:00
Manuel Romero
d40f7b2aef fix sendEmail 2020-05-28 17:42:23 +02:00
Manuel Romero
ef53b8856e Fix sendEmail 2020-05-28 17:39:17 +02:00
Manuel Romero
4cf3611134 new version 2020-05-28 12:31:17 +02:00
Manuel Romero
a33bfa3012 apikeys on ui 2020-05-28 12:27:55 +02:00
Manuel Romero
2fe3ff5a0d echo 2020-05-28 10:36:30 +02:00
Manuel Romero
e6b03ad6b7 no uris 2020-05-28 10:24:55 +02:00
Manuel Romero
b7fb34bf07 Some minor fixes 2020-05-28 09:57:55 +02:00
Manuel Romero
a87924e6e6 faq 2020-05-28 09:50:55 +02:00
Manuel Romero
4d58eff50b Stop period to 20 days 2020-05-28 09:48:42 +02:00
Manuel Romero
5cf2e46c20 new version 2020-05-26 08:03:34 +02:00
Manuel Romero
89c431d651 fix 2020-05-22 13:43:40 +02:00
Manuel Romero
f7b21062d4 fix 2020-05-22 13:39:03 +02:00
Manuel Romero
1486130bb2 deploy opts 2020-05-22 13:15:52 +02:00
Manuel Romero
52d612ce3e Merge branch 'master' into dev 2020-05-22 12:49:17 +02:00
Manuel Romero
f44aad53d9 Send error back as soon as object not found after provision or destroy 2020-05-22 09:27:52 +02:00
Manuel Romero
e3fd3151c9 small fix table users 2020-05-22 09:07:02 +02:00
Manuel Romero
a8288938f5 if isExtenal 2020-05-21 15:16:55 +02:00
Manuel Romero
3c3d6b0477 Adding subnet for appgw 2020-05-21 14:50:15 +02:00
Manuel Romero
695943a194 fix 2020-05-21 12:54:34 +02:00
Manuel Romero
40f3ad19e0 Getting subscription at provision 2020-05-21 12:07:00 +02:00
Manuel Romero
57d0c14aa5 fix 2020-05-21 11:01:55 +02:00
Manuel Romero
f715a0c910 Fix db 2020-05-21 11:00:15 +02:00
Manuel Romero
6f97c0e712 Adding subscription id and subnetid to tf execution 2020-05-21 10:20:44 +02:00
Manuel Romero
1ba83095d4 building lastestdev 2020-05-21 09:53:48 +02:00
Manuel Romero
d798fe4b40 trigger 2020-05-21 09:50:45 +02:00
Manuel Romero
b8d9d60df9 fix 2020-05-21 09:42:07 +02:00
Manuel Romero
6da9570384 test build 2020-05-21 09:33:03 +02:00
Manuel Romero
031c989747 do not build latest if branch 2020-05-21 09:10:21 +02:00
Manuel Romero
d57936a780 tag names for branches 2020-05-21 09:00:39 +02:00
Manuel Romero
558f1523d4 Test 2020-05-21 08:51:59 +02:00
Manuel Romero
183d743600 removed mongo-express 2020-05-20 19:03:16 +02:00
Manuel Romero
47688990ff fi 2020-05-20 18:17:18 +02:00
Manuel Romero
7fea117e64 Fix mongo url 2020-05-20 18:11:15 +02:00
Manuel Romero
a2b623a36c Adding GIT_TAG 2020-05-20 16:15:54 +02:00
Manuel Romero
00bbd12e6d vmtypes to dbinit 2020-05-20 14:12:46 +02:00
Manuel Romero
29dd07c1bd Added initial data 2020-05-20 14:00:29 +02:00
Manuel Romero
646c075ebe Little thing for cosmosdb in sessions for express 2020-05-20 12:57:37 +02:00
Manuel Romero
6c00375362 Accomodation for CosmosDB 2020-05-19 17:26:54 +02:00
Manuel Romero
2baaa1e0d5 Fix edit scenario with subscription 2020-05-19 17:26:13 +02:00
Manuel Romero
007b2bcc97 Added subscriptions 2020-05-18 09:12:31 +02:00
Manuel Romero
7e74f80e0f subscription 2020-05-17 19:02:58 +02:00
Manuel Romero
3833e45655 Subscriptions per scenario 2020-05-17 13:10:35 +02:00
Manuel Romero
825bdfb3e1 Setting prefix from provision scenario 2020-05-16 15:17:47 +02:00
Manuel Romero
e924252a21 get provision vmImages 2020-05-14 19:06:37 +02:00
Manuel Romero
dd3078b943 Edit and Add scenario 2020-05-13 12:46:38 +02:00
Manuel Romero
bfa1c9201a fix scenarios admin 2020-05-13 10:15:34 +02:00
Manuel Romero
dbd7a10202 fix scenarios admin 2020-05-13 09:59:42 +02:00
Manuel Romero
0328373022 Adding populates and selet to get mongo 2020-05-12 19:05:43 +02:00
Manuel Romero
a072653cac is enabled info 2020-05-12 12:53:15 +02:00
Manuel Romero
794eb8c908 Adding AutoDestroy times 2020-05-12 12:40:25 +02:00
Manuel Romero
62cc26e65d _buildVarsExec 2020-05-10 18:10:17 +02:00
Manuel Romero
f7a0968a5e Do not set waf policy if not external 2020-05-10 18:02:03 +02:00
Manuel Romero
3acba670ee fix 2020-05-10 14:41:53 +02:00
Manuel Romero
3a3cb3196e fix provisions 2020-05-10 12:58:20 +02:00
Manuel Romero
d742a4ff2f More to admin provisions 2020-05-10 12:44:45 +02:00
Manuel Romero
990b0d80e3 Fix 2020-05-10 11:57:23 +02:00
Manuel Romero
2d512b49be Disable scenario property 2020-05-10 11:50:35 +02:00
Manuel Romero
61b57d5bc7 Setting isExternalAccess from UI 2020-05-08 16:27:54 +02:00
Manuel Romero
8f48cfbc69 lastLogin 2020-05-07 17:43:31 +02:00
Manuel Romero
9cee830fd4 Admin enhance 2020-05-07 17:18:19 +02:00
Manuel Romero
4f481fd88f vmtypes endpoint 2020-05-07 12:32:21 +02:00
Manuel Romero
2faf109353 disksize default 2020-05-07 12:21:09 +02:00
Manuel Romero
19a0fa715e 128 as minimum disk size 2020-05-07 12:10:54 +02:00
Manuel Romero
2e194b72b8 display disk size on UI 2020-05-07 12:06:02 +02:00
Manuel Romero
039a13bd30 set disk size from UI 2020-05-07 11:56:14 +02:00
181 changed files with 11897 additions and 18962 deletions

2
.gitignore vendored
View File

@@ -5,7 +5,7 @@
/out-tsc
# dependencies
/node_modules
**/node_modules
# IDEs and editors
/.idea

View File

@@ -9,7 +9,9 @@ stages:
stage: build
only:
- master
- dev
script:
- echo $DOCKER_REGISTRY_USER
- chmod +x ./gitlab-ci.sh
- ./gitlab-ci.sh

View File

@@ -1,3 +1,25 @@
FROM node:13.8-alpine
# Stage 1:
FROM node:13.8-alpine AS sources
RUN apk --no-cache add yarn
WORKDIR /var/www/app
WORKDIR /var/www/app
ADD ./package.json ./
ADD ./yarn.lock ./
ADD ./qmi-cloud-common ./qmi-cloud-common
RUN yarn install --production
# Stage 2:
FROM node:13.8-alpine AS production
WORKDIR /var/www/app
COPY --from=sources /var/www/app/node_modules ./node_modules
COPY --from=sources /var/www/app/package.json ./package.json
COPY ./server ./server
COPY ./dist ./dist
EXPOSE 3000
EXPOSE 3100
CMD ["node", "-r", "esm", "server/server"]

View File

@@ -1,8 +1,9 @@
# QMI Cloud
## Pre-requisites
- Docker (desktop for Mac - temporary)
- A file named secrets.json with this JSON information
- Docker
- Docker-Compose
- A file named secrets.json with this JSON information (as Manuel Romero for this details)
```json
{
@@ -15,6 +16,8 @@
## Run it
It will build necessary images if they don't exist.
```shell
git clone git@gitlab.com:qmi/qmi-cloud.git
cd qmi-cloud
@@ -25,9 +28,13 @@ Wait until this line shows up:
```qmi-cloud-app | MongoDB connected...```
On another terminal, run:
```shell
docker container ls
```
Should show these containers:
```
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
@@ -38,17 +45,20 @@ ad01a01a4903 qlikgear/qmi-cloud-app "docker-entrypoint.s…" 4 hou
94a1414554aa redis "redis-server --appe…" 4 hours ago Up 2 minutes 6379/tcp qmi-cloud-redis
```
## TEST
## Authentication
Go to: http://localhost:3000
### Authentication
Authentication with Azure AD (Qlik).
## Bull QUEUE system
### Bull QUEUE system
It is used to queue Terraform executions in Docker containers.
UI: http://localhost:3000/arena
## Mongo / Mongo Express Client
### Mongo / Mongo Express Client
Mongo is for managment.
UI: http://localhost:8081
@@ -57,21 +67,11 @@ Basic-Auth: qlik / Qlik1234
Database: qmicloud
## API / Swagger API-DOCS
### API / Swagger API-DOCS
It shows available endpoints
http://localhost:3000/api-docs
## TEST
- Go to: http://localhost:3000
- Authenticate
- Go to: http://localhost:3000/provisions
### Available Scenarios that will deploy to Azure
- azqmi-qdc-sn
__NOTE: WARNING!!! It's using MANUEL's personal account "Visual Studio Professional" credits in Azure for now.__

View File

@@ -8,36 +8,17 @@ var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
import { Component } from '@angular/core';
import { UsersService } from '../services/users.service';
import { ProvisionsService } from '../services/provisions.service';
import { ScenariosService } from '../services/scenarios.service';
var AdminComponent = /** @class */ (function () {
function AdminComponent(_usersService, _provisionsService, _scenariosService) {
this._usersService = _usersService;
this._provisionsService = _provisionsService;
this._scenariosService = _scenariosService;
this.filter = {
showDestroyed: false
};
function AdminComponent() {
this.sections = ['Provisions', 'Users', 'Scenarios', 'Notifications', 'Subscriptions'];
this.tab = 'Provisions';
}
AdminComponent.prototype.ngOnInit = function () {
var _this = this;
var usersSub = this._usersService.getUsers().subscribe(function (res) {
usersSub.unsubscribe();
_this.users = res.results;
});
};
/*private _refresh(): void {
this.provisions = null;
var instantSubs = this._provisionsService.getProvisionsAdmin(this.filterParams).subscribe( provisions=>{
instantSubs.unsubscribe();
this._process(provisions.results);
});
}*/
AdminComponent.prototype.ngOnDestroy = function () {
if (this.subscription) {
this.subscription.unsubscribe();
}
AdminComponent.prototype.tabSelect = function ($event, tab) {
$event.preventDefault();
$event.stopPropagation();
this.tab = tab;
};
AdminComponent = __decorate([
Component({
@@ -45,7 +26,7 @@ var AdminComponent = /** @class */ (function () {
templateUrl: './admin.component.html',
styleUrls: ['./admin.component.scss']
}),
__metadata("design:paramtypes", [UsersService, ProvisionsService, ScenariosService])
__metadata("design:paramtypes", [])
], AdminComponent);
return AdminComponent;
}());

View File

@@ -1 +1 @@
{"version":3,"file":"admin.component.js","sourceRoot":"","sources":["../../../../../src/app/admin/admin.component.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAU,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAOjE;IAaE,wBAAqB,aAA2B,EAAU,kBAAqC,EAAU,iBAAmC;QAAvH,kBAAa,GAAb,aAAa,CAAc;QAAU,uBAAkB,GAAlB,kBAAkB,CAAmB;QAAU,sBAAiB,GAAjB,iBAAiB,CAAkB;QAL5I,WAAM,GAAG;YACP,aAAa,EAAG,KAAK;SACtB,CAAC;IAG+I,CAAC;IAIlJ,iCAAQ,GAAR;QAAA,iBAOC;QALC,IAAI,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAE,UAAA,GAAG;YACzD,QAAQ,CAAC,WAAW,EAAE,CAAC;YACvB,KAAI,CAAC,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC;QAC3B,CAAC,CAAC,CAAC;IAEL,CAAC;IAED;;;;;;OAMG;IAEH,oCAAW,GAAX;QACE,IAAK,IAAI,CAAC,YAAY,EAAG;YACvB,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;SACjC;IACH,CAAC;IAtCU,cAAc;QAL1B,SAAS,CAAC;YACT,QAAQ,EAAE,WAAW;YACrB,WAAW,EAAE,wBAAwB;YACrC,SAAS,EAAE,CAAC,wBAAwB,CAAC;SACtC,CAAC;yCAcoC,YAAY,EAA8B,iBAAiB,EAA6B,gBAAgB;OAbjI,cAAc,CAiD1B;IAAD,qBAAC;CAAA,AAjDD,IAiDC;SAjDY,cAAc"}
{"version":3,"file":"admin.component.js","sourceRoot":"","sources":["../../../../../src/app/admin/admin.component.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAU,MAAM,eAAe,CAAC;AAOlD;IAKE;QAHA,aAAQ,GAAG,CAAC,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;QAClF,QAAG,GAAa,YAAY,CAAC;IAEb,CAAC;IAEjB,iCAAQ,GAAR;IACA,CAAC;IAED,kCAAS,GAAT,UAAU,MAAM,EAAE,GAAG;QACnB,MAAM,CAAC,cAAc,EAAE,CAAC;QACxB,MAAM,CAAC,eAAe,EAAE,CAAC;QACzB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAdU,cAAc;QAL1B,SAAS,CAAC;YACT,QAAQ,EAAE,WAAW;YACrB,WAAW,EAAE,wBAAwB;YACrC,SAAS,EAAE,CAAC,wBAAwB,CAAC;SACtC,CAAC;;OACW,cAAc,CAgB1B;IAAD,qBAAC;CAAA,AAhBD,IAgBC;SAhBY,cAAc"}

View File

@@ -0,0 +1,99 @@
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
import { Component } from '@angular/core';
import { MDBModalRef } from 'angular-bootstrap-md';
import { Subject } from 'rxjs';
import { ScenariosService } from '../services/scenarios.service';
import { SubscriptionsService } from '../services/subscriptions.service';
var ScenarioModalComponent = /** @class */ (function () {
function ScenarioModalComponent(modalRef, _scenariosService, _subscriptionsService) {
this.modalRef = modalRef;
this._scenariosService = _scenariosService;
this._subscriptionsService = _subscriptionsService;
this.action = new Subject();
this.sendData = {
availableProductVersions: [{
product: 'String: <ie: Qlik Sense>',
vmTypeDefault: 'String: <i.e: Standard_D8s_v3>',
diskSizeGbDefault: 'Integer: <values: 128,250,500,750,1000>',
index: 'vm1',
versions: []
}]
};
}
ScenarioModalComponent.prototype.ngOnInit = function () {
var _this = this;
this._subscriptionsService.getSubscriptions().subscribe(function (res) {
_this.subscriptions = res.results;
if (_this.scenario) {
_this.sendData = JSON.parse(JSON.stringify(_this.scenario));
}
if (!_this.sendData.subscription) {
_this.sendData.subscription = res.results[0]._id;
}
});
};
ScenarioModalComponent.prototype.ngOnDestroy = function () {
};
ScenarioModalComponent.prototype.confirm = function () {
var _this = this;
console.log("sendData", this.sendData);
//this.action.next(this.sendData);
if (this.sendData._id) {
var id = this.sendData._id.toString();
this.sendData._id = undefined;
this._scenariosService.updateScenario(id, this.sendData).subscribe(function (res) {
console.log("done", res);
_this.action.next("DONE!!!");
_this.modalRef.hide();
});
}
else {
this._scenariosService.addScenario(this.sendData).subscribe(function (res) {
console.log("done", res);
_this.action.next("DONE!!!");
_this.modalRef.hide();
});
}
};
ScenarioModalComponent.prototype.delete = function () {
var _this = this;
this._scenariosService.deleteScenario(this.sendData._id).subscribe(function (res) {
console.log("done", res);
_this.action.next("DONE!!!");
_this.modalRef.hide();
});
};
ScenarioModalComponent.prototype.checkOnchange = function ($event, field) {
console.log("Checked?", $event.checked);
this.sendData[field] = $event.checked;
};
ScenarioModalComponent.prototype.updateJson = function (event, property) {
var editField = event.target.textContent.trim();
try {
var value = JSON.parse(editField);
this.sendData[property] = value;
}
catch (e) {
console.log("error json", e);
}
};
ScenarioModalComponent = __decorate([
Component({
selector: 'qmi-new-scenario',
templateUrl: './edit-scenario.component.html',
styleUrls: ['./edit-scenario.component.scss']
}),
__metadata("design:paramtypes", [MDBModalRef, ScenariosService, SubscriptionsService])
], ScenarioModalComponent);
return ScenarioModalComponent;
}());
export { ScenarioModalComponent };
//# sourceMappingURL=edit-scenario.component.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"edit-scenario.component.js","sourceRoot":"","sources":["../../../../../src/app/alert/edit-scenario.component.ts"],"names":[],"mappings":"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"}

View File

@@ -0,0 +1,68 @@
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
import { Component } from '@angular/core';
import { MDBModalRef } from 'angular-bootstrap-md';
import { Subject } from 'rxjs';
import { SubscriptionsService } from '../services/subscriptions.service';
var SubscriptionModalComponent = /** @class */ (function () {
function SubscriptionModalComponent(modalRef, _subscriptionsService) {
this.modalRef = modalRef;
this._subscriptionsService = _subscriptionsService;
this.action = new Subject();
this.sendData = {};
}
SubscriptionModalComponent.prototype.ngOnInit = function () {
if (this.subscription) {
this.sendData = JSON.parse(JSON.stringify(this.subscription));
}
};
SubscriptionModalComponent.prototype.ngOnDestroy = function () {
};
SubscriptionModalComponent.prototype.confirm = function () {
var _this = this;
console.log("sendData", this.sendData);
//this.action.next(this.sendData);
if (this.sendData._id) {
var id = this.sendData._id.toString();
this.sendData._id = undefined;
this._subscriptionsService.updateSubscription(id, this.sendData).subscribe(function (res) {
console.log("done", res);
_this.action.next("DONE!!!");
_this.modalRef.hide();
});
}
else {
this._subscriptionsService.addSubscription(this.sendData).subscribe(function (res) {
console.log("done", res);
_this.action.next("DONE!!!");
_this.modalRef.hide();
});
}
};
SubscriptionModalComponent.prototype.delete = function () {
var _this = this;
this._subscriptionsService.deleteScenario(this.sendData._id).subscribe(function (res) {
console.log("done", res);
_this.action.next("DONE!!!");
_this.modalRef.hide();
});
};
SubscriptionModalComponent = __decorate([
Component({
selector: 'qmi-new-subscription',
templateUrl: './edit-subscription.component.html',
styleUrls: ['./edit-subscription.component.scss']
}),
__metadata("design:paramtypes", [MDBModalRef, SubscriptionsService])
], SubscriptionModalComponent);
return SubscriptionModalComponent;
}());
export { SubscriptionModalComponent };
//# sourceMappingURL=edit-subscription.component.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"edit-subscription.component.js","sourceRoot":"","sources":["../../../../../src/app/alert/edit-subscription.component.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAqB,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAgB,MAAM,MAAM,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAOzE;IASE,oCAAoB,QAAqB,EAAU,qBAA2C;QAA1E,aAAQ,GAAR,QAAQ,CAAa;QAAU,0BAAqB,GAArB,qBAAqB,CAAsB;QAN9F,WAAM,GAAiB,IAAI,OAAO,EAAE,CAAC;QAGrC,aAAQ,GAAS,EAChB,CAAC;IAEgG,CAAC;IAEnG,6CAAQ,GAAR;QACI,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAA;SAC9D;IACL,CAAC;IAED,gDAAW,GAAX;IAEA,CAAC;IAED,4CAAO,GAAP;QAAA,iBAqBC;QAnBG,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvC,kCAAkC;QAClC,IAAK,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;YACtB,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YACtC,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,SAAS,CAAC;YAC9B,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAE,UAAA,GAAG;gBAC7E,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBACzB,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC5B,KAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACvB,CAAC,CAAC,CAAC;SACJ;aAAM;YACL,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAE,UAAA,GAAG;gBACtE,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBACzB,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC5B,KAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACvB,CAAC,CAAC,CAAC;SACJ;IAGL,CAAC;IAED,2CAAM,GAAN;QAAA,iBAMC;QALC,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,SAAS,CAAE,UAAA,GAAG;YACzE,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACzB,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5B,KAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC;IAlDU,0BAA0B;QALtC,SAAS,CAAC;YACT,QAAQ,EAAE,sBAAsB;YAChC,WAAW,EAAE,oCAAoC;YACjD,SAAS,EAAE,CAAC,oCAAoC,CAAC;SAClD,CAAC;yCAU8B,WAAW,EAAiC,oBAAoB;OATnF,0BAA0B,CAoDtC;IAAD,iCAAC;CAAA,AApDD,IAoDC;SApDY,0BAA0B"}

View File

@@ -18,11 +18,13 @@ var NewProvisionConfirmComponent = /** @class */ (function () {
this.action = new Subject();
this.sendData = {
description: "",
servers: null
servers: null,
isExternalAccess: false,
};
this.selectedProductVersion = {};
this.selectedVmType = {};
this.selectedNodeCount = {};
this.selectedDiskSizeGb = {};
this.servers = {};
}
NewProvisionConfirmComponent.prototype.ngOnInit = function () {
@@ -37,6 +39,7 @@ var NewProvisionConfirmComponent = /** @class */ (function () {
if (server.nodeCount) {
_this.selectedNodeCount[server.index] = server.nodeCount;
}
_this.selectedDiskSizeGb[server.index] = server.diskSizeGbDefault || 500;
if (server.versions && server.versions.length) {
var lastIndex = server.versions.length - 1;
_this.selectedProductVersion[server.index] = server.productVersionDefault ? server.productVersionDefault : server.versions[lastIndex].name;
@@ -64,6 +67,9 @@ var NewProvisionConfirmComponent = /** @class */ (function () {
if (this_1.selectedNodeCount[key]) {
this_1.sendData.servers[key].nodeCount = this_1.selectedNodeCount[key];
}
if (this_1.selectedDiskSizeGb[key]) {
this_1.sendData.servers[key].diskSizeGb = this_1.selectedDiskSizeGb[key];
}
this_1.scenario.availableProductVersions.forEach(function (server) {
server.versions.forEach(function (v) {
if (v.name === _this.selectedProductVersion[key]) {
@@ -76,9 +82,14 @@ var NewProvisionConfirmComponent = /** @class */ (function () {
for (var key in this.selectedVmType) {
_loop_1(key);
}
console.log("sendData", this.sendData);
this.action.next(this.sendData);
this.modalRef.hide();
};
NewProvisionConfirmComponent.prototype.checkOnchange = function ($event) {
console.log("Checked?", $event.checked);
this.sendData.isExternalAccess = $event.checked;
};
NewProvisionConfirmComponent = __decorate([
Component({
selector: 'qmi-new-provision',

View File

@@ -1 +1 @@
{"version":3,"file":"new-provision.component.js","sourceRoot":"","sources":["../../../../../src/app/alert/new-provision.component.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"new-provision.component.js","sourceRoot":"","sources":["../../../../../src/app/alert/new-provision.component.ts"],"names":[],"mappings":"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"}

View File

@@ -25,8 +25,10 @@ import { PopoverconfirmComponent } from './popoverconfirm/popoverconfirm.compone
import { FormsModule } from '@angular/forms';
import { MyHttpInterceptor } from './interceptors/http.interceptor';
import { HTTP_INTERCEPTORS } from '@angular/common/http';
import { TableAdminComponent } from './tables/table-admin.component';
import { TableProvisionsAdminComponent } from './tables/table-provisions.component';
import { TableScenariosComponent } from './tables/table-scenarios.component';
import { TableUsersComponent } from './tables/table-users.component';
import { TableNotificationsComponent } from './tables/table-notifications.component';
import { AlertComponent } from './alert/alert.component';
import { AlertService } from './services/alert.service';
import { ModalInfoComponent } from './alert/modalinfo.component';
@@ -34,6 +36,10 @@ import { ModalConfirmComponent } from './alert/confirm.component';
import { FilterPipe } from './filter.pipe';
import { FaqComponent } from './faq/faq.component';
import { NewProvisionConfirmComponent } from './alert/new-provision.component';
import { ScenarioModalComponent } from './alert/edit-scenario.component';
import { SubscriptionModalComponent } from './alert/edit-subscription.component';
import { TableSubsComponent } from './tables/table-subs.component';
import { SubscriptionsService } from './services/subscriptions.service';
export function markedOptions() {
var renderer = new MarkedRenderer();
renderer.blockquote = function (text) {
@@ -54,14 +60,19 @@ var AppModule = /** @class */ (function () {
ScenariosComponent,
AdminComponent,
PopoverconfirmComponent,
TableAdminComponent,
TableProvisionsAdminComponent,
TableUsersComponent,
AlertComponent,
ModalInfoComponent,
ModalConfirmComponent,
FilterPipe,
FaqComponent,
NewProvisionConfirmComponent
NewProvisionConfirmComponent,
TableScenariosComponent,
TableNotificationsComponent,
ScenarioModalComponent,
SubscriptionModalComponent,
TableSubsComponent
],
imports: [
BrowserModule,
@@ -78,6 +89,7 @@ var AppModule = /** @class */ (function () {
{ provide: HTTP_INTERCEPTORS, useClass: MyHttpInterceptor, multi: true },
ProvisionsService,
ScenariosService,
SubscriptionsService,
UsersService,
AlertService,
AuthGuard

View File

@@ -1 +1 @@
{"version":3,"file":"app.module.js","sourceRoot":"","sources":["../../../../src/app/app.module.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"app.module.js","sourceRoot":"","sources":["../../../../src/app/app.module.ts"],"names":[],"mappings":"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"}

View File

@@ -119,7 +119,16 @@ var ProvisionsComponent = /** @class */ (function () {
});
var sub = modalRef.content.action.subscribe(function (result) {
sub.unsubscribe();
_this._stopVms(provision);
_this._provisionsService.stopVms(provision._id.toString(), _this._userId).subscribe(function (res) {
provision.statusVms = res.statusVms;
provision.timeRunning = res.timeRunning;
provision.runningFrom = res.runningFrom;
_this._provisionsService.timeRunning(provision);
_this._alertService.showAlert({
type: 'alert-primary',
text: "Stopping all VMs for scenario '" + provision.scenario + "'..."
});
});
});
};
ProvisionsComponent.prototype.openConfirmStartModal = function (provision) {
@@ -137,36 +146,42 @@ var ProvisionsComponent = /** @class */ (function () {
});
var sub = modalRef.content.action.subscribe(function (result) {
sub.unsubscribe();
_this._startVms(provision);
});
};
ProvisionsComponent.prototype._startVms = function (provision) {
var _this = this;
this._provisionsService.startVms(provision._id.toString(), this._userId).subscribe(function (res) {
provision.statusVms = res.statusVms;
_this._alertService.showAlert({
type: 'alert-primary',
text: "Starting all VMs for scenario '" + provision.scenario + "'..."
_this._provisionsService.startVms(provision._id.toString(), _this._userId).subscribe(function (res) {
provision.statusVms = res.statusVms;
provision.timeRunning = res.timeRunning;
provision.runningFrom = res.runningFrom;
_this._provisionsService.timeRunning(provision);
_this._alertService.showAlert({
type: 'alert-primary',
text: "Starting all VMs for scenario '" + provision.scenario + "'..."
});
});
});
};
ProvisionsComponent.prototype._stopVms = function (provision) {
ProvisionsComponent.prototype.openConfirmExtendModal = function (provision) {
var _this = this;
this._provisionsService.stopVms(provision._id.toString(), this._userId).subscribe(function (res) {
provision.statusVms = res.statusVms;
_this._alertService.showAlert({
type: 'alert-primary',
text: "Stopping all VMs for scenario '" + provision.scenario + "'..."
});
var modalRef = this.modalService.show(ModalConfirmComponent, {
class: 'modal-sm modal-notify modal-info',
containerClass: '',
data: {
info: {
title: "Extend running VMs for " + this._provisionsService.RUNNING_PERIOD + " days?",
icon: 'plus-square',
buttonColor: 'grey'
}
}
});
};
ProvisionsComponent.prototype.extend = function (provision) {
var _this = this;
this._provisionsService.extend(provision._id.toString(), this._userId).subscribe(function (res) {
provision.countExtend = res.countExtend;
_this._alertService.showAlert({
type: 'alert-primary',
text: "Running period extended another " + _this._provisionsService.RUNNING_PERIOD + " days (from now) for provision '" + provision.scenario + "'"
var sub = modalRef.content.action.subscribe(function (result) {
sub.unsubscribe();
_this._provisionsService.extend(provision._id.toString(), _this._userId).subscribe(function (res) {
provision.countExtend = res.countExtend;
provision.timeRunning = res.timeRunning;
provision.runningFrom = res.runningFrom;
_this._provisionsService.timeRunning(provision);
_this._alertService.showAlert({
type: 'alert-primary',
text: "Running period extended another " + _this._provisionsService.RUNNING_PERIOD + " days (from now) for provision '" + provision.scenario + "'"
});
});
});
};

File diff suppressed because one or more lines are too long

View File

@@ -36,7 +36,6 @@ var ScenariosComponent = /** @class */ (function () {
ScenariosComponent.prototype.ngOnDestroy = function () { };
ScenariosComponent.prototype.openNewProvisionConfirmModal = function (scenario) {
var _this = this;
console.log("scenario", scenario);
var modalRef = this.modalService.show(NewProvisionConfirmComponent, {
class: 'modal-md modal-notify',
containerClass: '',
@@ -48,12 +47,12 @@ var ScenariosComponent = /** @class */ (function () {
sub.unsubscribe();
var postData = {
scenario: scenario.name,
description: data.description
description: data.description,
isExternalAccess: data.isExternalAccess
};
if (data.servers) {
postData["vmImage"] = data.servers;
}
console.log("postData", postData);
_this._provisionsService.newProvision(postData, _this.user._id).subscribe(function (res) {
console.log("Done!", res);
_this.onStartProvision.emit(scenario);

View File

@@ -1 +1 @@
{"version":3,"file":"scenarios.component.js","sourceRoot":"","sources":["../../../../../src/app/scenarios/scenarios.component.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"scenarios.component.js","sourceRoot":"","sources":["../../../../../src/app/scenarios/scenarios.component.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAU,YAAY,EAAa,MAAM,eAAe,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAQvD;IAIE,4BAAoB,YAA6B,EAAU,kBAAqC,EAAU,iBAAmC,EAAU,KAAgB;QAAvK,iBAIC;QAJmB,iBAAY,GAAZ,YAAY,CAAiB;QAAU,uBAAkB,GAAlB,kBAAkB,CAAmB;QAAU,sBAAiB,GAAjB,iBAAiB,CAAkB;QAAU,UAAK,GAAL,KAAK,CAAW;QAM7J,qBAAgB,GAAG,IAAI,YAAY,EAAU,CAAC;QALtD,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,SAAS,CAAE,UAAA,KAAK;YACvC,KAAI,CAAC,IAAI,GAAG,KAAK,CAAC;QACpB,CAAC,CAAC,CAAC;IACL,CAAC;IAQD,qCAAQ,GAAR;QAAA,iBAOC;QALC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC,SAAS,CAAE,UAAA,GAAG;YACtE,KAAI,CAAC,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC;YAC7B,KAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,KAAI,CAAC,SAAS,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,wCAAW,GAAX,cAAe,CAAC;IAEhB,yDAA4B,GAA5B,UAA6B,QAAQ;QAArC,iBA4BC;QA3BC,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,4BAA4B,EAAE;YAClE,KAAK,EAAE,uBAAuB;YAC9B,cAAc,EAAE,EAAE;YAClB,IAAI,EAAE;gBACJ,QAAQ,EAAE,QAAQ;aACnB;SACF,CAAE,CAAC;QAEJ,IAAI,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAE,UAAC,IAAS;YACrD,GAAG,CAAC,WAAW,EAAE,CAAC;YAElB,IAAM,QAAQ,GAAG;gBACf,QAAQ,EAAE,QAAQ,CAAC,IAAI;gBACvB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;aACxC,CAAC;YAEF,IAAK,IAAI,CAAC,OAAO,EAAG;gBAChB,QAAQ,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;aACtC;YAED,KAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,CAAE,UAAA,GAAG;gBAC1E,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;gBAC1B,KAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvC,CAAC,CAAC,CAAC;QAEL,CAAC,CAAC,CAAC;IACL,CAAC;IA7CS;QAAT,MAAM,EAAE;;gEAA+C;IAV7C,kBAAkB;QAL9B,SAAS,CAAC;YACT,QAAQ,EAAE,eAAe;YACzB,WAAW,EAAE,4BAA4B;YACzC,SAAS,EAAE,CAAC,4BAA4B,CAAC;SAC1C,CAAC;yCAKkC,eAAe,EAA8B,iBAAiB,EAA6B,gBAAgB,EAAiB,SAAS;OAJ5J,kBAAkB,CAyD9B;IAAD,yBAAC;CAAA,AAzDD,IAyDC;SAzDY,kBAAkB"}

View File

@@ -15,6 +15,7 @@ var ProvisionsService = /** @class */ (function () {
function ProvisionsService(httpClient) {
this.httpClient = httpClient;
this.RUNNING_PERIOD = 4;
this.STOP_PERIOD = 10;
}
ProvisionsService.prototype.getProvisionsAdmin = function (filter) {
// Initialize Params Object
@@ -94,6 +95,21 @@ var ProvisionsService = /** @class */ (function () {
p.autoshutdownDays = Math.floor(durationAutoShutdown.asDays());
p.autoshutdownHours = durationAutoShutdown.hours();
p.autoshutdownMinutes = durationAutoShutdown.minutes();
if ((p.statusVms === 'Stopped' || p.statusVms === 'Starting') && !p.isDestroyed) {
var autoDestroyDate = new Date(p.stoppedFrom);
autoDestroyDate.setDate(autoDestroyDate.getDate() + this.STOP_PERIOD);
var autoDestroy = autoDestroyDate.getTime() - now.getTime();
var durationStop = moment.duration(autoDestroy);
p.autoDestroyDays = Math.floor(durationStop.asDays());
p.autoDestroyHours = durationStop.hours();
p.autoDestroyMinutes = durationStop.minutes();
var inactiveDate = new Date(p.stoppedFrom);
var inactive = Math.abs(inactiveDate.getTime() - now.getTime());
var durationInactive = moment.duration(inactive);
p.inactiveDays = Math.floor(durationInactive.asDays());
p.inactiveHours = durationInactive.hours();
p.inactiveMinutes = durationInactive.minutes();
}
};
ProvisionsService = __decorate([
Injectable({

View File

@@ -1 +1 @@
{"version":3,"file":"provisions.service.js","sourceRoot":"","sources":["../../../../../src/app/services/provisions.service.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"provisions.service.js","sourceRoot":"","sources":["../../../../../src/app/services/provisions.service.ts"],"names":[],"mappings":"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"}

View File

@@ -23,6 +23,15 @@ var ScenariosService = /** @class */ (function () {
ScenariosService.prototype.getScenarioVmtypes = function () {
return this.httpClient.get(environment.apiVersionPath + "/scenarios/vmtypes");
};
ScenariosService.prototype.updateScenario = function (id, patchData) {
return this.httpClient.put(environment.apiVersionPath + "/scenarios/" + id, patchData);
};
ScenariosService.prototype.addScenario = function (data) {
return this.httpClient.post(environment.apiVersionPath + "/scenarios", data);
};
ScenariosService.prototype.deleteScenario = function (id) {
return this.httpClient.delete(environment.apiVersionPath + "/scenarios/" + id);
};
ScenariosService = __decorate([
Injectable({
providedIn: 'root'

View File

@@ -1 +1 @@
{"version":3,"file":"scenarios.service.js","sourceRoot":"","sources":["../../../../../src/app/services/scenarios.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAKlE;IAEE,0BAAqB,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAK,CAAC;IAEjD,uCAAY,GAAZ;QACE,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAI,WAAW,CAAC,cAAc,eAAY,CAAC,CAAC;IACxE,CAAC;IAED,0CAAe,GAAf;QACE,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAI,WAAW,CAAC,cAAc,mBAAgB,CAAC,CAAC;IAC5E,CAAC;IAED,6CAAkB,GAAlB;QACE,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAI,WAAW,CAAC,cAAc,uBAAoB,CAAC,CAAC;IAChF,CAAC;IAdU,gBAAgB;QAH5B,UAAU,CAAC;YACV,UAAU,EAAE,MAAM;SACnB,CAAC;yCAGiC,UAAU;OAFhC,gBAAgB,CAgB5B;IAAD,uBAAC;CAAA,AAhBD,IAgBC;SAhBY,gBAAgB"}
{"version":3,"file":"scenarios.service.js","sourceRoot":"","sources":["../../../../../src/app/services/scenarios.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAKlE;IAEE,0BAAqB,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAK,CAAC;IAEjD,uCAAY,GAAZ;QACE,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAI,WAAW,CAAC,cAAc,eAAY,CAAC,CAAC;IACxE,CAAC;IAED,0CAAe,GAAf;QACE,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAI,WAAW,CAAC,cAAc,mBAAgB,CAAC,CAAC;IAC5E,CAAC;IAED,6CAAkB,GAAlB;QACE,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAI,WAAW,CAAC,cAAc,uBAAoB,CAAC,CAAC;IAChF,CAAC;IAED,yCAAc,GAAd,UAAe,EAAE,EAAE,SAAS;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAI,WAAW,CAAC,cAAc,mBAAc,EAAI,EAAE,SAAS,CAAC,CAAC;IACzF,CAAC;IAED,sCAAW,GAAX,UAAY,IAAI;QACd,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAI,WAAW,CAAC,cAAc,eAAY,EAAE,IAAI,CAAC,CAAC;IAC/E,CAAC;IAED,yCAAc,GAAd,UAAe,EAAE;QACf,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAI,WAAW,CAAC,cAAc,mBAAc,EAAI,CAAC,CAAC;IACjF,CAAC;IA1BU,gBAAgB;QAH5B,UAAU,CAAC;YACV,UAAU,EAAE,MAAM;SACnB,CAAC;yCAGiC,UAAU;OAFhC,gBAAgB,CA4B5B;IAAD,uBAAC;CAAA,AA5BD,IA4BC;SA5BY,gBAAgB"}

View File

@@ -0,0 +1,38 @@
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { environment } from '../../environments/environment.prod';
var SubscriptionsService = /** @class */ (function () {
function SubscriptionsService(httpClient) {
this.httpClient = httpClient;
}
SubscriptionsService.prototype.getSubscriptions = function () {
return this.httpClient.get(environment.apiVersionPath + "/subscriptions");
};
SubscriptionsService.prototype.addSubscription = function (data) {
return this.httpClient.post(environment.apiVersionPath + "/subscriptions", data);
};
SubscriptionsService.prototype.updateSubscription = function (id, patchData) {
return this.httpClient.put(environment.apiVersionPath + "/subscriptions/" + id, patchData);
};
SubscriptionsService.prototype.deleteScenario = function (id) {
return this.httpClient.delete(environment.apiVersionPath + "/subscriptions/" + id);
};
SubscriptionsService = __decorate([
Injectable({
providedIn: 'root'
}),
__metadata("design:paramtypes", [HttpClient])
], SubscriptionsService);
return SubscriptionsService;
}());
export { SubscriptionsService };
//# sourceMappingURL=subscriptions.service.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"subscriptions.service.js","sourceRoot":"","sources":["../../../../../src/app/services/subscriptions.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAKlE;IAEE,8BAAqB,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAK,CAAC;IAEjD,+CAAgB,GAAhB;QACE,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAI,WAAW,CAAC,cAAc,mBAAgB,CAAC,CAAC;IAC5E,CAAC;IAED,8CAAe,GAAf,UAAgB,IAAI;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAI,WAAW,CAAC,cAAc,mBAAgB,EAAE,IAAI,CAAC,CAAC;IACnF,CAAC;IAED,iDAAkB,GAAlB,UAAmB,EAAE,EAAE,SAAS;QAC9B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAI,WAAW,CAAC,cAAc,uBAAkB,EAAI,EAAE,SAAS,CAAC,CAAC;IAC7F,CAAC;IAED,6CAAc,GAAd,UAAe,EAAE;QACf,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAI,WAAW,CAAC,cAAc,uBAAkB,EAAI,CAAC,CAAC;IACrF,CAAC;IAlBU,oBAAoB;QAHhC,UAAU,CAAC;YACV,UAAU,EAAE,MAAM;SACnB,CAAC;yCAGiC,UAAU;OAFhC,oBAAoB,CAoBhC;IAAD,2BAAC;CAAA,AApBD,IAoBC;SApBY,oBAAoB"}

View File

@@ -23,6 +23,9 @@ var UsersService = /** @class */ (function () {
UsersService.prototype.updateUser = function (userId, patchData) {
return this.httpClient.put(environment.apiVersionPath + "/users/" + userId, patchData);
};
UsersService.prototype.getNotifications = function () {
return this.httpClient.get(environment.apiVersionPath + "/notifications");
};
UsersService = __decorate([
Injectable({
providedIn: 'root'

View File

@@ -1 +1 @@
{"version":3,"file":"users.service.js","sourceRoot":"","sources":["../../../../../src/app/services/users.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAKlE;IAEE,sBAAqB,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAK,CAAC;IAEjD,4BAAK,GAAL;QACE,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAI,WAAW,CAAC,cAAc,cAAW,CAAC,CAAC;IACvE,CAAC;IAED,+BAAQ,GAAR;QACE,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAI,WAAW,CAAC,cAAc,WAAQ,CAAC,CAAC;IACpE,CAAC;IAED,iCAAU,GAAV,UAAW,MAAM,EAAE,SAAS;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAI,WAAW,CAAC,cAAc,eAAU,MAAQ,EAAE,SAAS,CAAC,CAAC;IACzF,CAAC;IAdU,YAAY;QAHxB,UAAU,CAAC;YACV,UAAU,EAAE,MAAM;SACnB,CAAC;yCAGiC,UAAU;OAFhC,YAAY,CAexB;IAAD,mBAAC;CAAA,AAfD,IAeC;SAfY,YAAY"}
{"version":3,"file":"users.service.js","sourceRoot":"","sources":["../../../../../src/app/services/users.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAKlE;IAEE,sBAAqB,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAK,CAAC;IAEjD,4BAAK,GAAL;QACE,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAI,WAAW,CAAC,cAAc,cAAW,CAAC,CAAC;IACvE,CAAC;IAED,+BAAQ,GAAR;QACE,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAI,WAAW,CAAC,cAAc,WAAQ,CAAC,CAAC;IACpE,CAAC;IAED,iCAAU,GAAV,UAAW,MAAM,EAAE,SAAS;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAI,WAAW,CAAC,cAAc,eAAU,MAAQ,EAAE,SAAS,CAAC,CAAC;IACzF,CAAC;IAED,uCAAgB,GAAhB;QACE,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAI,WAAW,CAAC,cAAc,mBAAgB,CAAC,CAAC;IAC5E,CAAC;IAlBU,YAAY;QAHxB,UAAU,CAAC;YACV,UAAU,EAAE,MAAM;SACnB,CAAC;yCAGiC,UAAU;OAFhC,YAAY,CAmBxB;IAAD,mBAAC;CAAA,AAnBD,IAmBC;SAnBY,YAAY"}

View File

@@ -0,0 +1,94 @@
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
import { MdbTablePaginationComponent, MdbTableDirective } from 'angular-bootstrap-md';
import { Component, ViewChild, HostListener, ChangeDetectorRef } from '@angular/core';
import { UsersService } from '../services/users.service';
var TableNotificationsComponent = /** @class */ (function () {
function TableNotificationsComponent(cdRef, _usersService) {
this.cdRef = cdRef;
this._usersService = _usersService;
this.previous = [];
this.searchText = '';
this.maxVisibleItems = 25;
this.loading = false;
this.elements = [];
}
TableNotificationsComponent.prototype.oninput = function () {
this.mdbTablePagination.searchText = this.searchText;
};
TableNotificationsComponent.prototype._initElements = function () {
this.mdbTable.setDataSource(this.elements);
this.elements = this.mdbTable.getDataSource();
this.previous = this.mdbTable.getDataSource();
};
TableNotificationsComponent.prototype.ngOnInit = function () {
this.refreshData();
};
TableNotificationsComponent.prototype.refreshData = function () {
var _this = this;
this.loading = true;
this.searchText = "";
var sub = this._usersService.getNotifications().subscribe(function (res) {
sub.unsubscribe();
_this.elements = res.results;
_this.loading = false;
_this._initElements();
});
};
TableNotificationsComponent.prototype.ngAfterViewInit = function () {
this.mdbTablePagination.setMaxVisibleItemsNumberTo(this.maxVisibleItems);
this.mdbTablePagination.calculateFirstItemIndex();
this.mdbTablePagination.calculateLastItemIndex();
this.cdRef.detectChanges();
};
TableNotificationsComponent.prototype.searchItems = function () {
var _this = this;
var prev = this.mdbTable.getDataSource();
if (!this.searchText) {
this.mdbTable.setDataSource(this.previous);
this.elements = this.mdbTable.getDataSource();
}
if (this.searchText) {
this.elements = this.mdbTable.searchLocalDataBy(this.searchText);
this.mdbTable.setDataSource(prev);
}
this.mdbTablePagination.calculateFirstItemIndex();
this.mdbTablePagination.calculateLastItemIndex();
this.mdbTable.searchDataObservable(this.searchText).subscribe(function () {
_this.mdbTablePagination.calculateFirstItemIndex();
_this.mdbTablePagination.calculateLastItemIndex();
});
};
__decorate([
ViewChild(MdbTablePaginationComponent, { static: true }),
__metadata("design:type", MdbTablePaginationComponent)
], TableNotificationsComponent.prototype, "mdbTablePagination", void 0);
__decorate([
ViewChild(MdbTableDirective, { static: true }),
__metadata("design:type", MdbTableDirective)
], TableNotificationsComponent.prototype, "mdbTable", void 0);
__decorate([
HostListener('input'),
__metadata("design:type", Function),
__metadata("design:paramtypes", []),
__metadata("design:returntype", void 0)
], TableNotificationsComponent.prototype, "oninput", null);
TableNotificationsComponent = __decorate([
Component({
selector: 'table-notifications',
templateUrl: './table-notifications.component.html',
styleUrls: ['./table-notifications.component.scss']
}),
__metadata("design:paramtypes", [ChangeDetectorRef, UsersService])
], TableNotificationsComponent);
return TableNotificationsComponent;
}());
export { TableNotificationsComponent };
//# sourceMappingURL=table-notifications.component.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"table-notifications.component.js","sourceRoot":"","sources":["../../../../../src/app/tables/table-notifications.component.ts"],"names":[],"mappings":"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"}

View File

@@ -0,0 +1,331 @@
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
import { Component, HostListener, ViewChild, ChangeDetectorRef } from '@angular/core';
import { MdbTableDirective, MdbTablePaginationComponent, MDBModalService } from 'angular-bootstrap-md';
import { ProvisionsService } from '../services/provisions.service';
import { AlertService } from '../services/alert.service';
import { ModalInfoComponent } from '../alert/modalinfo.component';
import { ModalConfirmComponent } from '../alert/confirm.component';
import { ScenariosService } from '../services/scenarios.service';
var TableProvisionsAdminComponent = /** @class */ (function () {
function TableProvisionsAdminComponent(modalService, _scenariosService, _alertService, cdRef, _provisionsService) {
this.modalService = modalService;
this._scenariosService = _scenariosService;
this._alertService = _alertService;
this.cdRef = cdRef;
this._provisionsService = _provisionsService;
this.filter = {
showDestroyed: false
};
this.filterParams = {
isDestroyed: false
};
this.loading = false;
this.pagingIsDisabled = false;
//@ViewChild('row', { static: true }) row: ElementRef;
this.elements = [];
this.searchText = '';
this.selectedprov = null;
this.showInfo = false;
this.logShow = false;
this.logstype = 'provision';
this.maxVisibleItems = 25;
}
TableProvisionsAdminComponent.prototype.oninput = function () {
this.mdbTablePagination.searchText = this.searchText;
};
TableProvisionsAdminComponent.prototype._initElements = function () {
this.mdbTable.setDataSource(this.elements);
this.elements = this.mdbTable.getDataSource();
this.previous = this.mdbTable.getDataSource();
};
TableProvisionsAdminComponent.prototype._process = function (provisions) {
var _this = this;
provisions.forEach(function (p) {
p._scenario = _this.scenarios.filter(function (s) { return s.name === p.scenario; });
_this._provisionsService.timeRunning(p);
});
if (this.elements.length === 0) {
this.elements = provisions;
}
else {
this.elements.forEach(function (p, index, object) {
var found = provisions.filter(function (a) { return a._id.toString() === p._id.toString(); });
if (found.length) {
p.status = found[0].status;
p.statusVms = found[0].statusVms;
p.isDestroyed = found[0].isDestroyed;
p.outputs = found[0].outputs;
p.destroy = found[0].destroy;
this._provisionsService.timeRunning(p);
}
else {
object.splice(index, 1);
}
}.bind(this));
provisions.forEach(function (p) {
var found = this.elements.filter(function (a) { return a._id.toString() === p._id.toString(); });
if (found.length === 0) {
this.elements.unshift(p);
}
}.bind(this));
}
this._initElements();
};
TableProvisionsAdminComponent.prototype.ngOnInit = function () {
var _this = this;
var scenariosSub = this._scenariosService.getScenariosAll().subscribe(function (res) {
scenariosSub.unsubscribe();
_this.scenarios = res.results;
/*this.subscription = timer(0, 8000).pipe( switchMap(() => this._provisionsService.getProvisionsAdmin(this.filterParams) ) ).subscribe(provisions => {
this._process(provisions.results);
});*/
_this.refreshData();
});
//this._initElements();
};
TableProvisionsAdminComponent.prototype.ngOnDestroy = function () {
if (this.subscription) {
this.subscription.unsubscribe();
}
};
TableProvisionsAdminComponent.prototype.ngAfterViewInit = function () {
if (this.mdbTablePagination) {
this.mdbTablePagination.setMaxVisibleItemsNumberTo(this.maxVisibleItems);
this.mdbTablePagination.calculateFirstItemIndex();
this.mdbTablePagination.calculateLastItemIndex();
this.cdRef.detectChanges();
}
};
TableProvisionsAdminComponent.prototype.searchItems = function () {
var _this = this;
var prev = this.mdbTable.getDataSource();
if (!this.searchText) {
this.mdbTable.setDataSource(this.previous);
this.elements = this.mdbTable.getDataSource();
}
if (this.searchText) {
this.elements = this.mdbTable.searchLocalDataBy(this.searchText);
this.mdbTable.setDataSource(prev);
}
if (this.mdbTablePagination) {
this.mdbTablePagination.calculateFirstItemIndex();
this.mdbTablePagination.calculateLastItemIndex();
this.mdbTable.searchDataObservable(this.searchText).subscribe(function () {
_this.mdbTablePagination.calculateFirstItemIndex();
_this.mdbTablePagination.calculateLastItemIndex();
});
}
};
TableProvisionsAdminComponent.prototype.showLogs = function ($event, provision, type) {
$event.preventDefault();
$event.stopPropagation();
this.logstype = type;
this.logShow = false;
this.selectedprov = provision;
this.logShow = true;
};
TableProvisionsAdminComponent.prototype.onLogsClose = function () {
this.selectedprov = null;
this.logShow = false;
};
TableProvisionsAdminComponent.prototype.openConfirmStartModal = function (provision) {
var _this = this;
var modalRef = this.modalService.show(ModalConfirmComponent, {
class: 'modal-sm modal-notify modal-info',
containerClass: '',
data: {
info: {
title: 'Confirm Start VMs?',
icon: 'play',
buttonColor: 'grey'
}
}
});
var sub = modalRef.content.action.subscribe(function (result) {
sub.unsubscribe();
_this._startVms(provision);
});
};
TableProvisionsAdminComponent.prototype._startVms = function (provision) {
var _this = this;
var sub = this._provisionsService.startVms(provision._id.toString(), provision.user._id).subscribe(function (res) {
provision.startVms = res.startVms;
sub.unsubscribe();
_this._alertService.showAlert({
type: 'alert-primary',
text: "Starting all VMs for scenario '" + provision.scenario + "'..."
});
});
};
TableProvisionsAdminComponent.prototype.openConfirmStopModal = function (provision) {
var _this = this;
var modalRef = this.modalService.show(ModalConfirmComponent, {
class: 'modal-sm modal-notify modal-info',
containerClass: '',
data: {
info: {
title: 'Confirm Stop VMs?',
icon: 'stop',
buttonColor: 'grey'
}
}
});
var sub = modalRef.content.action.subscribe(function (result) {
sub.unsubscribe();
_this._stopVms(provision);
});
};
TableProvisionsAdminComponent.prototype._stopVms = function (provision) {
var _this = this;
var sub = this._provisionsService.stopVms(provision._id.toString(), provision.user._id).subscribe(function (res) {
provision.startVms = res.startVms;
sub.unsubscribe();
_this._alertService.showAlert({
type: 'alert-primary',
text: "Stopping all VMs for scenario '" + provision.scenario + "'..."
});
});
};
TableProvisionsAdminComponent.prototype.openInfoModal = function (provision) {
this.modalService.show(ModalInfoComponent, {
backdrop: true,
keyboard: true,
focus: true,
show: false,
ignoreBackdropClick: false,
class: 'modal-lg',
containerClass: '',
animated: true,
data: {
info: provision
}
});
};
TableProvisionsAdminComponent.prototype.openConfirmDestroyModal = function (provision) {
var _this = this;
var modalRef = this.modalService.show(ModalConfirmComponent, {
class: 'modal-sm modal-notify modal-danger',
containerClass: '',
data: {
info: {
title: 'Confirm destroy this provision?',
icon: 'times-circle'
}
}
});
var sub = modalRef.content.action.subscribe(function (result) {
sub.unsubscribe();
_this._provisionsService.newDestroy(provision._id.toString(), provision.user._id).subscribe(function (provUpdated) {
_this._alertService.showAlert({
type: 'alert-primary',
text: "Provision of scenario '" + provision.scenario + "' is going to be destroyed"
});
provision.destroy = provUpdated.destroy;
});
});
};
TableProvisionsAdminComponent.prototype.openConfirmDeleteModal = function (provision) {
var _this = this;
var modalRef = this.modalService.show(ModalConfirmComponent, {
class: 'modal-sm modal-notify modal-danger',
containerClass: '',
data: {
info: {
title: 'Confirm delete?',
icon: 'trash-alt'
}
}
});
var sub = modalRef.content.action.subscribe(function (result) {
sub.unsubscribe();
_this._provisionsService.delProvision(provision._id, provision.user._id).subscribe(function (res) {
_this.elements = _this.elements.filter(function (e) {
return e._id.toString() !== provision._id.toString();
});
_this._initElements();
_this._alertService.showAlert({
type: 'alert-primary',
text: "Provision entry '" + provision.scenario + "' was deleted"
});
});
});
};
TableProvisionsAdminComponent.prototype.refreshData = function () {
var _this = this;
this.elements = [];
this.loading = true;
this.searchText = "";
var instantSubs = this._provisionsService.getProvisionsAdmin(this.filterParams).subscribe(function (provisions) {
instantSubs.unsubscribe();
_this.loading = false;
_this._process(provisions.results);
});
};
TableProvisionsAdminComponent.prototype.onCheckValue = function () {
this.filterParams = {};
if (!this.filter.showDestroyed) {
this.filterParams.isDestroyed = false;
}
this.refreshData();
};
TableProvisionsAdminComponent.prototype.openConfirmExtendModal = function (provision) {
var _this = this;
var modalRef = this.modalService.show(ModalConfirmComponent, {
class: 'modal-sm modal-notify modal-info',
containerClass: '',
data: {
info: {
title: "Extend running VMs for " + this._provisionsService.RUNNING_PERIOD + " days?",
icon: 'plus-square',
buttonColor: 'grey'
}
}
});
var sub = modalRef.content.action.subscribe(function (result) {
sub.unsubscribe();
_this._provisionsService.extend(provision._id.toString(), provision.user._id).subscribe(function (res) {
provision.countExtend = res.countExtend;
provision.timeRunning = res.timeRunning;
provision.runningFrom = res.runningFrom;
_this._provisionsService.timeRunning(provision);
_this._alertService.showAlert({
type: 'alert-primary',
text: "Running period extended another " + _this._provisionsService.RUNNING_PERIOD + " days (from now) for provision '" + provision.scenario + "'"
});
});
});
};
__decorate([
ViewChild(MdbTablePaginationComponent, { static: true }),
__metadata("design:type", MdbTablePaginationComponent)
], TableProvisionsAdminComponent.prototype, "mdbTablePagination", void 0);
__decorate([
ViewChild(MdbTableDirective, { static: true }),
__metadata("design:type", MdbTableDirective)
], TableProvisionsAdminComponent.prototype, "mdbTable", void 0);
__decorate([
HostListener('input'),
__metadata("design:type", Function),
__metadata("design:paramtypes", []),
__metadata("design:returntype", void 0)
], TableProvisionsAdminComponent.prototype, "oninput", null);
TableProvisionsAdminComponent = __decorate([
Component({
selector: 'table-provisions',
templateUrl: './table-provisions.component.html',
styleUrls: ['./table-provisions.component.scss']
}),
__metadata("design:paramtypes", [MDBModalService, ScenariosService, AlertService, ChangeDetectorRef, ProvisionsService])
], TableProvisionsAdminComponent);
return TableProvisionsAdminComponent;
}());
export { TableProvisionsAdminComponent };
//# sourceMappingURL=table-provisions.component.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,155 @@
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
import { MdbTablePaginationComponent, MdbTableDirective, MDBModalService } from 'angular-bootstrap-md';
import { Component, ViewChild, HostListener, ChangeDetectorRef } from '@angular/core';
import { ScenariosService } from '../services/scenarios.service';
import { ScenarioModalComponent } from '../alert/edit-scenario.component';
var TableScenariosComponent = /** @class */ (function () {
function TableScenariosComponent(modalService, cdRef, _scenariosService) {
this.modalService = modalService;
this.cdRef = cdRef;
this._scenariosService = _scenariosService;
this.previous = [];
this.searchText = '';
this.maxVisibleItems = 25;
this.elements = [];
}
TableScenariosComponent.prototype.oninput = function () {
this.mdbTablePagination.searchText = this.searchText;
};
TableScenariosComponent.prototype._initElements = function () {
this.mdbTable.setDataSource(this.elements);
this.elements = this.mdbTable.getDataSource();
this.previous = this.mdbTable.getDataSource();
};
TableScenariosComponent.prototype._refresh = function () {
var _this = this;
var scenariosSub = this._scenariosService.getScenariosAll().subscribe(function (res) {
scenariosSub.unsubscribe();
_this.scenarios = res.results;
_this.elements = res.results;
_this._initElements();
});
};
TableScenariosComponent.prototype.ngOnInit = function () {
this._refresh();
};
TableScenariosComponent.prototype.ngAfterViewInit = function () {
this.mdbTablePagination.setMaxVisibleItemsNumberTo(this.maxVisibleItems);
this.mdbTablePagination.calculateFirstItemIndex();
this.mdbTablePagination.calculateLastItemIndex();
this.cdRef.detectChanges();
};
TableScenariosComponent.prototype.searchItems = function () {
var _this = this;
var prev = this.mdbTable.getDataSource();
if (!this.searchText) {
this.mdbTable.setDataSource(this.previous);
this.elements = this.mdbTable.getDataSource();
}
if (this.searchText) {
this.elements = this.mdbTable.searchLocalDataBy(this.searchText);
this.mdbTable.setDataSource(prev);
}
this.mdbTablePagination.calculateFirstItemIndex();
this.mdbTablePagination.calculateLastItemIndex();
this.mdbTable.searchDataObservable(this.searchText).subscribe(function () {
_this.mdbTablePagination.calculateFirstItemIndex();
_this.mdbTablePagination.calculateLastItemIndex();
});
};
TableScenariosComponent.prototype.changeValue = function (scenario, property, event) {
this.editField = event.target.textContent;
//console.log("changeValue editField", id, this.editField);
};
TableScenariosComponent.prototype.updateList = function (scenario, property, event) {
var _this = this;
this.editField = event.target.textContent;
var patch = {};
patch[property] = this.editField.trim();
if (!patch[property] || patch[property] === "" || patch[property] === scenario[property]) {
return;
}
this._scenariosService.updateScenario(scenario._id.toString(), patch).subscribe(function (res) {
console.log("done", res);
_this._refresh();
});
};
TableScenariosComponent.prototype.updateJson = function (scenario, property, event) {
var _this = this;
this.editField = event.target.textContent.trim();
try {
var patch = {};
var value = JSON.parse(this.editField);
if (JSON.stringify(value) === JSON.stringify(scenario[property])) {
return;
}
patch[property] = value;
console.log("editField", patch);
this._scenariosService.updateScenario(scenario._id.toString(), patch).subscribe(function (res) {
console.log("done", res);
_this._refresh();
});
}
catch (e) {
console.log("error json", e);
this._refresh();
}
};
TableScenariosComponent.prototype.FieldsChange = function (scenario, property, value) {
var _this = this;
var patch = {};
patch[property] = value.checked;
this._scenariosService.updateScenario(scenario._id.toString(), patch).subscribe(function (res) {
console.log("done", res);
_this._refresh();
});
};
TableScenariosComponent.prototype.openNewScenarioModal = function (scenario) {
var _this = this;
var modalRef = this.modalService.show(ScenarioModalComponent, {
class: 'modal-lg modal-notify',
containerClass: '',
data: {
scenario: scenario
}
});
var sub = modalRef.content.action.subscribe(function (data) {
sub.unsubscribe();
console.log("new scenario data", data);
_this._refresh();
});
};
__decorate([
ViewChild(MdbTablePaginationComponent, { static: true }),
__metadata("design:type", MdbTablePaginationComponent)
], TableScenariosComponent.prototype, "mdbTablePagination", void 0);
__decorate([
ViewChild(MdbTableDirective, { static: true }),
__metadata("design:type", MdbTableDirective)
], TableScenariosComponent.prototype, "mdbTable", void 0);
__decorate([
HostListener('input'),
__metadata("design:type", Function),
__metadata("design:paramtypes", []),
__metadata("design:returntype", void 0)
], TableScenariosComponent.prototype, "oninput", null);
TableScenariosComponent = __decorate([
Component({
selector: 'table-scenarios',
templateUrl: './table-scenarios.component.html',
styleUrls: ['./table-scenarios.component.scss']
}),
__metadata("design:paramtypes", [MDBModalService, ChangeDetectorRef, ScenariosService])
], TableScenariosComponent);
return TableScenariosComponent;
}());
export { TableScenariosComponent };
//# sourceMappingURL=table-scenarios.component.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"table-scenarios.component.js","sourceRoot":"","sources":["../../../../../src/app/tables/table-scenarios.component.ts"],"names":[],"mappings":"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"}

View File

@@ -0,0 +1,111 @@
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
import { MdbTablePaginationComponent, MdbTableDirective, MDBModalService } from 'angular-bootstrap-md';
import { Component, ViewChild, HostListener, ChangeDetectorRef } from '@angular/core';
import { SubscriptionModalComponent } from '../alert/edit-subscription.component';
import { SubscriptionsService } from '../services/subscriptions.service';
var TableSubsComponent = /** @class */ (function () {
function TableSubsComponent(modalService, cdRef, _subscriptionsService) {
this.modalService = modalService;
this.cdRef = cdRef;
this._subscriptionsService = _subscriptionsService;
this.previous = [];
this.searchText = '';
this.maxVisibleItems = 25;
this.loading = false;
this.elements = [];
}
TableSubsComponent.prototype.oninput = function () {
this.mdbTablePagination.searchText = this.searchText;
};
TableSubsComponent.prototype._initElements = function () {
this.mdbTable.setDataSource(this.elements);
this.elements = this.mdbTable.getDataSource();
this.previous = this.mdbTable.getDataSource();
};
TableSubsComponent.prototype.ngOnInit = function () {
this.refreshData();
};
TableSubsComponent.prototype.refreshData = function () {
var _this = this;
this.loading = true;
this.searchText = "";
var usersSub = this._subscriptionsService.getSubscriptions().subscribe(function (res) {
usersSub.unsubscribe();
_this.elements = res.results;
_this.loading = false;
_this._initElements();
});
};
TableSubsComponent.prototype.ngAfterViewInit = function () {
this.mdbTablePagination.setMaxVisibleItemsNumberTo(this.maxVisibleItems);
this.mdbTablePagination.calculateFirstItemIndex();
this.mdbTablePagination.calculateLastItemIndex();
this.cdRef.detectChanges();
};
TableSubsComponent.prototype.searchItems = function () {
var _this = this;
var prev = this.mdbTable.getDataSource();
if (!this.searchText) {
this.mdbTable.setDataSource(this.previous);
this.elements = this.mdbTable.getDataSource();
}
if (this.searchText) {
this.elements = this.mdbTable.searchLocalDataBy(this.searchText);
this.mdbTable.setDataSource(prev);
}
this.mdbTablePagination.calculateFirstItemIndex();
this.mdbTablePagination.calculateLastItemIndex();
this.mdbTable.searchDataObservable(this.searchText).subscribe(function () {
_this.mdbTablePagination.calculateFirstItemIndex();
_this.mdbTablePagination.calculateLastItemIndex();
});
};
TableSubsComponent.prototype.openNewSubsModal = function (subscription) {
var _this = this;
var modalRef = this.modalService.show(SubscriptionModalComponent, {
class: 'modal-md modal-notify',
containerClass: '',
data: {
subscription: subscription
}
});
var sub = modalRef.content.action.subscribe(function (data) {
sub.unsubscribe();
console.log("new subs data", data);
_this.refreshData();
});
};
__decorate([
ViewChild(MdbTablePaginationComponent, { static: true }),
__metadata("design:type", MdbTablePaginationComponent)
], TableSubsComponent.prototype, "mdbTablePagination", void 0);
__decorate([
ViewChild(MdbTableDirective, { static: true }),
__metadata("design:type", MdbTableDirective)
], TableSubsComponent.prototype, "mdbTable", void 0);
__decorate([
HostListener('input'),
__metadata("design:type", Function),
__metadata("design:paramtypes", []),
__metadata("design:returntype", void 0)
], TableSubsComponent.prototype, "oninput", null);
TableSubsComponent = __decorate([
Component({
selector: 'table-subscriptions',
templateUrl: './table-subscriptions.component.html',
styleUrls: ['./table-subscriptions.component.scss']
}),
__metadata("design:paramtypes", [MDBModalService, ChangeDetectorRef, SubscriptionsService])
], TableSubsComponent);
return TableSubsComponent;
}());
export { TableSubsComponent };
//# sourceMappingURL=table-subs.component.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"table-subs.component.js","sourceRoot":"","sources":["../../../../../src/app/tables/table-subs.component.ts"],"names":[],"mappings":"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"}

View File

@@ -8,7 +8,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
import { MdbTablePaginationComponent, MdbTableDirective } from 'angular-bootstrap-md';
import { Component, ViewChild, HostListener, ChangeDetectorRef, Input } from '@angular/core';
import { Component, ViewChild, HostListener, ChangeDetectorRef } from '@angular/core';
import { AuthGuard } from '../services/auth.guard';
import { UsersService } from '../services/users.service';
var TableUsersComponent = /** @class */ (function () {
@@ -19,7 +19,9 @@ var TableUsersComponent = /** @class */ (function () {
this._auth = _auth;
this.previous = [];
this.searchText = '';
this.maxVisibleItems = 8;
this.maxVisibleItems = 25;
this.loading = false;
this.elements = [];
this._auth.getUserInfo().subscribe(function (value) {
_this.currentUser = value;
});
@@ -33,7 +35,21 @@ var TableUsersComponent = /** @class */ (function () {
this.previous = this.mdbTable.getDataSource();
};
TableUsersComponent.prototype.ngOnInit = function () {
this._initElements();
this.refreshData();
};
TableUsersComponent.prototype.refreshData = function () {
var _this = this;
this.loading = true;
this.searchText = "";
var usersSub = this._usersService.getUsers().subscribe(function (res) {
usersSub.unsubscribe();
res.results.forEach(function (u) {
u.lastLogin = u.lastLogin || u.created;
});
_this.elements = res.results;
_this.loading = false;
_this._initElements();
});
};
TableUsersComponent.prototype.ngAfterViewInit = function () {
this.mdbTablePagination.setMaxVisibleItemsNumberTo(this.maxVisibleItems);
@@ -59,22 +75,10 @@ var TableUsersComponent = /** @class */ (function () {
_this.mdbTablePagination.calculateLastItemIndex();
});
};
TableUsersComponent.prototype.setAdmin = function (user) {
var _this = this;
this._usersService.updateUser(user._id, { "role": "admin" }).subscribe(function (res1) {
_this._usersService.getUsers().subscribe(function (res) {
_this.elements = res.results;
_this._initElements();
});
});
};
TableUsersComponent.prototype.removeAdmin = function (user) {
var _this = this;
this._usersService.updateUser(user._id, { "role": "user" }).subscribe(function (res1) {
_this._usersService.getUsers().subscribe(function (res) {
_this.elements = res.results;
_this._initElements();
});
TableUsersComponent.prototype.FieldsChange = function (user, value) {
var patchData = { "role": value.checked ? "admin" : "user" };
this._usersService.updateUser(user._id, patchData).subscribe(function (res1) {
user.role = res1.role;
});
};
__decorate([
@@ -85,10 +89,6 @@ var TableUsersComponent = /** @class */ (function () {
ViewChild(MdbTableDirective, { static: true }),
__metadata("design:type", MdbTableDirective)
], TableUsersComponent.prototype, "mdbTable", void 0);
__decorate([
Input(),
__metadata("design:type", Object)
], TableUsersComponent.prototype, "elements", void 0);
__decorate([
HostListener('input'),
__metadata("design:type", Function),

View File

@@ -1 +1 @@
{"version":3,"file":"table-users.component.js","sourceRoot":"","sources":["../../../../../src/app/tables/table-users.component.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"table-users.component.js","sourceRoot":"","sources":["../../../../../src/app/tables/table-users.component.ts"],"names":[],"mappings":"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"}

Binary file not shown.

View File

@@ -31,7 +31,7 @@ Just an assorted selection of questions and answers.
- On day 3, an email is sent warning that in the next 24 hours the VMs will automatically stop.
- You can "extend" VMs at Running status. This will renew the 'Running' period for 4 extra days. Other way, VMs will automatically stop within the next 24 hours.
- You can monitor 'Running time' and 'Time remaining until auto stop' at all times.
- __Provision will be automatically destroyed after 10 days of inactivity (10 days with Stopped VMs). On day 9 you'll get a warning email advising this will happen in 24 hours.__
- __Provision will be automatically destroyed after 20 days of inactivity (20 days with Stopped VMs). On day 18 you'll get a warning email advising this will happen in 48 hours.__
* * *

View File

@@ -1,12 +1,12 @@
<?xml version="1.0" standalone="no"?>
<!--
Font Awesome Free 5.12.1 by @fontawesome - https://fontawesome.com
Font Awesome Free 5.13.0 by @fontawesome - https://fontawesome.com
License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
-->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
<metadata>
Created by FontForge 20190801 at Tue Feb 4 18:05:39 2020
Created by FontForge 20190801 at Mon Mar 23 10:45:51 2020
By Robert Madole
Copyright (c) Font Awesome
</metadata>

Before

Width:  |  Height:  |  Size: 699 KiB

After

Width:  |  Height:  |  Size: 699 KiB

Binary file not shown.

View File

@@ -1,12 +1,12 @@
<?xml version="1.0" standalone="no"?>
<!--
Font Awesome Free 5.12.1 by @fontawesome - https://fontawesome.com
Font Awesome Free 5.13.0 by @fontawesome - https://fontawesome.com
License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
-->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
<metadata>
Created by FontForge 20190801 at Tue Feb 4 18:05:39 2020
Created by FontForge 20190801 at Mon Mar 23 10:45:51 2020
By Robert Madole
Copyright (c) Font Awesome
</metadata>

Before

Width:  |  Height:  |  Size: 141 KiB

After

Width:  |  Height:  |  Size: 141 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,12 +1,12 @@
<?xml version="1.0" standalone="no"?>
<!--
Font Awesome Free 5.12.1 by @fontawesome - https://fontawesome.com
Font Awesome Free 5.13.0 by @fontawesome - https://fontawesome.com
License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
-->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
<metadata>
Created by FontForge 20190801 at Tue Feb 4 18:05:39 2020
Created by FontForge 20190801 at Mon Mar 23 10:45:51 2020
By Robert Madole
Copyright (c) Font Awesome
</metadata>
@@ -23,7 +23,7 @@ Copyright (c) Font Awesome
bbox="-0.983398 -64.9834 640.104 448.427"
underline-thickness="25"
underline-position="-50"
unicode-range="U+0020-F941"
unicode-range="U+0020-F976"
/>
<missing-glyph />
<glyph glyph-name="glass-martini" unicode="&#xf000;"
@@ -2377,6 +2377,10 @@ c0 1.77051 0.74707 4.43359 1.66895 5.94531c0.510742 0.827148 1.51855 2.01953 2.2
c-0.112305 3.6416 -3.08203 7.27051 -6.62988 8.10059zM565.27 119.9c5.92383 -5.26953 10.7432 -15.9814 10.7432 -23.9102c0 -8.49121 -5.38184 -19.6865 -12.0127 -24.9902l-151.23 -121c-9.67188 -7.72754 -27.5693 -14 -39.9492 -14h-0.0507812h-356.77
c-8.83203 0 -16 7.16797 -16 16v96c0 8.83203 7.16797 16 16 16h55.4004l46.5 37.71c17.8789 14.5059 51.0762 26.2842 74.0996 26.29h160v0c17.6309 0 31.9668 -14.3096 32 -31.9404v-0.120117c0 -1.48438 -0.206055 -3.87695 -0.459961 -5.33984
c-2.54004 -15.6992 -17.3496 -26.5996 -33.25 -26.5996h-78.29c-8.83203 0 -16 -7.16797 -16 -16s7.16797 -16 16 -16h118.27h0.176758c12.3496 0 30.1904 6.27148 39.8232 14l92.4004 73.9004c12.4004 10 30.7998 10.6992 42.5996 0z" />
<glyph glyph-name="hand-holding-water" unicode="&#xf4c1;" horiz-adv-x="576"
d="M288 192c-53 0 -96 42.0996 -96 94c0 40 57.0996 120.7 83.2002 155.6c6.39941 8.5 19.2002 8.5 25.5996 0c26.1006 -34.8994 83.2002 -115.6 83.2002 -155.6c0 -51.9004 -43 -94 -96 -94zM565.3 119.9c15.1006 -13.6006 13.9004 -36.8008 -1.2998 -48.9004l-151.2 -121
c-11.3994 -9.09961 -25.5 -14 -40 -14h-356.8c-8.7998 0 -16 7.2002 -16 16v96c0 8.7998 7.2002 16 16 16h55.4004l46.5 37.7002c21 17 47.0996 26.2998 74.0996 26.2998h160c19.5 0 34.9004 -17.4004 31.5996 -37.4004
c-2.59961 -15.6992 -17.3994 -26.5996 -33.2998 -26.5996h-78.2998c-8.7998 0 -16 -7.2002 -16 -16s7.2002 -16 16 -16h118.3c14.6006 0 28.7002 4.90039 40 14l92.4004 73.9004c12.3994 10 30.7998 10.6992 42.5996 0z" />
<glyph glyph-name="hands" unicode="&#xf4c2;" horiz-adv-x="640"
d="M204.8 217.6l57.6006 -76.7998c16.5996 -22.2002 25.5996 -49.0996 25.5996 -76.7998v-112c0 -8.7998 -7.2002 -16 -16 -16h-131.7c-7.2002 0 -13.5 4.7002 -15.2998 11.5996c-2 7.80078 -5.40039 15.2002 -10.4004 21.7002l-104.1 134.3
c-6.7998 8.5 -10.5 19.1006 -10.5 30v218.4c0 17.7002 14.2998 32 32 32s32 -14.2998 32 -32v-148.4l89.7998 -107.8c6 -7.2998 16.9004 -7.7998 23.6006 -1.09961l12.7998 12.7998c5.59961 5.59961 6.2998 14.5 1.5 20.9004l-38.1006 50.7998
@@ -3502,6 +3506,13 @@ d="M12.4102 299.98c-16.5498 7.50977 -16.5498 32.5293 0 40.0391l232.95 105.671c2.
c-6.7998 -3.08984 -14.4893 -3.08984 -21.29 0zM499.59 211.7c16.5498 -7.5 16.5498 -32.5 0 -40l-232.95 -105.59c-6.7998 -3.08008 -14.4893 -3.08008 -21.29 0l-232.939 105.59c-16.5498 7.5 -16.5498 32.5 0 40l58.0996 26.3301l161.63 -73.2705
c7.57031 -3.42969 15.5908 -5.16992 23.8604 -5.16992s16.2998 1.74023 23.8604 5.16992l161.64 73.2705zM499.59 83.9004c16.5498 -7.5 16.5498 -32.5 0 -40l-232.95 -105.591c-6.7998 -3.0791 -14.4893 -3.0791 -21.29 0l-232.939 105.591
c-16.5498 7.5 -16.5498 32.5 0 40l57.8799 26.2295l161.85 -73.3701c7.57031 -3.42969 15.5908 -5.16992 23.8604 -5.16992s16.2998 1.74023 23.8604 5.16992l161.859 73.3701z" />
<glyph glyph-name="lungs" unicode="&#xf604;" horiz-adv-x="640"
d="M636.11 57.8496c2.58984 -9.68945 3.88965 -19.6396 3.88965 -29.6299c0 -61.2295 -62.4805 -105.439 -125.24 -88.6201l-59.5 15.9502c-42.1797 11.3105 -71.2598 47.4697 -71.2598 88.6201v87.4902l85.8398 -57.2305
c1.1123 -0.741211 3.09961 -1.34375 4.43652 -1.34375c2.36328 0 5.34375 1.59668 6.65332 3.56445l8.87988 13.3096c0.742188 1.1123 1.34375 3.09961 1.34375 4.43555c0 2.36328 -1.5957 5.34473 -3.56348 6.6543l-167.59 111.72l-167.59 -111.72
c-1.96777 -1.30957 -3.56445 -4.29004 -3.56445 -6.65332c0 -1.33691 0.602539 -3.32422 1.34473 -4.43652l8.87988 -13.3096c1.30859 -1.96777 4.29004 -3.56445 6.65332 -3.56445c1.33691 0 3.32422 0.601562 4.43652 1.34375l85.8398 57.2305v-87.4902
c0 -41.1504 -29.0801 -77.3203 -71.2598 -88.6201l-59.5 -15.9502c-62.7598 -16.8193 -125.24 27.3906 -125.24 88.6201c0 9.99023 1.2998 19.9404 3.88965 29.6299c21.6699 81.3008 56.04 159.15 102.011 231.021c22.1191 34.5703 36.0693 63.1299 80.0498 63.1299
c38.6895 0 70.0498 -29.4199 70.0498 -65.71v-60.1104l32.8799 21.9199c4.4502 2.9707 7.12012 7.95996 7.12012 13.3105v170.59c0 8.83984 7.16016 16 16 16h16c8.83984 0 16 -7.16016 16 -16v-170.59v-0.00292969c0 -4.72363 3.18945 -10.6855 7.12012 -13.3076
l32.8799 -21.9199v60.1104c0 36.29 31.3604 65.71 70.0498 65.71c43.9805 0 57.9307 -28.5596 80.0498 -63.1299c45.9707 -71.8701 80.3408 -149.72 102.011 -231.021z" />
<glyph glyph-name="microscope" unicode="&#xf610;"
d="M160 128c-17.6699 0 -32 14.3301 -32 32v224c0 17.6699 14.3301 32 32 32v16c0 8.83984 7.16016 16 16 16h64c8.83984 0 16 -7.16016 16 -16v-16c17.6699 0 32 -14.3301 32 -32v-224c0 -17.6699 -14.3301 -32 -32 -32h-12v-16c0 -8.83984 -7.16016 -16 -16 -16h-40
c-8.83984 0 -16 7.16016 -16 16v16h-12zM464 0c26.5098 0 48 -21.4902 48 -48c0 -8.83984 -7.16016 -16 -16 -16h-480c-8.83984 0 -16 7.16016 -16 16c0 26.5098 21.4902 48 48 48h272c70.5801 0 128 57.4199 128 128s-57.4199 128 -128 128v64
@@ -4503,6 +4514,11 @@ c-2.58789 2.58691 -4.6875 7.65625 -4.6875 11.3154s2.09961 8.72852 4.6875 11.3154
c-10.7441 -10.748 -31.4814 -22.2393 -46.29 -25.6494l-120.25 -27.75l-102 -102c-2.58691 -2.58789 -7.65625 -4.6875 -11.3154 -4.6875s-8.72754 2.09961 -11.3154 4.6875l-22.6191 22.6191c-2.58789 2.58789 -4.6875 7.65625 -4.6875 11.3154
s2.09961 8.72852 4.6875 11.3154l102 102l27.7393 120.26c3.4248 14.8057 14.9248 35.5439 25.6699 46.29l109.671 109.67l45.25 -45.25l-55.1006 -55.1006zM273.2 141.31l9.30957 9.31055l-67.8896 67.8896l-9.31055 -9.30957
c-3.57715 -3.59082 -7.41211 -10.5127 -8.55957 -15.4502l-18.2998 -79.2998l79.2998 18.3193c4.94043 1.13379 11.8623 4.95996 15.4502 8.54004z" />
<glyph glyph-name="disease" unicode="&#xf7fa;"
d="M472.29 252.1c48.54 -16.6191 53.8301 -73.8301 8.99023 -96.79l-62 -31.7393c-17.8301 -9.12988 -29.2803 -25.2002 -30.6299 -43l-4.7002 -61.8604c-3.4502 -44.79 -65.1299 -66.7803 -104.45 -37.2197l-54.3203 40.8301
c-15.6201 11.7295 -36.96 16.1201 -57.0693 11.7295l-70 -15.2803c-50.6504 -11.0596 -94.1104 32.5605 -73.46 73.8008l28.4297 57c8.17969 16.3799 6.43945 35.1699 -4.63965 50.2393l-38.54 52.4209c-27.9307 37.9492 7 86.9092 59 82.8398l71.8994 -5.62012
c20.6602 -1.62012 40.9404 5.59961 54.2002 19.3096l46.0898 47.7207c33.4297 34.5098 98.4199 21.1494 110 -22.6201l16 -60.4502c4.60059 -17.3906 18.8604 -31.71 38.1406 -38.3105zM160 192c17.6641 0 32 14.3359 32 32s-14.3359 32 -32 32s-32 -14.3359 -32 -32
s14.3359 -32 32 -32zM288 96c17.6641 0 32 14.3359 32 32s-14.3359 32 -32 32s-32 -14.3359 -32 -32s14.3359 -32 32 -32zM304 224c8.83203 0 16 7.16797 16 16s-7.16797 16 -16 16s-16 -7.16797 -16 -16s7.16797 -16 16 -16z" />
<glyph glyph-name="egg" unicode="&#xf7fb;" horiz-adv-x="384"
d="M192 448c106 0 192 -214 192 -320s-86 -192 -192 -192s-192 86 -192 192s86 320 192 320z" />
<glyph glyph-name="hamburger" unicode="&#xf805;"
@@ -4518,6 +4534,15 @@ l38.3994 -6.40039c13.46 -2.25 23.1504 -12.0996 23.1504 -23.54v-49.5898l35.6504 -
<glyph glyph-name="hard-hat" unicode="&#xf807;"
d="M480 160v-64h-448v64c0 80.25 49.2803 148.92 119.19 177.62l40.8096 -81.6201v112c0 8.83203 7.16797 16 16 16h96c8.83203 0 16 -7.16797 16 -16v-112l40.8096 81.6201c69.9102 -28.7002 119.19 -97.3701 119.19 -177.62zM496 64c8.83203 0 16 -7.16797 16 -16v-32
c0 -8.83203 -7.16797 -16 -16 -16h-480c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h480z" />
<glyph glyph-name="hospital-user" unicode="&#xf80d;" horiz-adv-x="640"
d="M480 128c-52.9922 0 -96 43.0078 -96 96s43.0078 96 96 96s96 -43.0078 96 -96s-43.0078 -96 -96 -96zM528 96c61.8242 0 112.002 -50.1758 112.002 -112c0 -0.170898 -0.000976562 -0.449219 -0.00195312 -0.620117c-0.139648 -26.2598 -21.7305 -47.3799 -48 -47.3799
h-224c-26.2695 0 -47.8604 21.1201 -48 47.3799c-0.000976562 0.170898 -0.00195312 0.449219 -0.00195312 0.620117c0 61.8242 50.1758 112 112 112h0.00195312h0.0810547c1.9707 0 5.09277 -0.488281 6.96875 -1.08984
c10.9795 -3.81445 29.3223 -6.91016 40.9453 -6.91016s29.9658 3.0957 40.9453 6.91016c1.87891 0.601562 5.00488 1.08984 6.97754 1.08984h0.0820312zM329.91 85.5498c-23.1367 -23.1309 -41.915 -68.4561 -41.915 -101.172
c0 -0.322266 0.00195312 -0.845703 0.00488281 -1.16797c0.136719 -14.5381 7.44336 -35.6885 16.3096 -47.21h-288.31c-8.83203 0 -16 7.16797 -16 16v368c0 17.6641 14.3359 32 32 32h32v64c0 17.6641 14.3359 32 32 32h160c17.6641 0 32 -14.3359 32 -32v-64h32
c17.6641 0 32 -14.3359 32 -32v-216.62c-6.58008 -4.32227 -16.4766 -12.3096 -22.0898 -17.8301zM144 44v40c0 6.62402 -5.37598 12 -12 12h-40c-6.62402 0 -12 -5.37598 -12 -12v-40c0 -6.62402 5.37598 -12 12 -12h40c6.62402 0 12 5.37598 12 12zM144 172v40
c0 6.62402 -5.37598 12 -12 12h-40c-6.62402 0 -12 -5.37598 -12 -12v-40c0 -6.62402 5.37598 -12 12 -12h40c6.62402 0 12 5.37598 12 12zM192 294v26h26c3.31152 0 6 2.68848 6 6v20c0 3.31152 -2.68848 6 -6 6h-26v26c0 3.31152 -2.68848 6 -6 6h-20
c-3.31152 0 -6 -2.68848 -6 -6v-26h-26c-3.31152 0 -6 -2.68848 -6 -6v-20c0 -3.31152 2.68848 -6 6 -6h26v-26c0 -3.31152 2.68848 -6 6 -6h20c3.31152 0 6 2.68848 6 6zM272 44v40c0 6.62402 -5.37598 12 -12 12h-40c-6.62402 0 -12 -5.37598 -12 -12v-40
c0 -6.62402 5.37598 -12 12 -12h40c6.62402 0 12 5.37598 12 12zM272 172v40c0 6.62402 -5.37598 12 -12 12h-40c-6.62402 0 -12 -5.37598 -12 -12v-40c0 -6.62402 5.37598 -12 12 -12h40c6.62402 0 12 5.37598 12 12z" />
<glyph glyph-name="hotdog" unicode="&#xf80f;"
d="M488.56 424.56c12.9297 -12.9326 23.4238 -38.2715 23.4238 -56.5596s-10.4941 -43.627 -23.4238 -56.5596l-352 -352c-13.0205 -13.4824 -38.7998 -24.4238 -57.543 -24.4238c-44.1592 0 -80 35.8408 -80 80c0 18.7432 10.9414 44.5225 24.4238 57.543l352 352
c12.9326 12.9297 38.2715 23.4238 56.5596 23.4238s43.627 -10.4941 56.5596 -23.4238zM438.63 329.37c2.58691 2.58691 4.68652 7.65625 4.68652 11.3145c0 8.83301 -7.16797 16.002 -16.001 16.002c-3.65918 0 -8.72852 -2.09961 -11.3154 -4.68652
@@ -4690,11 +4715,224 @@ s-248 111 -248 248s111 248 248 248zM256 64c70.6562 0 128 57.3438 128 128s-57.343
d="M416 240c8.83203 0 16 -7.16797 16 -16s-7.16797 -16 -16 -16s-16 7.16797 -16 16s7.16797 16 16 16zM624 128c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-336c0 -52.9922 -43.0078 -96 -96 -96s-96 43.0078 -96 96h-32
c-35.3281 0 -64 28.6719 -64 64v256c0 35.3281 28.6719 64 64 64h352c88.3203 0 160 -71.6797 160 -160v-160h48zM192 16c26.4688 0.0273438 47.9727 21.5312 48 48c0 26.4961 -21.5039 48 -48 48s-48 -21.5039 -48 -48s21.5039 -48 48 -48zM256 256v64
c0 17.6641 -14.3359 32 -32 32h-128c-17.6641 0 -32 -14.3359 -32 -32v-64c0 -17.6641 14.3359 -32 32 -32h128c17.6641 0 32 14.3359 32 32zM448 128v192c0 17.6641 -14.3359 32 -32 32h-64c-17.6641 0 -32 -14.3359 -32 -32v-192h128z" />
<glyph glyph-name="faucet" unicode="&#xf905;"
d="M352 192c88.3203 0 160 -71.6797 160 -160c0 -17.6641 -14.3359 -32 -32 -32h-64c-17.6641 0 -32 14.3359 -32 32s-14.3359 32 -32 32h-12.79c-20.5898 -37.7305 -64.21 -64 -115.21 -64s-94.6201 26.2695 -115.21 64h-92.79c-8.83203 0 -16 7.16797 -16 16v96
c0 8.83203 7.16797 16 16 16h118.61c15.71 13.4004 35.46 23 57.3896 28v47.5596l32 3.38086l32 -3.38086v-47.5596c21.9297 -4.92969 41.6797 -14.5596 57.3896 -28h38.6104zM81.5898 288.09c-9.41992 -1 -17.5898 6.81055 -17.5898 16.7998v30.2207
c0 9.98926 8.16992 17.7998 17.5898 16.8096l110.41 -11.6602v27.7402c0 8.83203 7.16797 16 16 16h32c8.83203 0 16 -7.16797 16 -16v-27.7402l110.41 11.6602c9.41992 0.990234 17.5898 -6.80957 17.5898 -16.8096v-30.2207
c0 -9.98926 -8.16992 -17.7998 -17.5898 -16.7998l-142.41 15z" />
<glyph glyph-name="trailer" unicode="&#xf941;" horiz-adv-x="640"
d="M624 128c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-337.61c-7.83008 54.21 -54 96 -110.39 96s-102.56 -41.79 -110.39 -96h-49.6104c-8.83203 0 -16 7.16797 -16 16v288c0 8.83203 7.16797 16 16 16h512c8.83203 0 16 -7.16797 16 -16v-240
h80zM96 204.32v107.68c0 4.41602 -3.58398 8 -8 8h-16c-4.41602 0 -8 -3.58398 -8 -8v-128.39c8.20996 6.67578 22.5469 15.9541 32 20.71zM192 222.86v89.1396c0 4.41602 -3.58398 8 -8 8h-16c-4.41602 0 -8 -3.58398 -8 -8v-89.1396
c5.30957 0.489258 10.5703 1.13965 16 1.13965s10.6904 -0.650391 16 -1.13965zM288 183.61v128.39c0 4.41602 -3.58398 8 -8 8h-16c-4.41602 0 -8 -3.58398 -8 -8v-107.68c9.45312 -4.75586 23.79 -14.0342 32 -20.71zM384 128v184c0 4.41602 -3.58398 8 -8 8h-16
c-4.41602 0 -8 -3.58398 -8 -8v-184h32zM480 128v184c0 4.41602 -3.58398 8 -8 8h-16c-4.41602 0 -8 -3.58398 -8 -8v-184h32zM176 128c44.1602 0 80 -35.8398 80 -80s-35.8398 -80 -80 -80s-80 35.8398 -80 80s35.8398 80 80 80zM176 16c17.6641 0 32 14.3359 32 32
s-14.3359 32 -32 32s-32 -14.3359 -32 -32s14.3359 -32 32 -32z" />
<glyph glyph-name="box-tissue" unicode="&#xf95b;"
d="M383.88 160.18h-256l-64 288h141.4c27.9277 -0.00195312 57.7646 -21.5059 66.5996 -48c8.83105 -26.4932 38.6641 -47.9971 66.5898 -48h109.41zM-0.120117 -31.8203v64h512v-64c0 -17.6641 -14.3359 -32 -32 -32h-448c-17.6641 0 -32 14.3359 -32 32zM479.88 224.18
c17.6582 -0.00488281 31.9902 -14.3408 31.9902 -32v0v-128h-512v128c0 17.6641 14.3359 32 32 32h49l14.2197 -64h-15.21c-8.83203 0 -16 -7.16797 -16 -16s7.16797 -16 16 -16h352c8.83203 0 16 7.16797 16 16s-7.16797 16 -16 16h-14.2695l21.3301 64h40.9395z" />
<glyph glyph-name="hand-holding-medical" unicode="&#xf95c;" horiz-adv-x="576"
d="M159.88 272.18c-8.83203 0 -16 7.16797 -16 16v64c0 8.83203 7.16797 16 16 16h64v64c0 8.83203 7.16797 16 16 16h64c8.83203 0 16 -7.16797 16 -16v-64h64c8.83203 0 16 -7.16797 16 -16v-64c0 -8.83203 -7.16797 -16 -16 -16h-64v-64c0 -8.83203 -7.16797 -16 -16 -16
h-64c-8.83203 0 -16 7.16797 -16 16v64h-64zM568.07 111.87c4.28906 -5.83496 7.77051 -16.4492 7.77051 -23.6914c0 -11.1436 -7.27637 -25.5596 -16.2412 -32.1787l-135.029 -99.5703c-15.2061 -11.1436 -42.8477 -20.2246 -61.7002 -20.2695h-347
c-8.77246 0.0595703 -15.9404 7.22754 -16 16v96c0.0595703 8.77246 7.22754 15.9404 16 16h55.3604l46.5 37.7402c17.8828 14.4893 51.0781 26.25 74.0957 26.25h0.0234375h160h0.00488281c17.6973 0 32.0596 -14.3633 32.0596 -32.0605
c0 -1.47852 -0.198242 -3.86133 -0.444336 -5.32031c-2.62012 -15.7393 -17.3701 -26.6094 -33.3701 -26.6094h-78.2393c-8.83203 0 -16 -7.16797 -16 -16s7.16797 -16 16 -16h120.609l119.67 88.1797c5.8418 4.3252 16.4814 7.83496 23.749 7.83496
c11.1621 0 25.5791 -7.30469 32.1816 -16.3047z" />
<glyph glyph-name="hand-sparkles" unicode="&#xf95d;" horiz-adv-x="640"
d="M106.66 277.36l-20.7402 -49.6201c-1.01074 -2.04297 -3.68066 -3.7002 -5.95996 -3.7002s-4.94922 1.65723 -5.95996 3.7002l-20.6602 49.6602h-0.0703125l-49.5898 20.5996c-1.92383 1.09863 -3.57227 3.78711 -3.67969 6v0c0.106445 2.21973 1.76367 4.9082 3.7002 6
l49.6299 20.6904h0.0498047l20.7002 49.6299c1.01465 2.03516 3.68555 3.6875 5.95996 3.6875s4.94434 -1.65234 5.95996 -3.6875l20.6602 -49.6406h0.0703125l49.5693 -20.6699c1.92871 -1.0957 3.57715 -3.78418 3.68066 -6v0
c-0.108398 -2.21289 -1.75684 -4.90039 -3.68066 -6l-49.5498 -20.6494h-0.0898438zM471.38 -19.4102l37.4902 -15.6299l0.0703125 -0.169922c-7.59082 -17.0596 -24 -28.79 -43.2402 -28.79h-197.61c-13.4805 0.0224609 -30.8584 8.88867 -38.79 19.79l-125.6 172.61
c-4.22852 5.81055 -7.66016 16.3584 -7.66016 23.5449c0 22.0879 17.9268 40.0146 40.0146 40.0146c11.2441 0 25.7393 -7.37891 32.3555 -16.4697l23.5898 -32.4902v241c0 17.6641 14.3359 32 32 32s32 -14.3359 32 -32v-152c0 -4.41602 3.58398 -8 8 -8h16
c4.41602 0 8 3.58398 8 8v184c0 17.6641 14.3359 32 32 32s32 -14.3359 32 -32v-184c0 -4.41602 3.58398 -8 8 -8h16c4.41602 0 8 3.58398 8 8v152c0 17.6641 14.3359 32 32 32s32 -14.3359 32 -32v-152c0 -4.41602 3.58398 -8 8 -8h16c4.41602 0 8 3.58398 8 8v72
c0 17.6641 14.3359 32 32 32s32 -14.3359 32 -32v-176.03c-0.0195312 -1.30957 -0.269531 -2.66992 -0.269531 -4c-7.77051 -3.70996 -14.5 -9.59961 -18.3506 -17.3398l-0.469727 -0.950195l-0.410156 -1l-15.6299 -37.4795l-37.4902 -15.6299l-1 -0.430664l-1 -0.489258
c-11.7803 -5.90527 -21.3408 -21.3926 -21.3408 -34.5703s9.56055 -28.665 21.3408 -34.5703l1 -0.5zM349.79 108.48c1.22266 0.609375 2.21582 2.21289 2.21582 3.5791c0 1.36719 -0.993164 2.9707 -2.21582 3.58008l-29.79 12.4199l-12.4297 29.7803
c-0.611328 1.21777 -2.21289 2.20605 -3.5752 2.20605s-2.96387 -0.988281 -3.5752 -2.20605l-12.4199 -29.7803l-29.79 -12.4199c-1.22266 -0.609375 -2.21582 -2.21289 -2.21582 -3.58008c0 -1.36621 0.993164 -2.96973 2.21582 -3.5791l29.79 -12.4102l12.4297 -29.7803
c0.611328 -1.21777 2.21289 -2.20605 3.5752 -2.20605s2.96387 0.988281 3.5752 2.20605l12.4199 29.7803zM640 16.0898l-0.0703125 -0.0703125v0c-0.117188 -2.19727 -1.76562 -4.86328 -3.67969 -5.94922l-49.5498 -20.6602h-0.0898438v0l-20.6904 -49.6201
c-1.01074 -2.04297 -3.68066 -3.7002 -5.95996 -3.7002s-4.94922 1.65723 -5.95996 3.7002l-20.6602 49.5898h-0.0703125l-49.5693 20.6699c-1.91406 1.08691 -3.5625 3.75293 -3.68066 5.9502v0c0.101562 2.2168 1.75 4.90527 3.68066 6l49.6299 20.7402h0.0498047
l20.7002 49.6299c1.01465 2.03516 3.68555 3.6875 5.95996 3.6875s4.94434 -1.65234 5.95996 -3.6875l20.6797 -49.6104h0.0703125l49.5703 -20.6699c1.92969 -1.09473 3.57812 -3.7832 3.67969 -6z" />
<glyph glyph-name="hands-wash" unicode="&#xf95e;" horiz-adv-x="576"
d="M496 224c-26.4961 0 -48 21.5039 -48 48s21.5039 48 48 48s48 -21.5039 48 -48s-21.5039 -48 -48 -48zM311.47 269.55l-16.0801 -4.96973l20.9004 66.1699c3.5 11.0703 14.1797 18.8604 25.71 17.5098c11.8564 -1.25195 21.4785 -11.9453 21.4785 -23.8672
c0 -2.05566 -0.505859 -5.31348 -1.12891 -7.27246l-15.3496 -48.6104c-5.0752 1.88184 -13.5869 3.44531 -19 3.49023h-0.0322266c-4.6543 0 -12.0449 -1.09766 -16.498 -2.4502zM93.6504 61.6699c-33.4609 19.3945 -61.0801 66.5195 -61.6504 105.19v112.729
c0.179688 13.3203 11.6699 23.9102 24.9004 23.8604c13.1709 -0.0771484 23.8604 -10.8281 23.8604 -24c0 -0.0410156 0 -0.108398 -0.000976562 -0.150391l2.06055 -50.0498l60 189.85c3.5 11.0703 14.1797 18.9004 25.71 17.46
c11.8398 -1.26465 21.4492 -11.9561 21.4492 -23.8633c0 -2.04785 -0.500977 -5.29395 -1.11914 -7.24609l-38.5605 -122c-0.205078 -0.649414 -0.371094 -1.72949 -0.371094 -2.41016c0 -4.41699 3.58398 -8.00195 8.00098 -8.00195
c3.2373 0 6.65527 2.50586 7.62988 5.5918l47.9307 151.71c3.50977 11.0605 14.1797 18.8506 25.71 17.5098c11.8398 -1.26465 21.4502 -11.9561 21.4502 -23.8633c0 -2.04785 -0.501953 -5.29395 -1.12012 -7.24609l-43.3701 -137.79
c-0.206055 -0.650391 -0.373047 -1.73242 -0.373047 -2.41504c0 -4.41797 3.58496 -8.00293 8.00293 -8.00293c3.23535 0 6.65332 2.50293 7.62988 5.58789l33.4502 106.42c3.5 11.0703 14.1895 18.8604 25.7197 17.5195
c11.8408 -1.26465 21.4502 -11.9561 21.4502 -23.8633c0 -2.04785 -0.501953 -5.29395 -1.12012 -7.24609l-34.1602 -108.12l-73.7002 -22.7598c-59.0469 -19.5098 -107.01 -85.8135 -107.06 -148v-25.6904c-0.80957 -0.169922 -1.5498 -0.519531 -2.34961 -0.709961z
M519.1 112c11.6104 0 22.25 -7.83984 24.4404 -19.2402c0.262695 -1.30078 0.476562 -3.43262 0.476562 -4.75977c0 -13.248 -10.752 -24 -24 -24h-0.0166016h-160c-4.41602 0 -8 -3.58398 -8 -8s3.58398 -8 8 -8h127.1c11.6104 0 22.25 -7.83984 24.4404 -19.2402
c0.262695 -1.30078 0.476562 -3.43262 0.476562 -4.75977c0 -13.248 -10.752 -24 -24 -24h-0.0166016h-128c-4.41602 0 -8 -3.58398 -8 -8s3.58398 -8 8 -8h95.0996c11.6104 0 22.25 -7.83984 24.4404 -19.2402c0.262695 -1.30078 0.476562 -3.43262 0.476562 -4.75977
c0 -13.248 -10.752 -24 -24 -24h-0.0166016h-208c-18.4902 0.0703125 -46.2656 8.00879 -62 17.7197c3.32715 8.06641 6.02734 21.6953 6.02734 30.4209c0 36.0527 -28.6846 71.0908 -64.0273 78.209v25.6504v0.00683594c0 49.501 38.165 102.223 85.1904 117.684
l107.72 33.25c1.91211 0.59082 5.08887 1.07031 7.08984 1.07031c13.2539 0 24.0107 -10.7568 24.0107 -24.0107c0 -9.77637 -7.58008 -20.0537 -16.9209 -22.9404l-47.0898 -17.0596h199.1c11.6104 0 22.25 -7.83984 24.4404 -19.2402
c0.262695 -1.30078 0.476562 -3.43262 0.476562 -4.75977c0 -13.248 -10.752 -24 -24 -24h-0.0166016h-128c-4.41602 0 -8 -3.58398 -8 -8s3.58398 -8 8 -8h159.1zM416 384c-17.6641 0 -32 14.3359 -32 32s14.3359 32 32 32s32 -14.3359 32 -32s-14.3359 -32 -32 -32z
M112 32c26.4961 0 48 -21.5039 48 -48s-21.5039 -48 -48 -48s-48 21.5039 -48 48s21.5039 48 48 48z" />
<glyph glyph-name="handshake-alt-slash" unicode="&#xf95f;" horiz-adv-x="640"
d="M358.59 252.4l26.1104 23.8896c2.86914 2.62598 5.19824 7.91504 5.19824 11.8047c0 8.83398 -7.16992 16.0039 -16.0039 16.0039c-3.43164 0 -8.27246 -1.88086 -10.8047 -4.19824l-27 -24.7002l-32.6895 -29.9199l330.43 -255.38
c3.41016 -2.65234 6.17773 -8.31055 6.17773 -12.6309c0 -3.0293 -1.50879 -7.42773 -3.36816 -9.81934l-19.6396 -25.2705c-2.65234 -3.41211 -8.31152 -6.18262 -12.6338 -6.18262c-3.03125 0 -7.43359 1.51172 -9.82617 3.37305l-588.35 454.72
c-3.41016 2.65234 -6.17773 8.31055 -6.17773 12.6309c0 3.02832 1.50781 7.42773 3.36719 9.81934l19.6201 25.2695c2.65234 3.41602 8.31348 6.1875 12.6377 6.1875c3.03418 0 7.43848 -1.5127 9.83203 -3.37695l116.891 -90.3301l20.3398 20.2998
c5.16211 5.17969 15.2871 9.39551 22.5996 9.41016h83.79l-75.5996 -69.2402l25.6895 -19.8496l88.1201 80.6797c5.0625 4.63965 14.7432 8.40723 21.6104 8.41016h85.8896c7.31641 -0.0126953 17.4453 -4.22852 22.6104 -9.41016l54.5898 -54.5898h112v0
c8.78223 0 15.9502 -7.12793 16 -15.9102v-191.8c-0.0273438 -8.80469 -7.19531 -15.9727 -16 -16h-97.5898c-2.26465 12.7275 -12.2148 29.7109 -22.21 37.9102zM16 320h7.55957l382.44 -295.59l-8.7998 -10.8203c-6.15723 -7.57617 -19.0762 -13.7246 -28.8389 -13.7246
c-7.29004 0 -17.7959 3.73438 -23.4512 8.33496l-17.9102 15.5l-0.200195 -0.200195c-10.6025 -13.0381 -32.8477 -23.6201 -49.6533 -23.6201c-12.5381 0 -30.6133 6.41602 -40.3467 14.3203l-90.5 81.8896h-130.3c-8.83203 0 -16 7.16797 -16 16v191.91
c0.0273438 8.80469 7.19531 15.9727 16 16z" />
<glyph glyph-name="handshake-slash" unicode="&#xf960;" horiz-adv-x="640"
d="M0 319.79h23.8301l72.1699 -55.79v-168c0 -17.6641 -14.3359 -32 -32 -32h-64v255.79zM48 127.9c-8.83203 0 -16 -7.16797 -16 -16s7.16797 -16 16 -16s16 7.16797 16 16s-7.16797 16 -16 16zM128 96.0898v143.19l278 -214.87l-8.7998 -10.8203
c-6.15723 -7.57617 -19.0762 -13.7246 -28.8389 -13.7246c-7.29004 0 -17.7959 3.73438 -23.4512 8.33496l-17.9102 15.5l-0.200195 -0.200195c-10.6025 -13.0381 -32.8477 -23.6201 -49.6533 -23.6201c-12.5381 0 -30.6133 6.41602 -40.3467 14.3203l-90.5 81.8896
h-18.2998zM544 319.79h96v-255.89h-64c-17.6641 0 -32 14.3359 -32 32v223.89zM592 95.9004c8.83203 0 16 7.16797 16 16s-7.16797 16 -16 16s-16 -7.16797 -16 -16s7.16797 -16 16 -16zM303.33 245.33l330.5 -255.43c3.41309 -2.65234 6.18359 -8.3125 6.18359 -12.6357
c0 -3.02734 -1.50684 -7.42383 -3.36328 -9.81445l-19.6504 -25.2705c-2.65234 -3.41504 -8.31348 -6.1875 -12.6377 -6.1875c-3.03418 0 -7.43848 1.51367 -9.83203 3.37793l-588.34 454.72c-3.41016 2.65234 -6.17773 8.31055 -6.17773 12.6309
c0 3.02832 1.50781 7.42773 3.36719 9.81934l19.6201 25.2695c2.65234 3.41602 8.31348 6.1875 12.6377 6.1875c3.03418 0 7.43848 -1.5127 9.83203 -3.37695l116.891 -90.3398l20.3398 20.3096c5.16211 5.17969 15.2871 9.39551 22.5996 9.41016h83.79l-75.5996 -69.2402
l25.6396 -19.8096l88.0703 80.6396c5.05566 4.64258 14.7305 8.41016 21.5947 8.41016h0.00488281h85.9004h0.0351562c7.31055 0 17.4199 -4.21582 22.5645 -9.41016l54.6104 -54.5898v-193.5c-2.02246 2.29102 -5.56641 5.74023 -7.91016 7.7002l-145.59 118.2
l26.0898 23.8896c2.73828 2.61035 4.95996 7.79883 4.95996 11.5811c0 8.83203 -7.16797 16 -16 16c-3.32422 0 -8.05078 -1.7793 -10.5498 -3.9707z" />
<glyph glyph-name="head-side-cough" unicode="&#xf961;" horiz-adv-x="640"
d="M616 144c-13.248 0 -24 10.752 -24 24s10.752 24 24 24s24 -10.752 24 -24s-10.752 -24 -24 -24zM552 32c13.248 0 24 -10.752 24 -24s-10.752 -24 -24 -24s-24 10.752 -24 24s10.752 24 24 24zM488 88c13.248 0 24 -10.752 24 -24s-10.752 -24 -24 -24
s-24 10.752 -24 24s10.752 24 24 24zM616 -16c13.248 0 24 -10.752 24 -24s-10.752 -24 -24 -24s-24 10.752 -24 24s10.752 24 24 24zM616 88c13.248 0 24 -10.752 24 -24s-10.752 -24 -24 -24s-24 10.752 -24 24s10.752 24 24 24zM552 128c13.248 0 24 -10.752 24 -24
s-10.752 -24 -24 -24s-24 10.752 -24 24s10.752 24 24 24zM477.22 173c1.52344 -3.42676 2.75977 -9.25 2.75977 -13c0 -17.6523 -14.3271 -31.9883 -31.9795 -32h-32v-32h-96c-17.6641 0 -32 -14.3359 -32 -32s14.3359 -32 32 -32h96c0 -35.3281 -28.6719 -64 -64 -64h-64
v-32h-224v177.12c-39.25 35.2598 -64 86.1299 -64 142.88c0 106 86 192 192 192h42.0996c59.5439 -0.0390625 135.704 -39.5752 170 -88.25c24.6201 -35 52.1201 -139.63 73.1201 -186.75zM288 224c17.626 0.0380859 31.9619 14.374 32 32c0 17.6641 -14.3359 32 -32 32
s-32 -14.3359 -32 -32s14.3359 -32 32 -32z" />
<glyph glyph-name="head-side-cough-slash" unicode="&#xf962;" horiz-adv-x="640"
d="M454.11 128.79l179.72 -138.89c3.41016 -2.65234 6.17773 -8.31055 6.17773 -12.6309c0 -3.0293 -1.50879 -7.42773 -3.36816 -9.81934l-19.6396 -25.2705c-2.65234 -3.41504 -8.31348 -6.1875 -12.6377 -6.1875c-3.03418 0 -7.43848 1.51367 -9.83203 3.37793
l-588.351 454.72c-3.41016 2.65234 -6.17773 8.31055 -6.17773 12.6309c0 3.02832 1.50879 7.42773 3.36816 9.81934l19.6299 25.2695c2.65234 3.41309 8.31152 6.18262 12.6338 6.18262c3.03125 0 7.43359 -1.51074 9.82617 -3.37207l38.7197 -29.9199
c26.8672 18.3818 75.0928 33.2998 107.646 33.2998h0.173828h42.0996c59.5439 -0.0390625 135.704 -39.5752 170 -88.25c24.6201 -35 52.1201 -139.63 73.1201 -186.75c8.51074 -19.21 -3.5498 -40.4004 -23.1094 -44.21zM313.39 237.55
c3.85059 5.28027 6.61035 11.4502 6.58008 18.4502c-0.0322266 17.6309 -14.3691 31.9668 -32 32c-9.92969 0 -18.4795 -4.86035 -24.3594 -12zM616 144c-13.248 0 -24 10.752 -24 24s10.752 24 24 24s24 -10.752 24 -24s-10.752 -24 -24 -24zM552 80
c-13.248 0 -24 10.752 -24 24s10.752 24 24 24s24 -10.752 24 -24s-10.752 -24 -24 -24zM288 64c0 -17.6641 14.3359 -32 32 -32h96c0 -35.3281 -28.6719 -64 -64 -64h-64v-32h-224v177.12c-39.25 35.2598 -64 86.1299 -64 142.88
c0.0126953 25.2188 9.2998 63.9307 20.7305 86.4102l318.81 -246.41h-19.54c-17.6641 0 -32 -14.3359 -32 -32zM616 88c13.248 0 24 -10.752 24 -24s-10.752 -24 -24 -24s-24 10.752 -24 24s10.752 24 24 24z" />
<glyph glyph-name="head-side-mask" unicode="&#xf963;"
d="M0.150391 263.58c0.364258 7.85059 1.94043 20.4707 3.51953 28.1699l220.33 -160.26v-195.49h-160v177.12c-41 36.8203 -66.1699 90.6699 -63.8496 150.46zM509.22 173c1.40625 -3.27148 2.54688 -8.81543 2.54688 -12.376
c0 -0.171875 -0.00292969 -0.452148 -0.00683594 -0.624023h-272.55l-225.96 164.35c29.2305 73.0801 103.75 123.65 186.75 123.65h66.1104c59.541 -0.0390625 135.697 -39.5752 169.989 -88.25c24.6201 -35 52.1201 -139.63 73.1201 -186.75zM320 224
c17.626 0.0380859 31.9619 14.374 32 32c0 17.6641 -14.3359 32 -32 32s-32 -14.3359 -32 -32s14.3359 -32 32 -32zM336 80c-8.83203 0 -16 -7.16797 -16 -16s7.16797 -16 16 -16h149.34l-10.6699 -32h-138.67c-8.83203 0 -16 -7.16797 -16 -16s7.16797 -16 16 -16h128
l-1.41016 -4.24023c-8.05176 -24.1533 -35.25 -43.7578 -60.71 -43.7598h-145.88v192h256l-16 -48h-160z" />
<glyph glyph-name="head-side-virus" unicode="&#xf964;"
d="M272 208c8.83203 0 16 -7.16797 16 -16s-7.16797 -16 -16 -16s-16 7.16797 -16 16s7.16797 16 16 16zM208 272c8.83203 0 16 -7.16797 16 -16s-7.16797 -16 -16 -16s-16 7.16797 -16 16s7.16797 16 16 16zM509.2 173c1.52344 -3.42676 2.75977 -9.25 2.75977 -13
c0 -17.6416 -14.3184 -31.9775 -31.96 -32h-32v-64c0 -35.3281 -28.6719 -64 -64 -64h-64v-64h-256v177.19c-35.3281 31.4834 -64 95.4414 -64 142.763v0.046875c0 106 86 192 192 192h74.0898h0.0214844c59.5684 0 135.736 -39.5361 170.019 -88.25
c24.6396 -35.0195 52.1396 -139.63 73.0703 -186.75zM368 208c8.83203 0 16 7.16797 16 16s-7.16797 16 -16 16h-12.1201c-28.5098 0 -42.79 34.4697 -22.6299 54.6299l8.58008 8.57031c2.58691 2.58691 4.68652 7.65625 4.68652 11.3145
c0 8.83301 -7.16895 16.002 -16.002 16.002c-3.6582 0 -8.72754 -2.09961 -11.3145 -4.68652l-8.57031 -8.58008c-20.1602 -20.1602 -54.6299 -5.87988 -54.6299 22.6299v12.1201c0 8.83203 -7.16797 16 -16 16s-16 -7.16797 -16 -16v-12.1201
c0 -28.5098 -34.4697 -42.79 -54.6299 -22.6299l-8.57031 8.58008c-2.58691 2.58691 -7.65625 4.68652 -11.3145 4.68652c-8.83301 0 -16.002 -7.16895 -16.002 -16.002c0 -3.6582 2.09961 -8.72754 4.68652 -11.3145l8.58008 -8.57031
c20.1602 -20.1602 5.87988 -54.6299 -22.6299 -54.6299h-12.1201c-8.83203 0 -16 -7.16797 -16 -16s7.16797 -16 16 -16h12.1201c28.5098 0 42.79 -34.4697 22.6299 -54.6299l-8.58008 -8.57031c-2.58691 -2.58691 -4.68652 -7.65625 -4.68652 -11.3145
c0 -8.83301 7.16895 -16.002 16.002 -16.002c3.6582 0 8.72754 2.09961 11.3145 4.68652l8.57031 8.58008c20.1602 20.1602 54.6299 5.87988 54.6299 -22.6299v-12.1201c0 -8.83203 7.16797 -16 16 -16s16 7.16797 16 16v12.1201c0 28.5098 34.4697 42.79 54.6299 22.6299
l8.57031 -8.58008c2.58691 -2.58691 7.65625 -4.68652 11.3145 -4.68652c8.83301 0 16.002 7.16895 16.002 16.002c0 3.6582 -2.09961 8.72754 -4.68652 11.3145l-8.58008 8.57031c-20.1602 20.1602 -5.87988 54.6299 22.6299 54.6299h12.1201z" />
<glyph glyph-name="house-user" unicode="&#xf965;" horiz-adv-x="576"
d="M570.69 211.73c2.54004 -2.81152 4.91895 -8.15137 5.30957 -11.9209c-0.319336 -3.25977 -2.15234 -8.04883 -4.08984 -10.6895l-21.4102 -23.8105c-2.7959 -2.53809 -8.11426 -4.91699 -11.8701 -5.30957c-3.2666 0.334961 -8.06934 2.18066 -10.7197 4.12012
l-15.9102 14v-210.12c0 -17.6641 -14.3359 -32 -32 -32h-383.91c-17.6641 0 -32 14.3359 -32 32v210.11l-15.8994 -14c-2.63965 -1.94336 -7.42871 -3.78418 -10.6904 -4.11035c-3.78906 0.381836 -9.16504 2.75586 -12 5.2998l-21.4102 23.79
c-2.08398 2.59082 -3.91602 7.38965 -4.08984 10.71c0.200195 3.83789 2.55664 9.16895 5.25977 11.9004l256 226c6.28027 5.68945 18.21 10.2998 26.7402 10.2998s20.5 -4.61035 26.7803 -10.2998l101.22 -89.3701v51.6699c0 8.83203 7.16797 16 16 16h64
c8.83203 0 16 -7.16797 16 -16v-136.44zM288 272c-35.3281 0 -64 -28.6719 -64 -64s28.6719 -64 64 -64s64 28.6719 64 64s-28.6719 64 -64 64zM400 0c8.83203 0 16 7.16797 16 16c0 52.9922 -43.0078 96 -96 96h-64c-52.9922 0 -96 -43.0078 -96 -96
c0 -8.83203 7.16797 -16 16 -16h224z" />
<glyph glyph-name="laptop-house" unicode="&#xf966;" horiz-adv-x="640"
d="M272 160v-128h-176c-17.6641 0 -32 14.3359 -32 32v164.12l-21.6602 -19.1201c-2.27344 -1.77637 -6.45801 -3.33594 -9.33984 -3.48047c-3.45117 0.183594 -8.22754 2.3252 -10.6602 4.78027l-18.79 21.3105c-1.8125 2.27637 -3.40332 6.4834 -3.5498 9.38965
c0.194336 3.42871 2.33594 8.16797 4.78027 10.5801l211.8 187.5c5.54004 4.91992 16.0703 8.91992 23.4697 8.91992c7.40039 0 17.9502 -4 23.4502 -8.91992l88.5 -78.3799v39.2998c0 8.83203 7.16797 16 16 16h32c8.83203 0 16 -7.16797 16 -16v-96l59.25 -52.3896
c2.42773 -2.42871 4.55566 -7.18164 4.75 -10.6104c-0.15332 -2.93457 -1.77051 -7.17773 -3.61035 -9.46973l-6.64941 -7.53027h-136.94c-17.7998 0 -33.6895 -8.24023 -44.7998 -21.1201v37.1201c0 8.83203 -7.16797 16 -16 16h-64c-8.83203 0 -16 -7.16797 -16 -16v-64
c0 -8.83203 7.16797 -16 16 -16h64zM629.33 0c5.88965 0 10.6699 -4.78027 10.6699 -10.6699v-10.6602c-0.0820312 -23.4336 -19.167 -42.5498 -42.5996 -42.6699h-298.801c-23.4326 0.120117 -42.5176 19.2363 -42.5996 42.6699v10.6602
c0 5.88965 4.78027 10.6699 10.6699 10.6699v0h37.3301v160c0 17.6699 12.8896 32 28.7998 32h230.4c15.9102 0 28.7998 -14.3301 28.7998 -32v-160h37.3301zM544 0v144h-192v-144h192z" />
<glyph glyph-name="lungs-virus" unicode="&#xf967;" horiz-adv-x="640"
d="M344 297.32c-6.11035 3.6875 -16.8623 6.68066 -24 6.68066s-17.8896 -2.99316 -24 -6.68066v134.68c0 8.83203 7.16797 16 16 16h16c8.83203 0 16 -7.16797 16 -16v-134.68zM195.54 3.54004c7.55664 -7.76367 22.4814 -14.0645 33.3154 -14.0645
c2.33594 0 6.09668 0.342773 8.39453 0.764648c-11.2559 -14.4775 -34.7754 -30.0459 -52.5 -34.75l-59.5 -15.8701c-62.75 -16.8799 -125.25 27.3799 -125.25 88.6299v0.241211c0 8.25 1.73828 21.4121 3.87988 29.3789c18.2109 68.1455 63.9072 171.634 102 231
c22.1201 34.6299 36.1201 63.1299 80.1201 63.1299c38.6201 0 70 -29.3799 70 -65.75v-27.6797c-6.68359 4.46582 -18.6309 8.08984 -26.6689 8.08984c-26.4961 0 -48 -21.5039 -48 -48c0 -11.043 6.36523 -26.3154 14.209 -34.0898l8.58008 -8.57031h-12.1201
c-26.4961 0 -48 -21.5039 -48 -48s21.5039 -48 48 -48h12.1201l-8.58008 -8.58008c-7.74609 -7.76562 -14.0332 -22.9707 -14.0332 -33.9395c0 -10.9697 6.28711 -26.1748 14.0332 -33.9404zM421.83 26.1699c-2.58691 -2.58789 -7.65625 -4.6875 -11.3154 -4.6875
c-3.6582 0 -8.72754 2.09961 -11.3145 4.6875l-8.57031 8.57031c-20.1602 20.1602 -54.6299 5.87988 -54.6299 -22.6201v-12.1201c0 -8.83203 -7.16797 -16 -16 -16s-16 7.16797 -16 16v12.1201c0 28.5 -34.4697 42.7803 -54.6299 22.6201l-8.57031 -8.57031
c-2.60156 -2.67969 -7.74512 -4.85547 -11.4805 -4.85547c-8.83203 0 -16 7.16797 -16 16c0 3.7334 2.17285 8.87402 4.85059 11.4756l8.58008 8.58008c20.1602 20.1602 5.87988 54.6299 -22.6299 54.6299h-12.1201c-8.83203 0 -16 7.16797 -16 16s7.16797 16 16 16h12.1201
c28.5098 0 42.79 34.4697 22.6299 54.6201l-8.58008 8.58008c-2.58691 2.58691 -4.68652 7.65625 -4.68652 11.3145c0 8.83301 7.16895 16.002 16.002 16.002c3.6582 0 8.72754 -2.09961 11.3145 -4.68652l8.57031 -8.58008
c20.1602 -20.1602 54.6299 -5.87988 54.6299 22.6299v12.1201c0 8.83203 7.16797 16 16 16s16 -7.16797 16 -16v-12.1201c0 -28.5098 34.4697 -42.79 54.6299 -22.6299l8.57031 8.58008c2.58691 2.58691 7.65625 4.68652 11.3145 4.68652
c8.83301 0 16.002 -7.16895 16.002 -16.002c0 -3.6582 -2.09961 -8.72754 -4.68652 -11.3145l-8.58008 -8.58008c-20.1602 -20.1504 -5.87988 -54.6201 22.6299 -54.6201h12.1201c8.83203 0 16 -7.16797 16 -16s-7.16797 -16 -16 -16h-12.1201
c-28.5098 0 -42.79 -34.4697 -22.6299 -54.6299l8.58008 -8.58008c2.58496 -2.58691 4.68262 -7.65332 4.68262 -11.3096c0 -3.65723 -2.09766 -8.72363 -4.68262 -11.3105zM288 144c8.83203 0 16 7.16797 16 16s-7.16797 16 -16 16s-16 -7.16797 -16 -16
s7.16797 -16 16 -16zM352 80c8.83203 0 16 7.16797 16 16s-7.16797 16 -16 16s-16 -7.16797 -16 -16s7.16797 -16 16 -16zM636.12 57.8701c2.1416 -7.9668 3.87988 -21.1289 3.87988 -29.3789v-0.241211c0 -61.25 -62.5 -105.51 -125.25 -88.6299l-59.5 15.8701
c-17.7246 4.7041 -41.2441 20.2725 -52.5 34.75c2.32812 -0.421875 6.1377 -0.764648 8.50391 -0.764648c26.3311 0 47.7002 21.3701 47.7002 47.7002c0 11.1445 -6.49316 26.4863 -14.4941 34.2441l-8.58008 8.58008h12.1201c26.4961 0 48 21.5039 48 48
s-21.5039 48 -48 48h-12.1201l8.58008 8.53027c7.84375 7.77441 14.209 23.0469 14.209 34.0898c0 26.4961 -21.5039 48 -48 48c-8.03809 0 -19.9854 -3.62402 -26.6689 -8.08984v27.7197c0 36.3701 31.3799 65.75 70 65.75c44 0 58 -28.5 80.1201 -63.1299
c38.0928 -59.3662 83.7891 -162.854 102 -231z" />
<glyph glyph-name="people-arrows" unicode="&#xf968;" horiz-adv-x="576"
d="M96 320c-35.3281 0 -64 28.6719 -64 64s28.6719 64 64 64s64 -28.6719 64 -64s-28.6719 -64 -64 -64zM96 143.92v-0.118164c0 -10.4102 6.11035 -24.6934 13.6396 -31.8818l50.3604 -47.5303v-96.3896c0 -17.6641 -14.3359 -32 -32 -32h-64
c-17.6641 0 -32 14.3359 -32 32v128c-17.6641 0 -32 14.3359 -32 32v96c0 35.3281 28.6719 64 64 64h64c23.9707 -0.0224609 50.5732 -18.1357 59.3799 -40.4297c-1.83984 -1.26074 -3.95996 -2.02051 -5.61035 -3.57031l-72.1299 -68.0801
c-7.5293 -7.19336 -13.6396 -21.4814 -13.6396 -31.8945v-0.105469zM480 320c-35.3281 0 -64 28.6719 -64 64s28.6719 64 64 64s64 -28.6719 64 -64s-28.6719 -64 -64 -64zM512 288c35.3281 0 64 -28.6719 64 -64v-96c0 -17.6641 -14.3359 -32 -32 -32v-128
c0 -17.6641 -14.3359 -32 -32 -32h-64c-17.6641 0 -32 14.3359 -32 32v96.3799l50.3604 47.5498c7.52539 7.22949 13.6338 21.5654 13.6338 32c0 10.4355 -6.1084 24.7715 -13.6338 32l-72.1201 68.0605c-1.62012 1.58984 -3.78027 2.31934 -5.62012 3.58984
c8.80957 22.291 35.4111 40.3984 59.3799 40.4199h64zM444.4 152.66c1.98633 -2.00195 3.59863 -5.91504 3.59863 -8.73535s-1.6123 -6.7334 -3.59863 -8.73438l-72.1201 -68.0703c-1.91895 -1.83008 -5.62891 -3.31445 -8.28027 -3.31445c-6.62402 0 -12 5.37598 -12 12
v0.0546875v36.1396h-128v-36.1396v-0.0546875c0 -6.62402 -5.37598 -12 -12 -12c-2.65137 0 -6.36133 1.48438 -8.28027 3.31445l-72.1201 68.0703c-1.98633 2.00098 -3.59863 5.91406 -3.59863 8.73438s1.6123 6.7334 3.59863 8.73535l72.1201 68.0703
c1.91895 1.8291 5.62891 3.31348 8.28027 3.31348c6.62402 0 12 -5.37598 12 -12v-0.0439453v-36h128v36v0.0341797c0 6.62402 5.37598 12 12 12c2.65137 0 6.36133 -1.48438 8.28027 -3.31445z" />
<glyph glyph-name="plane-slash" unicode="&#xf969;" horiz-adv-x="640"
d="M32.4805 300.12c-0.21875 0.947266 -0.396484 2.50586 -0.396484 3.47852c0 2.40137 1.01465 6.0127 2.26562 8.06152l324.841 -251.061l-66.6006 -116.54c-2.54297 -4.44824 -8.76562 -8.05957 -13.8896 -8.05957h-65.5
c-8.81543 0.0166016 -15.9697 7.18457 -15.9697 16c0 1.24121 0.277344 3.2168 0.619141 4.41016l49 171.59h-102.85l-43.2002 -57.5898c-2.64746 -3.53613 -8.38184 -6.4082 -12.7998 -6.41016h-40c-8.8291 0.00292969 -15.9951 7.1709 -15.9951 16
c0 1.08398 0.212891 2.81836 0.475586 3.87012l31.5195 108.13zM633.82 -10.0898c3.41602 -2.65234 6.18848 -8.31445 6.18848 -12.6387c0 -3.03027 -1.50879 -7.42969 -3.36914 -9.82129l-19.6396 -25.2598c-2.65234 -3.41699 -8.31445 -6.18945 -12.6387 -6.18945
c-3.03027 0 -7.42969 1.50977 -9.82129 3.36914l-588.36 454.72c-3.41211 2.65234 -6.18262 8.3125 -6.18262 12.6338c0 3.03223 1.51172 7.43359 3.37305 9.82617l19.6299 25.2598c2.65234 3.41309 8.31152 6.18262 12.6338 6.18262
c3.03125 0 7.43359 -1.51074 9.82617 -3.37207l189.3 -146.3l-36.9395 129.29c-0.338867 1.1875 -0.614258 3.1543 -0.614258 4.38965c0 8.8291 7.16504 15.9971 15.9941 16h65.5098c5.12988 0 11.3496 -3.61035 13.9004 -8.05957l105.09 -183.94h114.3
c35.3398 0 96 -28.6602 96 -64s-60.6602 -64 -96 -64h-56.8604z" />
<glyph glyph-name="pump-medical" unicode="&#xf96a;" horiz-adv-x="384"
d="M235.51 288.18c32.2471 -0.00195312 60.7979 -26.0664 63.7305 -58.1797l20.3701 -224c0.145508 -1.59766 0.262695 -4.19629 0.262695 -5.7998c0 -35.3242 -28.6689 -63.9961 -63.9932 -64h-192h-0.00292969c-35.3281 0 -64 28.6719 -64 64
c0 1.60352 0.117188 4.20215 0.262695 5.7998l20.3701 224c2.93262 32.1133 31.4834 58.1777 63.7305 58.1797h151.27zM239.88 114.85v26.6602c0 7.36426 -5.97656 13.3398 -13.3398 13.3398v0h-40v40c0 7.3584 -5.97168 13.3301 -13.3301 13.3301v0h-26.6699
c-7.3584 0 -13.3301 -5.97168 -13.3301 -13.3301v-40h-40c-7.3584 0 -13.3301 -5.97168 -13.3301 -13.3301v-0.00976562v-26.6602c0 -7.35742 5.97168 -13.334 13.3301 -13.3398h40v-40c0 -7.3584 5.97168 -13.3301 13.3301 -13.3301v0h26.6699
c7.3584 0 13.3301 5.97168 13.3301 13.3301v40h40c7.3584 0.00585938 13.334 5.98242 13.3398 13.3398zM379.19 354.12c2.58691 -2.58691 4.6875 -7.65625 4.6875 -11.3154c0 -3.6582 -2.10059 -8.72754 -4.6875 -11.3145l-22.6201 -22.6201
c-2.58691 -2.58789 -7.65625 -4.6875 -11.3154 -4.6875s-8.72754 2.09961 -11.3145 4.6875l-43.3105 43.3096h-66.75v-32h-128v96c0 17.6641 14.3359 32 32 32h64c17.6641 0 32 -14.3359 32 -32h66.75c14.6279 -0.00195312 34.8955 -8.39746 45.2402 -18.7393z" />
<glyph glyph-name="pump-soap" unicode="&#xf96b;" horiz-adv-x="384"
d="M235.63 288c32.2637 0 60.8311 -26.0781 63.75 -58.21l20.3604 -224c0.144531 -1.59473 0.262695 -4.18848 0.262695 -5.79004c0 -35.3281 -28.6729 -64 -64 -64h-0.00292969h-192c-35.3242 0.00390625 -63.9922 28.6758 -63.9922 64
c0 1.60156 0.117188 4.19531 0.261719 5.79004l20.3604 224c2.91895 32.1318 31.4736 58.21 63.7373 58.21h0.00292969h151.26zM160 32c33.1201 0 60 26.3301 60 58.7305c0 25 -35.6699 75.4697 -52 97.2695c-1.65625 2.21387 -5.24316 4.00977 -8.00781 4.00977
c-2.75586 0 -6.33594 -1.78711 -7.99219 -3.99023c-16.2998 -21.7998 -52 -72.2695 -52 -97.2695c0 -32.4199 26.8799 -58.75 60 -58.75zM379.31 353.94c2.58789 -2.58691 4.68848 -7.65625 4.68848 -11.3154s-2.10059 -8.72852 -4.68848 -11.3154l-22.6191 -22.6191
c-2.58691 -2.58789 -7.65625 -4.68848 -11.3154 -4.68848s-8.72852 2.10059 -11.3154 4.68848l-43.3096 43.3096h-66.75v-32h-128v96c0 17.6641 14.3359 32 32 32h64c17.6641 0 32 -14.3359 32 -32h66.75v0c14.6309 0 34.9033 -8.39551 45.25 -18.7402z" />
<glyph glyph-name="shield-virus" unicode="&#xf96c;"
d="M224 256c8.83203 0 16 -7.16797 16 -16s-7.16797 -16 -16 -16s-16 7.16797 -16 16s7.16797 16 16 16zM466.5 364.32c16.2842 -6.80176 29.5 -26.6445 29.5 -44.292v-0.0283203c0 -221.3 -135.91 -344.61 -221.59 -380.32
c-4.89062 -2.03223 -13.1592 -3.68164 -18.4551 -3.68164c-5.29688 0 -13.5645 1.64941 -18.4551 3.68164c-107 44.6006 -221.5 181.82 -221.5 380.32v0.0478516c0 17.6787 13.2559 37.5176 29.5898 44.2822l192 80c4.92676 1.85938 13.1973 3.50391 18.46 3.66992
c5.26074 -0.169922 13.5264 -1.81836 18.4502 -3.67969zM384 192c8.83203 0 16 7.16797 16 16s-7.16797 16 -16 16h-12.1201c-28.5098 0 -42.79 34.4697 -22.6299 54.6299l8.58008 8.57031c2.58691 2.58691 4.68652 7.65625 4.68652 11.3145
c0 8.83301 -7.16895 16.002 -16.002 16.002c-3.6582 0 -8.72754 -2.09961 -11.3145 -4.68652l-8.57031 -8.58008c-20.1602 -20.1602 -54.6299 -5.87988 -54.6299 22.6299v12.1201c0 8.83203 -7.16797 16 -16 16s-16 -7.16797 -16 -16v-12.1201
c0 -28.5098 -34.4697 -42.79 -54.6299 -22.6299l-8.57031 8.58008c-2.58691 2.58691 -7.65625 4.68652 -11.3145 4.68652c-8.83301 0 -16.002 -7.16895 -16.002 -16.002c0 -3.6582 2.09961 -8.72754 4.68652 -11.3145l8.58008 -8.57031
c20.1602 -20.1602 5.87988 -54.6299 -22.6299 -54.6299h-12.1201c-8.83203 0 -16 -7.16797 -16 -16s7.16797 -16 16 -16h12.1201c28.5098 0 42.79 -34.4697 22.6299 -54.6299l-8.58008 -8.57031c-2.58691 -2.58691 -4.68652 -7.65625 -4.68652 -11.3145
c0 -8.83301 7.16895 -16.002 16.002 -16.002c3.6582 0 8.72754 2.09961 11.3145 4.68652l8.57031 8.58008c20.1602 20.1602 54.6299 5.87988 54.6299 -22.6299v-12.1201c0 -8.83203 7.16797 -16 16 -16s16 7.16797 16 16v12.1201c0 28.5098 34.4697 42.79 54.6299 22.6299
l8.57031 -8.58008c2.58691 -2.58691 7.65625 -4.68652 11.3145 -4.68652c8.83301 0 16.002 7.16895 16.002 16.002c0 3.6582 -2.09961 8.72754 -4.68652 11.3145l-8.58008 8.57031c-20.1602 20.1602 -5.87988 54.6299 22.6299 54.6299h12.1201zM288 192
c8.83203 0 16 -7.16797 16 -16s-7.16797 -16 -16 -16s-16 7.16797 -16 16s7.16797 16 16 16z" />
<glyph glyph-name="soap" unicode="&#xf96e;"
d="M416 256c52.9922 0 96 -43.0078 96 -96v-128c0 -52.9922 -43.0078 -96 -96 -96h-320c-52.9922 0 -96 43.0078 -96 96v128c0 52.9922 43.0078 96 96 96h128c0.0517578 -20.3193 11.2119 -48.9912 24.9102 -64h-88.9102c-52.9922 0 -96 -43.0078 -96 -96
s43.0078 -96 96 -96h192h0.206055c52.8809 0 95.7998 42.918 95.7998 95.7998c0 36.9893 -28.2002 77.3047 -62.9463 89.9902c17.0488 15.6279 30.9092 47.082 30.9404 70.21zM320 192c-35.3281 0 -64 28.6719 -64 64s28.6719 64 64 64s64 -28.6719 64 -64
s-28.6719 -64 -64 -64zM208 352c-26.4961 0 -48 21.5039 -48 48s21.5039 48 48 48s48 -21.5039 48 -48s-21.5039 -48 -48 -48zM384 384c-17.6641 0 -32 14.3359 -32 32s14.3359 32 32 32s32 -14.3359 32 -32s-14.3359 -32 -32 -32zM160 160h192
c35.3281 0 64 -28.6719 64 -64s-28.6719 -64 -64 -64h-192c-35.3281 0 -64 28.6719 -64 64s28.6719 64 64 64z" />
<glyph glyph-name="stopwatch-20" unicode="&#xf96f;" horiz-adv-x="448"
d="M398.5 257.09c18.4922 -28.3281 33.501 -78.7754 33.501 -112.605c0 -0.133789 -0.000976562 -0.350586 -0.000976562 -0.484375c0 -116 -94.8701 -209.77 -211.28 -208c-113.96 1.78027 -208.08 100.5 -204.63 214.43c2.92773 95.2598 81.7354 184.443 175.91 199.07
v34.5h-32c-8.80469 0.0273438 -15.9727 7.19531 -16 16v32c0.0273438 8.80469 7.19531 15.9727 16 16h128c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32v-34.5c30.8857 -4.76953 75.5469 -24.7461 99.6904 -44.5898l24.6797 24.6797
c2.58691 2.58789 7.65625 4.6875 11.3145 4.6875c3.65918 0 8.72852 -2.09961 11.3154 -4.6875l22.6797 -22.6797c2.58789 -2.58691 4.6875 -7.65625 4.6875 -11.3154c0 -3.6582 -2.09961 -8.72754 -4.6875 -11.3145l-26.5898 -26.5801zM204.37 70.4502l-49.1299 0.0400391
c1.7998 15.6299 14.8496 36.2002 26.4102 51.2002c21.9092 30.0996 34.3496 45.7295 34.3496 81.3096c0 35.1504 -12.5703 61 -55.5703 61c-47.9492 0 -56.4297 -32.9404 -56.4297 -60.2402v-4.06934c0.0703125 -4.45605 3.74316 -8.07129 8.19922 -8.07129
c0.0361328 0 0.0947266 0 0.130859 0.000976562h24.9004c0.0361328 -0.000976562 0.0947266 -0.000976562 0.130859 -0.000976562c4.45508 0 8.12891 3.61523 8.19824 8.07129v5.22949c0 15.2803 3.30078 22.6797 12.6904 22.6797c10.4199 0 12.21 -7.34961 12.21 -24.2695
c0 -25.0205 -6.67969 -33.1504 -27.0996 -62.3398c-23.7803 -33.96 -35.6699 -56.1504 -38.4502 -91.3701c-0.0224609 -0.320312 -0.0410156 -0.84082 -0.0410156 -1.16113c0 -9.08594 7.37402 -16.46 16.46 -16.46c0.0527344 0 0.137695 0 0.19043 0.000976562h82.8506
c0.0332031 -0.000976562 0.0878906 -0.000976562 0.121094 -0.000976562c4.45508 0 8.12891 3.61621 8.19922 8.07129v22.3096c-0.0703125 4.45508 -3.74414 8.07129 -8.19922 8.07129c-0.0332031 0 -0.0878906 -0.000976562 -0.121094 -0.000976562zM344 95.6797v107.021
c0 38.6602 -19 61.2998 -55.7998 61.2998c-36.6201 0 -56.2002 -22.4902 -56.2002 -63.2197v-105.33c0 -33.9307 11.1904 -63.4502 54.7695 -63.4502c44.9307 0 57.2305 28.5195 57.2305 63.6797zM287.87 226.27c10.0098 0 13.0195 -8.05957 13 -19.3291v-115.94
c0 -13.2695 -3.36035 -21.2695 -13 -21.2695s-13.2305 7.47949 -13.2305 20.5898v115.949c0 12.5 3.82031 20 13.2305 20z" />
<glyph glyph-name="store-alt-slash" unicode="&#xf970;" horiz-adv-x="640"
d="M17.8896 324.38l88.4707 -68.3799h-74.2607c-25.5898 0 -40.79 28.5 -26.5898 49.7998zM576 34.5801l57.8301 -44.6797c3.41016 -2.65234 6.17773 -8.31055 6.17773 -12.6309c0 -3.0293 -1.50879 -7.42773 -3.36816 -9.81934l-19.6396 -25.2598
c-2.65234 -3.41895 -8.31543 -6.19434 -12.6426 -6.19434c-3.03223 0 -7.43457 1.51172 -9.82715 3.37402l-588.351 454.72c-3.41016 2.65234 -6.17773 8.31055 -6.17773 12.6309c0 3.02832 1.50879 7.42773 3.36816 9.81934l19.6299 25.2695
c2.65234 3.41309 8.31152 6.18262 12.6338 6.18262c3.03125 0 7.43359 -1.51074 9.82617 -3.37207l34.6904 -26.8203l10.6592 16c5.22266 7.83887 17.1045 14.2002 26.5234 14.2002h0.0869141h405.18h0.0117188c9.45117 0 21.4082 -6.36133 26.6885 -14.2002l85.29 -128
c14.1104 -21.2998 -1.08984 -49.7998 -26.5898 -49.7998h-318.48l41.4004 -32h53.0801v-41l128 -99v140h64v-189.42zM320 64v26.8799l64 -49.4697v-73.4102c0 -17.6641 -14.3359 -32 -32 -32h-256c-17.6641 0 -32 14.3359 -32 32v256h64v-160h192z" />
<glyph glyph-name="store-slash" unicode="&#xf971;" horiz-adv-x="640"
d="M121.51 64h226.91l157.33 -128h-414.52c-16.8105 0 -30.4004 14.2998 -30.4004 32v196.8c4.23047 -1.29297 11.2109 -2.90625 15.5801 -3.59961c4.69629 -0.660156 12.3574 -1.19727 17.0996 -1.2002c7.85352 0.12793 20.3975 1.83008 28 3.7998v-99.7998z
M93.5098 192.09h-0.21875c-3.54883 0 -9.28418 0.385742 -12.8008 0.860352c-58.9404 8.46973 -87.0098 81.6094 -56.4902 135l133.51 -108.62c-16.71 -16.5205 -38.8994 -27.2402 -64 -27.2402zM602.13 -10.0898c3.24316 -2.74219 5.875 -8.41406 5.875 -12.6611
c0 -2.99414 -1.43555 -7.38379 -3.20508 -9.79883l-18.6602 -25.2598c-2.42383 -3.41309 -7.78906 -6.18359 -11.9756 -6.18359c-2.91602 0 -7.10645 1.50684 -9.35449 3.36328l-558.939 454.72c-3.24316 2.74219 -5.875 8.41406 -5.875 12.6611
c0 2.99414 1.43555 7.38379 3.20508 9.79883l18.6602 25.2598c2.42188 3.41211 7.78516 6.18164 11.9697 6.18164c2.91797 0 7.11133 -1.51074 9.36035 -3.37109l33.6895 -27.4004l9.38965 15.7803c4.74609 8.18066 16.2734 14.9014 25.7305 15h383.81
c9.46289 -0.09375 20.9941 -6.81445 25.7402 -15l61.6602 -103.6c31.9404 -53.6006 3.59961 -127.99 -56.0596 -136.4c-3.57129 -0.5 -9.39453 -0.907227 -13 -0.910156c-28.0303 0 -52.9199 13 -70.1104 33.1104c-17.1104 -20.1104 -42 -33.1104 -70.1104 -33.1104
c-7.18164 0.106445 -18.5654 1.96094 -25.4102 4.14062l137.82 -112.11v79.6797c7.59863 -2.00586 20.1426 -3.70898 28 -3.7998c4.79492 0.00585938 12.541 0.542969 17.29 1.2002c4.38281 0.625 11.3584 2.2373 15.5703 3.59961v-130.21z" />
<glyph glyph-name="toilet-paper-slash" unicode="&#xf972;" horiz-adv-x="640"
d="M64 256c0 10.8096 0.530273 21.3398 1.41992 31.6699l316 -244.25c-4.17969 -32.2002 -12.8701 -57.7197 -22.1797 -85.5498c-3.98926 -12.0723 -17.5459 -21.8701 -30.2607 -21.8701h-0.119141h-280.86c-8.78906 0.0429688 -15.9209 7.21094 -15.9209 16
c0 1.41504 0.358398 3.65527 0.800781 5c21.3701 64.1201 31.1201 85.75 31.1201 126.87v172.13zM633.82 -10.0898c3.41602 -2.65234 6.18848 -8.31445 6.18848 -12.6387c0 -3.03027 -1.50879 -7.42969 -3.36914 -9.82129l-19.6396 -25.2598
c-2.65234 -3.41699 -8.31445 -6.18945 -12.6387 -6.18945c-3.03027 0 -7.42969 1.50977 -9.82129 3.36914l-588.36 454.72c-3.41211 2.65234 -6.18262 8.3125 -6.18262 12.6338c0 3.03223 1.51172 7.43359 3.37305 9.82617l19.6299 25.2598
c2.65234 3.41309 8.31152 6.18262 12.6338 6.18262c3.03125 0 7.43359 -1.51074 9.82617 -3.37207l53.2803 -41.1504c16.6299 27.7002 37.9297 44.5303 61.2598 44.5303h284.5c-36.8701 -38.5 -60.5 -108.38 -60.5 -192v-73l50.4297 -39
c-11.4297 31.5996 -18.4297 70 -18.4297 112c0 106 43 192 96 192s96 -86 96 -192c0 -92.3203 -32.7197 -168.91 -76.1797 -187.28zM512 192c17.6201 0 32 28.6299 32 64s-14.3701 64 -32 64s-32 -28.6201 -32 -64s14.3701 -64 32 -64z" />
<glyph glyph-name="virus" unicode="&#xf974;"
d="M483.55 220.45c0.147461 0.00292969 0.356445 0.00488281 0.503906 0.00488281c15.7041 0 28.4492 -12.7461 28.4492 -28.4502s-12.7451 -28.4502 -28.4492 -28.4502c-0.147461 0 -0.386719 0.00292969 -0.53418 0.00488281h-21.5391
c-50.6807 0 -76.0703 -61.2793 -40.2305 -97.1191l15.25 -15.2402c4.15039 -4.50879 7.51855 -13.1406 7.51855 -19.2686c0 -15.7051 -12.7451 -28.4502 -28.4502 -28.4502c-6.12793 0 -14.7598 3.36816 -19.2686 7.51855l-15.2402 15.2305
c-35.8398 35.8398 -97.1094 10.4492 -97.1094 -40.2305v-21.5195c0 -15.7051 -12.7461 -28.4502 -28.4502 -28.4502s-28.4502 12.7451 -28.4502 28.4502v21.5391c0 50.6807 -61.2695 76.0703 -97.1094 40.2305l-15.2402 -15.25
c-4.50879 -4.15039 -13.1406 -7.51855 -19.2686 -7.51855c-15.7051 0 -28.4502 12.7451 -28.4502 28.4502c0 6.12793 3.36816 14.7598 7.51855 19.2686l15.2305 15.2402c35.8398 35.8398 10.4492 97.1191 -40.2305 97.1191h-21.5498
c-0.147461 -0.00195312 -0.386719 -0.00488281 -0.533203 -0.00488281c-15.7051 0 -28.4502 12.7461 -28.4502 28.4502s12.7451 28.4502 28.4502 28.4502c0.146484 0 0.385742 -0.00195312 0.533203 -0.00488281h21.5693c50.6807 0 76.0703 61.2695 40.2305 97.1094
l-15.25 15.25c-4.21094 4.52148 -7.62793 13.2051 -7.62793 19.3828c0 15.6992 12.7412 28.4404 28.4404 28.4404c6.17969 0 14.8662 -3.41992 19.3877 -7.63281l15.2402 -15.2305c35.8398 -35.8291 97.1094 -10.4492 97.1094 40.2305v21.5596
c0 15.7051 12.7461 28.4502 28.4502 28.4502s28.4502 -12.7451 28.4502 -28.4502v-21.5498c0 -50.6797 61.2695 -76.0596 97.1094 -40.2295l15.2402 15.2197c4.52148 4.21289 13.208 7.63281 19.3877 7.63281c15.6992 0 28.4404 -12.7412 28.4404 -28.4404
c0 -6.17773 -3.41699 -14.8613 -7.62793 -19.3828l-15.2305 -15.25c-35.8398 -35.8398 -10.4492 -97.1094 40.2305 -97.1094h21.5498zM224 176c26.4961 0 48 21.5039 48 48s-21.5039 48 -48 48s-48 -21.5039 -48 -48s21.5039 -48 48 -48zM304 120c13.248 0 24 10.752 24 24
s-10.752 24 -24 24s-24 -10.752 -24 -24s10.752 -24 24 -24z" />
<glyph glyph-name="virus-slash" unicode="&#xf975;" horiz-adv-x="640"
d="M114 220.44c8.37207 0.0664062 20.9922 3.61914 28.1699 7.92969l244.5 -189c-21.2197 -7.45996 -38.2197 -26.7598 -38.2197 -53.3701v-21.5195c0 -15.7051 -12.7461 -28.4502 -28.4502 -28.4502s-28.4502 12.7451 -28.4502 28.4502v21.5391
c0 50.6807 -61.2695 76.0703 -97.1094 40.2305l-15.25 -15.25c-4.66113 -5.03711 -14.0127 -9.125 -20.875 -9.125c-15.6992 0 -28.4404 12.7412 -28.4404 28.4404c0 6.8623 4.08789 16.2139 9.125 20.875l15.2305 15.25c35.8291 35.8398 10.4492 97.1191 -40.2305 97.1191
h-21.5596c-15.6992 0 -28.4404 12.7412 -28.4404 28.4404s12.7412 28.4404 28.4404 28.4404h21.5596zM633.82 -10.0898c3.41602 -2.65234 6.18848 -8.31445 6.18848 -12.6387c0 -3.03027 -1.50879 -7.42969 -3.36914 -9.82129l-19.6396 -25.2598
c-2.65234 -3.41699 -8.31445 -6.18945 -12.6387 -6.18945c-3.03027 0 -7.42969 1.50977 -9.82129 3.36914l-588.36 454.72c-3.41211 2.65234 -6.18262 8.3125 -6.18262 12.6338c0 3.03223 1.51172 7.43359 3.37305 9.82617l19.6299 25.2598
c2.65234 3.41309 8.31152 6.18262 12.6338 6.18262c3.03125 0 7.43359 -1.51074 9.82617 -3.37207l93.2598 -72.0801c0.129883 0.139648 0.150391 0.320312 0.280273 0.459961c4.5957 4.5918 13.5986 8.31934 20.0947 8.31934c6.49707 0 15.5 -3.72754 20.0957 -8.31934
l15.25 -15.2305c35.8398 -35.8398 97.1094 -10.46 97.1094 40.2305v21.5498c0 15.7051 12.7461 28.4502 28.4502 28.4502s28.4502 -12.7451 28.4502 -28.4502v-21.54c0 -50.6895 61.2695 -76.0693 97.1094 -40.2295l15.25 15.2197
c4.51367 4.17578 13.167 7.56543 19.3154 7.56543c15.6992 0 28.4404 -12.7412 28.4404 -28.4404c0 -6.14844 -3.38965 -14.8018 -7.56543 -19.3154l-15.2305 -15.29c-35.8291 -35.8398 -10.4492 -97.1191 40.2305 -97.1191h21.5596
c15.6992 0 28.4404 -12.7412 28.4404 -28.4404s-12.7412 -28.4404 -28.4404 -28.4404v0h-21.5498c-30.4795 0 -51.2197 -22.1299 -55.3896 -47.5195zM335.43 220.52c0.0898438 1.19043 0.570312 2.26074 0.570312 3.48047c0 26.4961 -21.5039 48 -48 48
c-4.39844 -0.0683594 -11.3154 -1.36328 -15.4404 -2.88965z" />
<glyph glyph-name="viruses" unicode="&#xf976;" horiz-adv-x="640"
d="M624 96c8.83203 0 16 -7.16797 16 -16s-7.16797 -16 -16 -16h-12.1201c-28.5098 0 -42.79 -34.4697 -22.6299 -54.6299l8.58008 -8.57031c2.58691 -2.58691 4.68652 -7.65625 4.68652 -11.3145c0 -8.83301 -7.16895 -16.002 -16.002 -16.002
c-3.6582 0 -8.72754 2.09961 -11.3145 4.68652l-8.57031 8.58008c-20.1602 20.1602 -54.6299 5.87988 -54.6299 -22.6299v-12.1201c0 -8.83203 -7.16797 -16 -16 -16s-16 7.16797 -16 16v12.1201c0 28.5098 -34.4697 42.79 -54.6299 22.6299l-8.57031 -8.58008
c-2.58691 -2.58691 -7.65625 -4.68652 -11.3145 -4.68652c-8.83301 0 -16.002 7.16895 -16.002 16.002c0 3.6582 2.09961 8.72754 4.68652 11.3145l8.58008 8.57031c20.1602 20.1602 5.87988 54.6299 -22.6299 54.6299h-12.1201c-8.83203 0 -16 7.16797 -16 16
s7.16797 16 16 16h12.1201c28.5098 0 42.79 34.4697 22.6299 54.6299l-8.58008 8.57031c-2.58691 2.58691 -4.68652 7.65625 -4.68652 11.3145c0 8.83301 7.16895 16.002 16.002 16.002c3.6582 0 8.72754 -2.09961 11.3145 -4.68652l8.57031 -8.58008
c20.1602 -20.1602 54.6299 -5.87988 54.6299 22.6299v12.1201c0 8.83203 7.16797 16 16 16s16 -7.16797 16 -16v-12.1201c0 -28.5098 34.4697 -42.79 54.6299 -22.6299l8.57031 8.58008c2.58691 2.58691 7.65625 4.68652 11.3145 4.68652
c8.83301 0 16.002 -7.16895 16.002 -16.002c0 -3.6582 -2.09961 -8.72754 -4.68652 -11.3145l-8.58008 -8.57031c-20.1602 -20.1602 -5.87988 -54.6299 22.6299 -54.6299h12.1201zM480 64c17.6641 0 32 14.3359 32 32s-14.3359 32 -32 32s-32 -14.3359 -32 -32
s14.3359 -32 32 -32zM346.51 234.67c-38.0195 0 -57.0498 -45.96 -30.1699 -72.8398l11.4297 -11.4297c3.44922 -3.44922 6.24902 -10.208 6.24902 -15.085c0 -11.7764 -9.55762 -21.334 -21.334 -21.334c-4.87695 0 -11.6357 2.7998 -15.085 6.24902l-11.4297 11.4297
c-26.8398 26.8799 -72.8398 7.83008 -72.8398 -30.1699v-16.1602c0 -11.7744 -9.55566 -21.3301 -21.3301 -21.3301s-21.3301 9.55566 -21.3301 21.3301v16.1602c0 38.0195 -45.96 57.0498 -72.8398 30.1699l-11.4297 -11.4297
c-3.44922 -3.44922 -10.208 -6.24902 -15.085 -6.24902c-11.7764 0 -21.334 9.55762 -21.334 21.334c0 4.87695 2.7998 11.6357 6.24902 15.085l11.4297 11.4297c26.8799 26.8398 7.83008 72.8398 -30.1699 72.8398h-16.1602c-11.7744 0 -21.3301 9.55566 -21.3301 21.3301
s9.55566 21.3301 21.3301 21.3301h16.1602c38.0195 0 57.0498 45.96 30.1699 72.8398l-11.4297 11.4404c-3.41895 3.44336 -6.19434 10.1758 -6.19434 15.0283c0 11.7744 9.55566 21.3301 21.3301 21.3301c4.85449 0 11.5898 -2.77734 15.0342 -6.19922l11.4297 -11.4297
c26.8398 -26.8799 72.8398 -7.83008 72.8398 30.1699v16.1602c0 11.7744 9.55566 21.3301 21.3301 21.3301s21.3301 -9.55566 21.3301 -21.3301v-16.1602c0 -38.0195 45.96 -57.0498 72.8398 -30.1699l11.4297 11.4297c3.44434 3.42188 10.1797 6.19922 15.0342 6.19922
c11.7744 0 21.3301 -9.55566 21.3301 -21.3301c0 -4.85254 -2.77539 -11.585 -6.19434 -15.0283l-11.4297 -11.4404c-26.8799 -26.8398 -7.83008 -72.8398 30.1699 -72.8398h16.1602c11.7744 0 21.3301 -9.55566 21.3301 -21.3301s-9.55566 -21.3301 -21.3301 -21.3301
h-16.1602zM160 256c17.6641 0 32 14.3359 32 32s-14.3359 32 -32 32s-32 -14.3359 -32 -32s14.3359 -32 32 -32zM240 224c8.83203 0 16 7.16797 16 16s-7.16797 16 -16 16s-16 -7.16797 -16 -16s7.16797 -16 16 -16z" />
</font>
</defs></svg>

Before

Width:  |  Height:  |  Size: 829 KiB

After

Width:  |  Height:  |  Size: 876 KiB

View File

@@ -6,8 +6,8 @@
<base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" href="assets/favicon.ico">
<link rel="stylesheet" href="styles.529f751cbb5308365172.css"></head>
<link rel="stylesheet" href="styles.5de5451578cdd1ad7eb0.css"></head>
<body>
<app-root></app-root>
<script src="runtime.689ba4fd6cadb82c1ac2.js" defer></script><script src="polyfills-es5.f752a17531a45fe93c1f.js" nomodule defer></script><script src="polyfills.06ba8d1a3d9dd3a8e8b9.js" defer></script><script src="scripts.6866cf66954a0b739d41.js" defer></script><script src="main.e4269137677fbcdfe029.js" defer></script></body>
<script src="runtime.689ba4fd6cadb82c1ac2.js" defer></script><script src="polyfills-es5.f752a17531a45fe93c1f.js" nomodule defer></script><script src="polyfills.06ba8d1a3d9dd3a8e8b9.js" defer></script><script src="scripts.5520a99f673924c17e00.js" defer></script><script src="main.42ac080a238003947ee6.js" defer></script></body>
</html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,18 +0,0 @@
FROM node:13.8-alpine
RUN apk --no-cache add yarn
WORKDIR /var/www/app
ADD ./package.json ./
ADD ./yarn.lock ./
RUN yarn install --production
ADD ./server ./server
ADD ./dist ./dist
EXPOSE 3000
EXPOSE 3100
CMD ["node", "-r", "esm", "server/server"]

View File

@@ -37,8 +37,17 @@ services:
ports:
- "27017:27017"
cli:
build:
context: .
dockerfile: qmi-cloud-cli/Dockerfile
image: qlikgear/qmi-cloud-cli:latest
app:
build: .
build:
context: .
dockerfile: Dockerfile
image: qlikgear/qmi-cloud-app:latest
container_name: qmi-cloud-app
restart: on-failure
@@ -46,11 +55,11 @@ services:
- source: qmicloud_config
target: config.json
environment:
#- HOSTNAME_URL=https://qmi-cloud:3100
- HOSTNAME_URL=http://localhost:3000
- REDIS_URL=redis://redis
- MONGO_URI=mongodb://root:example@mongo/qmicloud?authSource=admin
#- CERT_PFX_FILENAME=wildcard_qliktech_com.pfx
#- CERT_PFX_PASSWORD=xxxxxxxxxxx
- CERT_PFX_FILENAME=
- CERT_PFX_PASSWORD=
command:
- ./server/wait-for.sh
- --timeout=20
@@ -58,11 +67,15 @@ services:
- --
- sh
- -c
- npm run dev
- npm run start:dev
volumes:
- .:/var/www/app
# -- Dev only volumes
- ./server:/var/www/app/server
- ./dist:/var/www/app/dist
# -------------------
- ../qmi-cloud-provisions:/provisions
- ./logs:/logs
#- ./certs:/var/www/app/server/certs
depends_on:
- mongo
- redis
@@ -73,21 +86,26 @@ services:
- backend
worker:
build: .
build:
context: .
dockerfile: qmi-cloud-worker/Dockerfile
image: qlikgear/qmi-cloud-worker:latest
container_name: qmi-cloud-worker
restart: on-failure
deploy:
replicas: 2
environment:
- REDIS_URL=redis://redis
- MONGO_URI=mongodb://root:example@mongo/qmicloud?authSource=admin
- PROJECT_PATH=${PWD}
- GIT_SCENARIOS=git::git@gitlab.com:qmi/qmi-cloud-scenarios.git
- GIT_TAG=dev
- SSHPATH=/Users/aor/.ssh
command: "sh -c 'npm run worker:dev'"
- DOCKERIMAGE_AZURE_POWERSHELL=mcr.microsoft.com/azure-powershell:4.2.0-ubuntu-18.04
- DOCKERIMAGE_TERRAFORM=qlikgear/terraform:1.0.1
command: "sh -c 'npm run start:dev'"
volumes:
- .:/var/www/app
# -- Dev only volumes
- ./worker:/app/worker
# -------------------
- ./logs:/logs
- /var/run/docker.sock:/home/docker.sock
depends_on:
@@ -95,7 +113,7 @@ services:
- redis
networks:
- backend
mongo-express:
image: mongo-express:0.54.0
container_name: qmi-cloud-mongo-express

View File

@@ -1,14 +0,0 @@
FROM node:13.8-alpine
RUN apk --no-cache add yarn
WORKDIR /var/www/app
ADD ./package.json ./
ADD ./yarn.lock ./
RUN yarn install --production
ADD ./server ./server
CMD ["node", "-r", "esm", "server/workers/worker.js"]

View File

@@ -1,10 +1,41 @@
export VERSION=$(cat package.json | grep version | head -1 | awk -F: '{ print $2 }' | sed 's/[",]//g' | tr -d '[[:space:]]')
docker build -f ./docker-app/Dockerfile -t qlikgear/qmi-cloud-app:$VERSION ./
docker build -f ./docker-worker/Dockerfile -t qlikgear/qmi-cloud-worker:$VERSION ./
docker build -f ./docker-app/Dockerfile -t qlikgear/qmi-cloud-app:latest ./
docker build -f ./docker-worker/Dockerfile -t qlikgear/qmi-cloud-worker:latest ./
echo "$DOCKER_REGISTRY_PASSWORD" | docker login -u "$DOCKER_REGISTRY_USER" --password-stdin
docker push qlikgear/qmi-cloud-app:$VERSION
docker push qlikgear/qmi-cloud-app:latest
docker push qlikgear/qmi-cloud-worker:$VERSION
docker push qlikgear/qmi-cloud-worker:latest
echo "--- Building QMI Cloud docker images for branch $CI_COMMIT_REF_NAME"
export VERSION_APP=$(cat package.json | grep version | head -1 | awk -F: '{ print $2 }' | sed 's/[",]//g' | tr -d '[[:space:]]')
export VERSION_WORKER=$(cat qmi-cloud-worker/package.json | grep version | head -1 | awk -F: '{ print $2 }' | sed 's/[",]//g' | tr -d '[[:space:]]')
export VERSION_CLI=$(cat qmi-cloud-cli/package.json | grep version | head -1 | awk -F: '{ print $2 }' | sed 's/[",]//g' | tr -d '[[:space:]]')
export TAG_APP=$VERSION_APP
export TAG_WORKER=$VERSION_WORKER
export TAG_CLI=$VERSION_CLI
export STABLE_TAG="latest"
if [ "$CI_COMMIT_REF_NAME" != "master" ]; then
TAG_APP="$VERSION_APP-$CI_COMMIT_REF_NAME"
TAG_WORKER="$VERSION_WORKER-$CI_COMMIT_REF_NAME"
TAG_CLI="$VERSION_CLI-$CI_COMMIT_REF_NAME"
STABLE_TAG="latestdev"
fi
echo "$DOCKER_REGISTRY_PASSWORD" | docker login --username "$DOCKER_REGISTRY_USER" --password-stdin
echo "--- Building image: qlikgear/qmi-cloud-cli:$TAG_CLI"
docker build -f ./qmi-cloud-cli/Dockerfile -t qlikgear/qmi-cloud-cli:$TAG_CLI ./
echo "--- Pushing image: qlikgear/qmi-cloud-cli:$TAG_CLI"
docker push qlikgear/qmi-cloud-cli:$TAG_CLI
docker build -f ./qmi-cloud-cli/Dockerfile -t qlikgear/qmi-cloud-cli:$STABLE_TAG ./
docker push qlikgear/qmi-cloud-cli:$STABLE_TAG
echo "--- Building image: qlikgear/qmi-cloud-worker:$TAG_WORKER"
docker build -f ./qmi-cloud-worker/Dockerfile -t qlikgear/qmi-cloud-worker:$TAG_WORKER ./
echo "--- Pushing image: qlikgear/qmi-cloud-worker:$TAG_WORKER"
docker push qlikgear/qmi-cloud-worker:$TAG_WORKER
docker build -f ./qmi-cloud-worker/Dockerfile -t qlikgear/qmi-cloud-worker:$STABLE_TAG ./
docker push qlikgear/qmi-cloud-worker:$STABLE_TAG
echo "--- Building image: qlikgear/qmi-cloud-app:$TAG_APP"
docker build -f ./Dockerfile -t qlikgear/qmi-cloud-app:$TAG_APP ./
echo "--- Pushing image: qlikgear/qmi-cloud-app:$TAG_APP"
docker push qlikgear/qmi-cloud-app:$TAG_APP
docker build -f ./Dockerfile -t qlikgear/qmi-cloud-app:$STABLE_TAG ./
docker push qlikgear/qmi-cloud-app:$STABLE_TAG

14956
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,15 +1,14 @@
{
"name": "qmi-cloud",
"version": "1.0.12",
"name": "qmi-cloud-app",
"version": "1.1.4",
"scripts": {
"start": "node -r esm server/server.js",
"dev": "nodemon -r esm server/server.js",
"worker": "node -r esm server/workers/worker.js",
"worker:dev": "nodemon -r esm server/workers/worker.js",
"start:dev": "nodemon -r esm server/server.js",
"test": "echo \"No test specified\" && exit 0"
},
"private": true,
"dependencies": {
"qmi-cloud-common": "./qmi-cloud-common",
"@angular-devkit/build-angular": "^0.900.7",
"@angular/animations": "~9.0.7",
"@angular/common": "~9.0.7",
@@ -21,21 +20,18 @@
"@angular/platform-browser-dynamic": "~9.0.7",
"@angular/router": "~9.0.7",
"@fortawesome/fontawesome-free": "^5.12.1",
"@hapi/boom": "^9.1.0",
"@types/chart.js": "^2.9.16",
"adal-angular4": "^4.0.12",
"angular-bootstrap-md": "^9.0.0",
"animate.css": "^3.7.2",
"azure-arm-compute": "^10.0.0",
"body-parser": "^1.19.0",
"boom": "^7.3.0",
"bootstrap": "^4.3.1",
"bull": "^3.11.0",
"bull-arena": "^2.6.4",
"chart.js": "^2.9.3",
"connect-mongo": "^3.0.0",
"cookie-parser": "^1.4.4",
"core-js": "^2.5.4",
"dockerode": "^3.0.2",
"esm": "^3.2.25",
"express": "^4.17.1",
"express-session": "^1.17.0",
@@ -46,10 +42,7 @@
"leonardo-ui": "^1.7.1",
"moment": "^2.24.0",
"mongoose": "^5.7.4",
"ms-rest-azure": "^3.0.0",
"ngx-markdown": "^9.0.0",
"node-fetch": "^2.6.0",
"nodemailer": "^6.4.2",
"nodemon": "^1.19.1",
"passport": "^0.4.0",
"passport-azure-ad": "^4.1.0",

21
qmi-cloud-cli/Dockerfile Normal file
View File

@@ -0,0 +1,21 @@
# Stage 1: NOTE: context is actually ../
FROM node:13.8-alpine AS sources
RUN apk --no-cache add yarn
WORKDIR /app
ADD ./qmi-cloud-cli ./
ADD ./qmi-cloud-common ../qmi-cloud-common
RUN yarn install --production
# Stage 2:
FROM node:13.8-alpine AS production
WORKDIR /app
COPY --from=sources /app ./
RUN chmod a+x ./shell-utils/*.sh
ENTRYPOINT ["sh", "/app/shell-utils/check.sh"]

22
qmi-cloud-cli/README.md Normal file
View File

@@ -0,0 +1,22 @@
# Examples
```
docker run --net=host \
-e MONGO_URI="mongodb://root:example@localhost:27017/qmicloud?authSource=admin" \
-e API_KEY="c229219ccdd72d11e8ea253fd3876d247e5f489c9c84922cabdfb0cc194d8ff398a8d8d6528d8241efc99add2207e0ec75122a1b2c5598cc340cbe6b7c3c0dbf" \
qlikgear/qmi-cloud-cli:latest -s checkdestroy -t warning -p 4 -r test
```
```
docker run --net=host \
-e MONGO_URI="mongodb://root:example@localhost:27017/qmicloud?authSource=admin" \
qlikgear/qmi-cloud-cli:latest -s initdb
```
```
docker run --net=host -e MONGO_URI=$MONGO_URI -e API_KEY=$API_KEY qlikgear/qmi-cloud-cli:latest -s checkdestroy -t warning -p 20 -r test
```
```
docker run --net=host -e MONGO_URI=$MONGO_URI -e API_KEY=$API_KEY qlikgear/qmi-cloud-cli:latest -s checkstop -t warning -p 4 -r test
```

View File

@@ -0,0 +1,425 @@
[
{
"isAdminOnly": false,
"isWafPolicyAppGw": true,
"isExternal": true,
"isDisabled": false,
"availableProductVersions": [
{
"product": "Qlik Sense",
"vmTypeDefault": "Standard_D4s_v3",
"index": "vm1",
"versions": [
{
"name": "Qlik Sense February 2020",
"image": "/subscriptions/62ebff8f-c40b-41be-9239-252d6c0c8ad9/resourceGroups/QMI-Machines/providers/Microsoft.Compute/images/qliksense-base-feb20-2"
},
{
"name": "Qlik Sense April 2020",
"image": "/subscriptions/62ebff8f-c40b-41be-9239-252d6c0c8ad9/resourceGroups/QMI-Machines/providers/Microsoft.Compute/images/qliksense-base-april20-1587800741770"
}
]
}
],
"vmTypeDefault": "Standard_D4s_v3",
"name": "azqmi-qs-sn",
"title": "Qlik Sense Enterprise on Windows",
"description": "Qlik Sense Enterprise on Windows (single node). Dashboard and visualization bundle installed.<br><br>WebConnectors installed but not licensed.",
"version": "1.0",
"created": "2019-12-04T09:27:15.596Z",
"updated": "2020-05-10T15:27:26.466Z",
"__v": 0
},
{
"isAdminOnly": false,
"isWafPolicyAppGw": true,
"isExternal": true,
"isDisabled": false,
"availableProductVersions": [
{
"product": "Qlik Sense",
"vmTypeDefault": "Standard_D4s_v3",
"index": "vm1",
"versions": [
{
"name": "Qlik Sense February 2020",
"image": "/subscriptions/62ebff8f-c40b-41be-9239-252d6c0c8ad9/resourceGroups/QMI-Machines/providers/Microsoft.Compute/images/qliksense-base-feb20-2"
},
{
"name": "Qlik Sense April 2020",
"image": "/subscriptions/62ebff8f-c40b-41be-9239-252d6c0c8ad9/resourceGroups/QMI-Machines/providers/Microsoft.Compute/images/qliksense-base-april20-1587800741770"
}
]
},
{
"product": "QDC",
"vmTypeDefault": "Standard_D4s_v3",
"index": "vm2",
"versions": [
{
"name": "QDC Single Server December 2019",
"image": "/subscriptions/62ebff8f-c40b-41be-9239-252d6c0c8ad9/resourceGroups/QMI-Machines/providers/Microsoft.Compute/images/qdc-base-4.4-2"
},
{
"name": "QDC Single Server April 2020",
"image": "/subscriptions/62ebff8f-c40b-41be-9239-252d6c0c8ad9/resourceGroups/QMI-Machines/providers/Microsoft.Compute/images/qdc-base-april20-1588850882491"
}
]
}
],
"vmTypeDefault": "Standard_D4s_v3",
"name": "azqmi-qdc-qs",
"title": "Qlik Data Catalyst and Qlik Sense",
"description": "Creates a <b>QDC single server</b> and a <b>Qlik Sense Enterprise</b>.<br><br>Configuration is all set to load QVDs located in C:/QVDs and \"Publish to Qlik\". Setup QDC Catalog in QS Data Manager <a target=\"blank\" href=\"https://confluence.qliktech.com/display/~AOR/QMI+Cloud+-+QDC+Catalogue+setup+in+Qlik+Sense\">here</a>. More appealing QVD demo configuration by <a target=\"blank\" href=\"https://confluence.qliktech.com/display/~kaa/Getting+Qlik+Catalog+for+QVD+ready+for+Demo+on+QMI+Cloud\">Kevin Alty</a>. Troubleshoot 'Publish To Qlik\" <a target=\"blank\" href=\"https://confluence.qliktech.com/display/~AOR/Troubleshooting+Publish+To+Qlik+in+QMI+Cloud+QS-QDC+scenario\">here</a>.",
"version": "1.0",
"created": "2019-12-04T09:27:15.596Z",
"updated": "2020-05-12T08:39:13.216Z",
"__v": 0
},
{
"isAdminOnly": true,
"isWafPolicyAppGw": false,
"isExternal": false,
"isDisabled": false,
"availableProductVersions": [
{
"product": "Oracle",
"vmTypeDefault": "Standard_D4s_v3",
"index": "vm1",
"versions": []
}
],
"name": "azqmi-database-lkn",
"title": "Oracle & Other databases",
"description": "Oracle Database <b class=\"lui-text-danger\">DO NOT USE, DEV IN PROGRESS</b>",
"version": "1.0",
"created": "2019-12-04T09:27:15.596Z",
"updated": "2020-05-14T03:58:03.413Z"
},
{
"isAdminOnly": true,
"isWafPolicyAppGw": false,
"isExternal": false,
"isDisabled": false,
"availableProductVersions": [
{
"product": "packer",
"vmTypeDefault": "Standard_D8s_v3",
"index": "vm1",
"versions": []
}
],
"name": "azqmi-box-builder",
"title": "Builds qmi desktop base box with packer",
"description": "packer builder <b class=\"lui-text-danger\">DO NOT USE, GEAR INTERNAL ONLY</b>",
"version": "1.0",
"created": "2019-12-04T09:27:15.596Z",
"updated": "2020-05-20T02:59:57.772Z",
"__v": 0
},
{
"isAdminOnly": false,
"isWafPolicyAppGw": false,
"isExternal": true,
"isDisabled": false,
"availableProductVersions": [
{
"product": "QDC",
"vmTypeDefault": "Standard_D4s_v3",
"index": "vm1",
"versions": [
{
"name": "QDC Single Server December 2019",
"image": "/subscriptions/62ebff8f-c40b-41be-9239-252d6c0c8ad9/resourceGroups/QMI-Machines/providers/Microsoft.Compute/images/qdc-base-4.4-2"
},
{
"name": "QDC Single Server April 2020",
"image": "/subscriptions/62ebff8f-c40b-41be-9239-252d6c0c8ad9/resourceGroups/QMI-Machines/providers/Microsoft.Compute/images/qdc-base-april20-1588850882491"
}
]
}
],
"vmTypeDefault": "Standard_D4s_v3",
"name": "azqmi-qdc-ss",
"title": "Qlik Data Catalyst",
"description": "Qlik Data Catalyst single server. Set appropriate license (after provision) if QDC4QVDs only version is needed.",
"version": "1.0",
"created": "2019-12-04T09:26:39.532Z",
"updated": "2020-05-10T15:22:34.537Z",
"__v": 0
},
{
"isAdminOnly": false,
"isWafPolicyAppGw": false,
"isExternal": false,
"isDisabled": false,
"availableProductVersions": [
{
"product": "Windows",
"vmTypeDefault": "Standard_D2s_v3",
"diskSizeGbDefault": 128,
"index": "vm1",
"versions": []
}
],
"vmTypeDefault": "Standard_D2s_v3",
"name": "azqmi-wn-bl",
"title": "Windows Server 2016",
"description": "Just a blank Windows Server 2016",
"version": "1.0",
"created": "2019-12-04T09:26:11.396Z",
"updated": "2020-05-10T12:39:09.646Z",
"__v": 0
},
{
"isAdminOnly": false,
"isWafPolicyAppGw": false,
"isExternal": false,
"isDisabled": false,
"availableProductVersions": [
{
"product": "Windows",
"vmTypeDefault": "Standard_D2s_v3",
"index": "vm1",
"versions": []
}
],
"vmTypeDefault": "Standard_D2s_v3",
"name": "azqmi-wn-dbs",
"title": "MySQL and MSSQL server databases",
"description": "Windows Server 2016 running MySQL and MSSQL server databases.",
"version": "1.0",
"created": "2019-12-04T08:55:31.948Z",
"updated": "2020-05-16T12:57:06.937Z"
},
{
"isAdminOnly": false,
"isWafPolicyAppGw": false,
"isExternal": false,
"isDisabled": false,
"availableProductVersions": [
{
"product": "Ubuntu 18.04",
"vmTypeDefault": "Standard_B2s",
"diskSizeGbDefault": 128,
"index": "vm1",
"versions": []
}
],
"vmTypeDefault": "Standard_B2s",
"name": "azqmi-ubuntu",
"title": "Ubuntu 18.04",
"description": "Just a blank Ubuntu 18.04 instance",
"version": "1.0",
"created": "2019-12-04T08:55:31.948Z",
"updated": "2020-05-10T12:39:12.884Z",
"__v": 0
},
{
"isAdminOnly": false,
"isWafPolicyAppGw": false,
"isExternal": false,
"isDisabled": false,
"availableProductVersions": [
{
"product": "Centos 7.5",
"vmTypeDefault": "Standard_B2s",
"diskSizeGbDefault": 128,
"index": "vm1",
"versions": []
}
],
"vmTypeDefault": "Standard_B2s",
"name": "azqmi-centos",
"title": "Centos 7.5",
"description": "Just a blank Centos 7.5 instance",
"version": "1.0",
"created": "2019-12-04T08:55:31.948Z",
"updated": "2020-05-10T12:39:15.087Z",
"__v": 0
},
{
"isAdminOnly": true,
"isWafPolicyAppGw": false,
"isExternal": false,
"isDisabled": false,
"availableProductVersions": [
{
"product": "Centos 7.5",
"vmTypeDefault": "Standard_D4s_v3",
"diskSizeGbDefault": 128,
"index": "vm1",
"versions": []
}
],
"vmTypeDefault": "Standard_D4s_v3",
"name": "gen-qdc",
"title": "Image generator - QDC",
"description": "This scenario creates a VM and runs QDC install scripts. Then it will generalize the VM for it to become an Azure image.",
"version": "1.0",
"created": "2019-12-04T08:55:31.948Z",
"updated": "2020-05-10T12:39:17.323Z",
"__v": 0,
"newImageName": "qdc-base-april20"
},
{
"isAdminOnly": true,
"isWafPolicyAppGw": false,
"isExternal": false,
"isDisabled": false,
"availableProductVersions": [
{
"product": "Windows",
"vmTypeDefault": "Standard_D8s_v3",
"diskSizeGbDefault": 128,
"index": "vm1",
"versions": []
}
],
"vmTypeDefault": "Standard_D8s_v3",
"name": "gen-qs",
"title": "Image generator - QSEoW",
"description": "This scenario creates a VM and will run Qlik Sense install scripts. Then it will generalize the VM for it to become an Azure image.",
"version": "1.0",
"created": "2019-12-04T08:55:31.948Z",
"updated": "2020-05-10T12:39:21.035Z",
"newImageName": "qliksense-base-april20",
"__v": 0
},
{
"isAdminOnly": false,
"isWafPolicyAppGw": false,
"isExternal": false,
"isDisabled": false,
"availableProductVersions": [
{
"product": "QlikView",
"vmTypeDefault": "Standard_D4s_v3",
"index": "vm1",
"versions": []
}
],
"vmTypeDefault": "Standard_D4s_v3",
"name": "azqmi-qv",
"title": "QlikView Server and Publisher",
"description": "This scenario creates a VM running <b>QlikView Server and Publisher April 2019 SR1</b> (access from VPN only).",
"version": "1.0",
"created": "2019-12-04T08:55:31.948Z",
"updated": "2020-05-10T12:39:23.148Z",
"__v": 0
},
{
"isAdminOnly": false,
"isWafPolicyAppGw": false,
"isExternal": false,
"isDisabled": false,
"availableProductVersions": [
{
"product": "each node",
"vmTypeDefault": "Standard_D8s_v3",
"diskSizeGbDefault": 250,
"index": "vm1",
"versions": []
}
],
"vmTypeDefault": "Standard_D8s_v3",
"name": "azqmi-qseok-microk8s",
"title": "Qlik Sense Enterprise on Kubernetes (microk8s)",
"description": "Ubuntu 18.04 running <a target=\"blank\" href=\"https://microk8s.io/\">MicroK8s</a> cluster and QSEoK deployed in it. <br><br><b>Just for Demos, not for PoCs</b>",
"version": "1.0",
"created": "2019-12-04T08:55:31.948Z",
"updated": "2020-05-10T15:29:19.944Z",
"__v": 0
},
{
"isAdminOnly": false,
"isWafPolicyAppGw": true,
"isExternal": true,
"isDisabled": false,
"availableProductVersions": [
{
"product": "QIB",
"vmTypeDefault": "Standard_D8s_v3",
"index": "vm1",
"versions": [
{
"name": "Qlik Sense Feb 2020 and QIB Feb 2020",
"image": "/subscriptions/62ebff8f-c40b-41be-9239-252d6c0c8ad9/resourceGroups/QMI-Machines/providers/Microsoft.Compute/images/qliksense-qib-base-feb20-1"
}
]
}
],
"vmTypeDefault": "Standard_D8s_v3",
"name": "azqmi-qs-qib",
"title": "Qlik Insight Bot",
"description": "Qlik Sense Enterprise on Windows with Qlik Insight Bot.<br><br>WebConnectors installed but not licensed.",
"version": "1.0",
"created": "2019-12-04T09:27:15.596Z",
"updated": "2020-05-10T15:23:45.891Z"
},
{
"isAdminOnly": true,
"isWafPolicyAppGw": true,
"isExternal": true,
"isDisabled": false,
"availableProductVersions": [
{
"product": "Windows VM",
"vmTypeDefault": "Standard_D8s_v3",
"index": "vm1",
"versions": []
}
],
"vmTypeDefault": "Standard_D8s_v3",
"name": "azqmi-qs-np",
"title": "Qlik Sense Enterprise and NPrinting",
"description": "<b class=\"lui-text-danger\">DO NOT USE, DEV IN PROGRESS</b> One VM running <b>Qlik Sense Feb 2020</b> and <b>NPrinting Feb 2020 SR1</b>. Extenal access through AppGw.<br><br>WebConnectors installed but not licensed.",
"version": "1.0",
"created": "2019-12-04T08:55:31.948Z",
"updated": "2020-05-10T15:23:56.237Z"
},
{
"isAdminOnly": false,
"isWafPolicyAppGw": false,
"isExternal": false,
"isDisabled": false,
"availableProductVersions": [
{
"product": "Ubuntu 18.04",
"vmTypeDefault": "Standard_D4s_v3",
"diskSizeGbDefault": 128,
"index": "vm1",
"versions": []
}
],
"vmTypeDefault": "Standard_D4s_v3",
"name": "azqmi-ubuntu-docker",
"title": "Ubuntu with Docker and Docker-Compose",
"description": "This is Ubuntu 18.04 with Docker Engine and Docker-Compose installed.",
"version": "1.0",
"created": "2019-12-04T08:55:31.948Z",
"updated": "2020-05-10T15:24:19.588Z"
},
{
"isAdminOnly": false,
"isWafPolicyAppGw": false,
"isExternal": false,
"isDisabled": false,
"availableProductVersions": [
{
"product": "Attunity Replicate/Compose DW",
"vmTypeDefault": "Standard_D2s_v3",
"index": "vm1",
"versions": []
}
],
"vmTypeDefault": "Standard_D2s_v3",
"name": "azqmi-di",
"title": "Attunity Replicate/Compose DW",
"description": "Windows Server 2016 with installed Attunity Replicate and Compose DW (v6.6.0).",
"version": "1.0",
"created": "2019-12-04T08:55:31.948Z",
"updated": "2020-05-10T15:24:29.303Z"
}
]

View File

@@ -0,0 +1,96 @@
[
{
"isAdminOnly": true,
"isWafPolicyAppGw": false,
"isExternal": false,
"isDisabled": false,
"availableProductVersions": [
{
"product": "Qlik Sense",
"vmTypeDefault": "Standard_D4s_v3",
"diskSizeGbDefault": "500",
"index": "vm1",
"versions": [
{
"name": "Qlik Sense April 2020",
"image": "/subscriptions/62ebff8f-c40b-41be-9239-252d6c0c8ad9/resourceGroups/QMI-Machines/providers/Microsoft.Compute/galleries/QMICloud/images/QlikSenseEnterprise/versions/13.72.3"
}
]
},
{
"product": "QDC",
"vmTypeDefault": "Standard_D4s_v3",
"diskSizeGbDefault": "500",
"index": "vm2",
"versions": [
{
"name": "QDC Single Server April 2020",
"image": "/subscriptions/62ebff8f-c40b-41be-9239-252d6c0c8ad9/resourceGroups/QMI-Machines/providers/Microsoft.Compute/galleries/QMICloud/images/QDC/versions/4.5.0"
}
]
}
],
"name": "azqmi-qdc-qs-secure",
"title": "Qlik Data Catalyst and Qlik Sense (secure)",
"description": "Creates a <b>QDC single server</b> and a <b>Qlik Sense Enterprise</b> in isolation and secure for Customer Data PoC's.<br><br>Configuration is all set to load QVDs located in C:/QVDs and \"Publish to Qlik\". Setup QDC Catalog in QS Data Manager <a target=\"blank\" href=\"https://confluence.qliktech.com/display/~AOR/QMI+Cloud+-+QDC+Catalogue+setup+in+Qlik+Sense\">here</a>. Troubleshoot 'Publish To Qlik\" <a target=\"blank\" href=\"https://confluence.qliktech.com/display/~AOR/Troubleshooting+Publish+To+Qlik+in+QMI+Cloud+QS-QDC+scenario\">here</a>.",
"created": "2020-05-18T09:10:35.728Z",
"updated": "2020-05-18T15:25:27.282Z",
"__v": 0
},
{
"isAdminOnly": true,
"isWafPolicyAppGw": false,
"isExternal": false,
"isDisabled": false,
"availableProductVersions": [
{
"product": "QDC",
"vmTypeDefault": "Standard_D8s_v3",
"diskSizeGbDefault": 500,
"index": "vm1",
"versions": [
{
"name": "QDC Single Server April 2020",
"image": "/subscriptions/62ebff8f-c40b-41be-9239-252d6c0c8ad9/resourceGroups/QMI-Machines/providers/Microsoft.Compute/galleries/QMICloud/images/QDC/versions/4.5.0"
}
]
}
],
"name": "azqmi-qdc-secure",
"title": "Qlik Data Catalyst (secure)",
"description": "Qlik Data Catalyst deployment in isolation and secure for Customer Data PoC's",
"created": "2020-05-18T07:58:28.741Z",
"updated": "2020-05-18T15:25:32.828Z",
"__v": 0
},
{
"isAdminOnly": true,
"isWafPolicyAppGw": false,
"isExternal": false,
"isDisabled": false,
"availableProductVersions": [
{
"product": "Qlik Sense",
"vmTypeDefault": "Standard_D8s_v3",
"diskSizeGbDefault": 250,
"index": "vm1",
"versions": [
{
"name": "Qlik Sense February 2020",
"image": "/subscriptions/62ebff8f-c40b-41be-9239-252d6c0c8ad9/resourceGroups/QMI-Machines/providers/Microsoft.Compute/galleries/QMICloud/images/QlikSenseEnterprise/versions/13.62.0"
},
{
"name": "Qlik Sense April 2020",
"image": "/subscriptions/62ebff8f-c40b-41be-9239-252d6c0c8ad9/resourceGroups/QMI-Machines/providers/Microsoft.Compute/galleries/QMICloud/images/QlikSenseEnterprise/versions/13.72.3"
}
]
}
],
"name": "azqmi-qs-secure",
"title": "Qlik Sense Enterprise on Windows (secure)",
"description": "Qlik Sense Enterprise deployment in isolation and secure for Customer Data PoC's",
"created": "2020-05-13T11:55:55.785Z",
"updated": "2020-05-18T15:25:38.158Z",
"__v": 0
}
]

View File

@@ -0,0 +1,10 @@
[
{
"subsId": "62ebff8f-c40b-41be-9239-252d6c0c8ad9",
"description": "QMI Automation"
},
{
"subsId": "73c75d40-8c7d-45cf-b4f9-afdb210da92d",
"description": "Qlik-Secure"
}
]

View File

@@ -0,0 +1,62 @@
[
{
"_id": "5e73a211710f74000640cbf2",
"type": "Standard_B1ms",
"desc": "1 CPUs - 2GiB RAM",
"costHour": 0.0207
},
{
"_id": "5e73a220710f74000640cbf4",
"type": "Standard_B2s",
"desc": "2 CPUs - 4GiB RAM",
"costHour": 0.0416
},
{
"_id": "5e73a22b710f74000640cbf6",
"type": "Standard_D2s_v3",
"desc": "2 CPUs - 8GiB RAM",
"costHour": 0.096
},
{
"_id": "5e73a240710f74000640cbfa",
"type": "Standard_D4s_v3",
"desc": "4 CPUs - 16GiB RAM",
"costHour": 0.192
},
{
"_id": "5e73a251710f74000640cbfe",
"type": "Standard_D8s_v3",
"desc": "8 CPUs - 32GiB RAM",
"costHour": 0.384
},
{
"_id": "5e73a262710f74000640cc02",
"type": "Standard_D16s_v3",
"desc": "16 CPUs - 64GiB RAM",
"costHour": 0.768
},
{
"_id": "5e92c98ce7b19100066153ab",
"type": "Standard_D32s_v3",
"desc": "32 CPUs - 128GiB RAM",
"costHour": 1.536
},
{
"_id": "5ea9016970653300063fbd17",
"type": "Standard_E16s_v3",
"desc": "16 CPUs - 128 GiB RAM - Mem. optimized",
"costHour": 1.008
},
{
"_id": "5ea901bd70653300063fbd19",
"type": "Standard_E20s_v3",
"desc": "20 CPUs - 160 GiB RAM - Mem. optimized",
"costHour": 1.26
},
{
"_id": "5ea901d670653300063fbd1b",
"type": "Standard_E32s_v3",
"desc": "32 CPUs - 256GiB RAM - Mem. optimized",
"costHour": 2.016
}
]

View File

@@ -0,0 +1,50 @@
const db = require('qmi-cloud-common/mongo');
var initDataSubscriptions = require("../initdata/subscriptions.json");
var scenarios1 = require("../initdata/scenariosQMI-Automation.json");
var scenarios2 = require("../initdata/scenariosQlik-Secure.json");
var vmTypes = require("../initdata/vmtypes.json");
async function asyncForEach(array, callback) {
for (let index = 0; index < array.length; index++) {
await callback(array[index], index, array);
}
}
async function init() {
// Adding VmTypes
await asyncForEach(vmTypes, async function(v){
await db.vmtype.add(v);
});
// Adding Subscriptions
await asyncForEach(initDataSubscriptions, async function(s){
await db.subscription.add(s);
});
var subscription;
//QMI Automation
subscription = await db.subscription.getOne({"description": "QMI Automation"});
await asyncForEach(scenarios1, async function(s){
s.subscription = subscription._id;
await db.scenario.add(s);
});
//Qlik-Secure
subscription = await db.subscription.getOne({"description": "Qlik-Secure"});
await asyncForEach(scenarios2, async function(s){
s.subscription = subscription._id;
await db.scenario.add(s);
});
console.log("Done!");
process.exit(0);
}
init().catch(function(err){
console.log(err);
process.exit(1);
});
module.exports.init = init;

View File

@@ -6,15 +6,15 @@ if ( myArgs.length < 3 ) {
process.exit(0);
}
var db = require('../mongo');
const sendEmail = require("../send-email");
const db = require('qmi-cloud-common/mongo');
const sendEmail = require("qmi-cloud-common/send-email");
const moment = require('moment');
const fetch = require('node-fetch');
const IS_REAL = myArgs[2] !== 'test';
const STOPPED_PERIOD = myArgs[1]; //Days
const STOPPED_LIMIT_HOURS_WARNING = 24*(STOPPED_PERIOD-1); //Hours
const STOPPED_LIMIT_HOURS_WARNING = 24*(STOPPED_PERIOD-2); //Hours
const STOPPED_LIMIT_HOURS_STOP = 24*STOPPED_PERIOD; //Hours
const API_KEY = process.env.API_KEY;
const SERVER_URL = "http://localhost:3000";
@@ -66,7 +66,7 @@ async function init(type) {
limit = STOPPED_LIMIT_HOURS_WARNING;
filter.pendingNextAction = {$ne: "destroy"};
cb = doSendEmailDestroyWarning;
} else if ( type === "destroy" ) {
} else if ( type === "exec" ) {
limit = STOPPED_LIMIT_HOURS_STOP;
filter.pendingNextAction = "destroy";
cb = doDestroy;
@@ -140,8 +140,8 @@ switch (myArgs[0]) {
case 'warning':
check("warning");
break;
case 'destroy':
check("destroy");
case 'exec':
check("exec");
break;
default:
console.log('Sorry, that is not something I know how to do.');

View File

@@ -11,10 +11,10 @@ const RUNNING_PERIOD = myArgs[1]; //Days
const RUNNING_LIMIT_HOURS_WARNING = 24*(RUNNING_PERIOD-1);
const RUNNING_LIMIT_HOURS_STOP = 24*RUNNING_PERIOD;
var db = require('../mongo');
const sendEmail = require("../send-email");
const db = require('qmi-cloud-common/mongo');
const sendEmail = require("qmi-cloud-common/send-email");
const moment = require('moment');
const azurecli = require('../azurecli');
const azurecli = require('qmi-cloud-common/azurecli');
function timeRunning(p) {
let runningFromTime = p.runningFrom? new Date(p.runningFrom).getTime() : new Date(p.created).getTime();
@@ -46,7 +46,7 @@ async function init(type) {
limit = RUNNING_LIMIT_HOURS_WARNING;
filter.pendingNextAction = {$ne: "stopVms"};
cb = doSendEmailWarning;
} else if ( type === "stop" ) {
} else if ( type === "exec" ) {
limit = RUNNING_LIMIT_HOURS_STOP;
filter.pendingNextAction = "stopVms";
cb = doStop;
@@ -123,8 +123,8 @@ switch (myArgs[0]) {
case 'warning':
check("warning");
break;
case 'stop':
check("stop");
case 'exec':
check("exec");
break;
default:
console.log('Sorry, that is not something I know how to do.');

172
qmi-cloud-cli/jobs/test.js Normal file
View File

@@ -0,0 +1,172 @@
const db = require('qmi-cloud-common/mongo');
/*var scenarios = ['azqmi-qs-sn', 'azqmi-qdc-qs', 'azqmi-qdc-ss', 'azqmi-qs-qib'];
db.models.Provision.updateMany({"scenario": { $in: scenarios}}, {"isExternalAccess": true}, function(err, res){
if (err) {
console.log("error", err);
process.exit(1);
} else {
console.log("Good", res);
process.exit(0);
}
});*/
/*var promise = db.models.Subscription.create({
subsId: "62ebff8f-c40b-41be-9239-252d6c0c8ad9"
});
promise.then(function (subs) {
console.log("Good", subs);
process.exit(0);
}).catch(function(err){
console.log("error", err);
process.exit(1);
})*/
async function getScenario(){
var res = await db.scenario.get();
console.log("res", res.results);
}
/*db.models.Scenario.updateMany({"name": { $exists: true}}, {"subscription": "5ec23bd0999e8a00193725b8"}, function(err, res){
if (err) {
console.log("error", err);
process.exit(1);
} else {
console.log("Good", res);
process.exit(0);
}
});*/
//getScenario();
async function asyncForEach(array, callback) {
for (let index = 0; index < array.length; index++) {
await callback(array[index], index, array);
}
}
async function getProvisions(filter){
return db.provision.get(filter);
}
/*getProvisions().then(async function(res){
console.log(res.results.length);
await asyncForEach(res.results, async function(prov){
if ( prov.vmType ) {
//console.log("vmType", prov.vmType, prov.vmImage)
prov["vmImage"] = {
"vm1": {
"vmType": prov.vmType,
"diskSizeGb": 128
}
}
prov.vmType = null;
await prov.save();
}
});
process.exit(0);
});*/
/*db.models.Provision.updateMany({"nodeCount": { $exists: true}}, { $unset: { nodeCount: "" } }, function(err, res){
if (err) {
console.log("error", err);
process.exit(1);
} else {
console.log("Good", res);
process.exit(0);
}
});*/
/*db.models.Scenario.updateMany({"nodeCount": { $exists: true}}, { $unset: { nodeCount: "" } }, function(err, res){
if (err) {
console.log("error", err);
process.exit(1);
} else {
console.log("Good", res);
process.exit(0);
}
});*/
/*db.models.Provision.updateMany({}, { "scenarioVersion": "1.0" }, function(err, res){
if (err) {
console.log("error", err);
process.exit(1);
} else {
console.log("Good", res);
process.exit(0);
}
});*/
/*getProvisions({
"isDestroyed": true,
"statusVms": "Stopped"
}).then(async function(res){
console.log(res.results.length);
await asyncForEach(res.results, async function(prov){
//if ( prov.destroy ) {
var runningFrom = new Date(prov.runningFrom).getTime();
var updated;
if ( prov.destroy ) {
updated = new Date(prov.destroy.updated).getTime();
} else {
updated = new Date(prov.updated).getTime();
}
var mins = Math.floor( (updated-runningFrom)/1000/60);
if ( !isNaN(mins) ) {
var newTimeRunning = (prov.timeRunning-mins);
if ( newTimeRunning > 0 ) {
console.log(prov._id, "timeRunning="+prov.timeRunning, " offset="+mins, " timeRunningNew="+newTimeRunning, prov.destroy? "OK" : "BUUUH");
prov.timeRunning = newTimeRunning;
await prov.save();
console.log("saved!");
}
}
//}
});
process.exit(0);
})*/
/*getProvisions({
"isDestroyed": true
}).then(async function(res){
console.log(res.results.length);
var count = 0;
await asyncForEach(res.results, async function(prov){
//if ( prov.destroy ) {
var actualDestroyDate;
if ( prov.destroy ) {
actualDestroyDate = prov.destroy.updated;
prov.actualDestroyDate = actualDestroyDate;
await prov.save();
count = count + 1;
console.log("saved!", count);
}
//}
});
process.exit(0);
})*/
getProvisions({
"isDestroyed": true, "actualDestroyDate": {"$exists":false}, "isDeleted": true
}).then(async function(res){
console.log(res.total, res.count);
var count = 0;
await asyncForEach(res.results, async function(prov){
prov.actualDestroyDate = prov.updated;
await prov.save();
count = count + 1;
console.log("saved!", count);
});
process.exit(0);
})

View File

@@ -0,0 +1,13 @@
{
"name": "qmi-cloud-cli",
"version": "1.1.3",
"scripts": {
},
"private": true,
"dependencies": {
"qmi-cloud-common": "../qmi-cloud-common",
"node-fetch": "^2.6.0",
"moment": "^2.24.0"
}
}

View File

@@ -0,0 +1,68 @@
BASEDIR=$(dirname "$0")
helpFunction()
{
echo ""
echo "Usage: $0 -s script"
echo -e "\t-s Type of script ( checkstop | checkdestroy | initdb )"
exit 1 # Exit script after printing help
}
helpFunctionCheck()
{
echo ""
echo "Usage: $0 -s script -t type -p period -r realortest"
echo -e "\t-s Type of script ( checkstop | checkdestroy | initdb )"
echo -e "\t-t Type of script (warning | exec)"
echo -e "\t-p Period (number of days)"
echo -e "\t-r Type of script (test | real)"
exit 1 # Exit script after printing help
}
while getopts "s:t:p:r:" opt
do
case "$opt" in
s ) script="$OPTARG" ;;
t ) type="$OPTARG" ;;
p ) period="$OPTARG" ;;
r ) realortest="$OPTARG" ;;
? ) helpFunction ;; # Print helpFunction in case parameter is non-existent
esac
done
if [ -z "$script" ]
then
echo "Some or all of the parameters are empty";
helpFunction
fi
if [ "$script" = "checkstop" ] || [ "$script" = "checkdestroy" ]
then
if [ -z "$type" ] || [ -z "$period" ] || [ -z "$realortest" ]
then
echo "Some or all of the parameters are empty";
helpFunctionCheck
else
if [ "$script" = "checkstop" ]
then
$BASEDIR/checkstop.sh $type $period $realortest
fi
if [ "$script" = "checkdestroy" ]
then
$BASEDIR/checkdestroy.sh $type $period $realortest
fi
fi
elif [ "$script" = "initdb" ]
then
if [ -z "$MONGO_URI" ]
then
echo "\$MONGO_URI is empty"
exit
else
echo "\$MONGO_URI=$MONGO_URI"
node $BASEDIR/../jobs/db-init.js
fi
fi

View File

@@ -0,0 +1,25 @@
BASEDIR=$(dirname "$0")
d=`date`
echo "------ $d"
echo "------ SCRIPT: $0"
echo "------ TYPE: $1"
echo "------ PERIOD: $2"
echo "------ TEST/REAL: $3"
if [ -z "$MONGO_URI" ]
then
echo "\$MONGO_URI is empty"
exit
else
echo "\$MONGO_URI=$MONGO_URI"
fi
if [ -z "$API_KEY" ]
then
echo "\$API_KEY is empty"
exit
else
echo "\$API_KEY=$API_KEY"
fi
node $BASEDIR/../jobs/destroy5.js $1 $2 $3

View File

@@ -0,0 +1,25 @@
BASEDIR=$(dirname "$0")
d=`date`
echo "------ $d"
echo "------ SCRIPT: $0"
echo "------ TYPE: $1"
echo "------ PERIOD: $2"
echo "------ TEST/REAL: $3"
if [ -z "$MONGO_URI" ]
then
echo "\$MONGO_URI is empty"
exit
else
echo "\$MONGO_URI=$MONGO_URI"
fi
if [ -z "$API_KEY" ]
then
echo "\$API_KEY is empty"
exit
else
echo "\$API_KEY=$API_KEY"
fi
node $BASEDIR/../jobs/stop5.js $1 $2 $3

987
qmi-cloud-cli/yarn.lock Normal file
View File

@@ -0,0 +1,987 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
"@hapi/boom@^9.1.0":
version "9.1.0"
resolved "https://registry.yarnpkg.com/@hapi/boom/-/boom-9.1.0.tgz#0d9517657a56ff1e0b42d0aca9da1b37706fec56"
integrity sha512-4nZmpp4tXbm162LaZT45P7F7sgiem8dwAh2vHWT6XX24dozNjGMg6BvKCRvtCUcmcXqeMIUqWN8Rc5X8yKuROQ==
dependencies:
"@hapi/hoek" "9.x.x"
"@hapi/hoek@9.x.x":
version "9.0.4"
resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.0.4.tgz#e80ad4e8e8d2adc6c77d985f698447e8628b6010"
integrity sha512-EwaJS7RjoXUZ2cXXKZZxZqieGtc7RbvQhUy8FwDoMQtxWVi14tFjeFCYPZAM1mBCpOpiBpyaZbb9NeHc7eGKgw==
"@types/node@^8.0.47":
version "8.10.61"
resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.61.tgz#d299136ce54bcaf1abaa4a487f9e4bedf6b0d393"
integrity sha512-l+zSbvT8TPRaCxL1l9cwHCb0tSqGAGcjPJFItGGYat5oCTiq1uQQKYg5m7AF1mgnEBzFXGLJ2LRmNjtreRX76Q==
adal-node@^0.1.28:
version "0.1.28"
resolved "https://registry.yarnpkg.com/adal-node/-/adal-node-0.1.28.tgz#468c4bb3ebbd96b1270669f4b9cba4e0065ea485"
integrity sha1-RoxLs+u9lrEnBmn0ucuk4AZepIU=
dependencies:
"@types/node" "^8.0.47"
async ">=0.6.0"
date-utils "*"
jws "3.x.x"
request ">= 2.52.0"
underscore ">= 1.3.1"
uuid "^3.1.0"
xmldom ">= 0.1.x"
xpath.js "~1.1.0"
ajv@^6.5.5:
version "6.12.2"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd"
integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==
dependencies:
fast-deep-equal "^3.1.1"
fast-json-stable-stringify "^2.0.0"
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
asn1@~0.2.3:
version "0.2.4"
resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136"
integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==
dependencies:
safer-buffer "~2.1.0"
assert-plus@1.0.0, assert-plus@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
async@2.6.0:
version "2.6.0"
resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4"
integrity sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==
dependencies:
lodash "^4.14.0"
async@>=0.6.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/async/-/async-3.2.0.tgz#b3a2685c5ebb641d3de02d161002c60fc9f85720"
integrity sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==
asynckit@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
aws-sign2@~0.7.0:
version "0.7.0"
resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=
aws4@^1.8.0:
version "1.10.0"
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.0.tgz#a17b3a8ea811060e74d47d306122400ad4497ae2"
integrity sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==
azure-arm-compute@^10.0.0:
version "10.0.0"
resolved "https://registry.yarnpkg.com/azure-arm-compute/-/azure-arm-compute-10.0.0.tgz#ce9ba2e4d6dd6b1174c34da2219700a8080f389b"
integrity sha512-ehafNtcMKI6c00FT+xhPWPtzhYgHCZ675TUsaJ1FJ2bSpznih5EUrpir/4w519T4zbFBigszhnRK6eBkl78I9g==
dependencies:
ms-rest "^2.5.0"
ms-rest-azure "^2.5.5"
bcrypt-pbkdf@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=
dependencies:
tweetnacl "^0.14.3"
bl@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/bl/-/bl-2.2.0.tgz#e1a574cdf528e4053019bb800b041c0ac88da493"
integrity sha512-wbgvOpqopSr7uq6fJrLH8EsvYMJf9gzfo2jCsL2eTy75qXPukA4pCgHamOQkZtY5vmfVtjB+P3LNlMHW5CEZXA==
dependencies:
readable-stream "^2.3.5"
safe-buffer "^5.1.1"
bluebird@3.5.1:
version "3.5.1"
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9"
integrity sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==
bson@^1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/bson/-/bson-1.1.4.tgz#f76870d799f15b854dffb7ee32f0a874797f7e89"
integrity sha512-S/yKGU1syOMzO86+dGpg2qGoDL0zvzcb262G+gqEy6TgP6rt6z6qxSFX/8X6vLC91P7G7C3nLs0+bvDzmvBA3Q==
buffer-equal-constant-time@1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819"
integrity sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=
bull@^3.11.0:
version "3.14.0"
resolved "https://registry.yarnpkg.com/bull/-/bull-3.14.0.tgz#75fcfa17e829c860de0d51b79569636845232715"
integrity sha512-qQrytpqbE6Zjl2zkvlqS1kUwWLJHpDOhhuGb34+5atPeZrd8DlxkAbxnLnaMB1XQX1iXPzFVpDOUOIIROYKp6Q==
dependencies:
cron-parser "^2.13.0"
debuglog "^1.0.0"
get-port "^5.1.1"
ioredis "^4.14.1"
lodash "^4.17.15"
p-timeout "^3.2.0"
promise.prototype.finally "^3.1.2"
semver "^6.3.0"
util.promisify "^1.0.1"
uuid "^3.4.0"
caseless@~0.12.0:
version "0.12.0"
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
cluster-key-slot@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz#30474b2a981fb12172695833052bc0d01336d10d"
integrity sha512-2Nii8p3RwAPiFwsnZvukotvow2rIHM+yQ6ZcBXGHdniadkYGZYiGmkHJIbZPIV9nfv7m/U1IPMVVcAhoWFeklw==
combined-stream@^1.0.6, combined-stream@~1.0.6:
version "1.0.8"
resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
dependencies:
delayed-stream "~1.0.0"
core-util-is@1.0.2, core-util-is@~1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
cron-parser@^2.13.0:
version "2.15.0"
resolved "https://registry.yarnpkg.com/cron-parser/-/cron-parser-2.15.0.tgz#04803cd51d8efcfcc6f83ac08e60f3f8c40c7ec5"
integrity sha512-rMFkrQw8+oG5OuwjiXesup4KeIlEG/IU82YtG4xyAHbO5jhKmYaHPp/ZNhq9+7TjSJ65E3zV3kQPUbmXSff2/g==
dependencies:
is-nan "^1.3.0"
moment-timezone "^0.5.31"
dashdash@^1.12.0:
version "1.14.1"
resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=
dependencies:
assert-plus "^1.0.0"
date-utils@*:
version "1.2.21"
resolved "https://registry.yarnpkg.com/date-utils/-/date-utils-1.2.21.tgz#61fb16cdc1274b3c9acaaffe9fc69df8720a2b64"
integrity sha1-YfsWzcEnSzyayq/+n8ad+HIKK2Q=
debug@3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==
dependencies:
ms "2.0.0"
debug@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==
dependencies:
ms "^2.1.1"
debuglog@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492"
integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=
define-properties@^1.1.2, define-properties@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
dependencies:
object-keys "^1.0.12"
delayed-stream@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
denque@^1.1.0, denque@^1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/denque/-/denque-1.4.1.tgz#6744ff7641c148c3f8a69c307e51235c1f4a37cf"
integrity sha512-OfzPuSZKGcgr96rf1oODnfjqBFmr1DVoc/TrItj3Ohe0Ah1C5WX5Baquw/9U9KovnQ88EqmJbD66rKYUQYN1tQ==
duplexer@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=
ecc-jsbn@~0.1.1:
version "0.1.2"
resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=
dependencies:
jsbn "~0.1.0"
safer-buffer "^2.1.0"
ecdsa-sig-formatter@1.0.11:
version "1.0.11"
resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf"
integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==
dependencies:
safe-buffer "^5.0.1"
es-abstract@^1.17.0-next.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5:
version "1.17.5"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9"
integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==
dependencies:
es-to-primitive "^1.2.1"
function-bind "^1.1.1"
has "^1.0.3"
has-symbols "^1.0.1"
is-callable "^1.1.5"
is-regex "^1.0.5"
object-inspect "^1.7.0"
object-keys "^1.1.1"
object.assign "^4.1.0"
string.prototype.trimleft "^2.1.1"
string.prototype.trimright "^2.1.1"
es-to-primitive@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
dependencies:
is-callable "^1.1.4"
is-date-object "^1.0.1"
is-symbol "^1.0.2"
extend@~3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
extsprintf@1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=
extsprintf@^1.2.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=
fast-deep-equal@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4"
integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==
fast-json-stable-stringify@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
forever-agent@~0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=
form-data@~2.3.2:
version "2.3.3"
resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==
dependencies:
asynckit "^0.4.0"
combined-stream "^1.0.6"
mime-types "^2.1.12"
function-bind@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
get-port@^5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193"
integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==
getpass@^0.1.1:
version "0.1.7"
resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=
dependencies:
assert-plus "^1.0.0"
har-schema@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=
har-validator@~5.1.3:
version "5.1.3"
resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080"
integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==
dependencies:
ajv "^6.5.5"
har-schema "^2.0.0"
has-symbols@^1.0.0, has-symbols@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8"
integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==
has@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
dependencies:
function-bind "^1.1.1"
http-signature@~1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=
dependencies:
assert-plus "^1.0.0"
jsprim "^1.2.2"
sshpk "^1.7.0"
inherits@~2.0.3:
version "2.0.4"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
ioredis@^4.14.1:
version "4.17.3"
resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-4.17.3.tgz#9938c60e4ca685f75326337177bdc2e73ae9c9dc"
integrity sha512-iRvq4BOYzNFkDnSyhx7cmJNOi1x/HWYe+A4VXHBu4qpwJaGT1Mp+D2bVGJntH9K/Z/GeOM/Nprb8gB3bmitz1Q==
dependencies:
cluster-key-slot "^1.1.0"
debug "^4.1.1"
denque "^1.1.0"
lodash.defaults "^4.2.0"
lodash.flatten "^4.4.0"
redis-commands "1.5.0"
redis-errors "^1.2.0"
redis-parser "^3.0.0"
standard-as-callback "^2.0.1"
is-buffer@^1.1.6:
version "1.1.6"
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
is-callable@^1.1.4, is-callable@^1.1.5:
version "1.2.0"
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb"
integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==
is-date-object@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e"
integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==
is-nan@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.0.tgz#85d1f5482f7051c2019f5673ccebdb06f3b0db03"
integrity sha512-z7bbREymOqt2CCaZVly8aC4ML3Xhfi0ekuOnjO2L8vKdl+CttdVoGZQhd4adMFAsxQ5VeRVwORs4tU8RH+HFtQ==
dependencies:
define-properties "^1.1.3"
is-regex@^1.0.5:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.0.tgz#ece38e389e490df0dc21caea2bd596f987f767ff"
integrity sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==
dependencies:
has-symbols "^1.0.1"
is-stream@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
is-symbol@^1.0.2:
version "1.0.3"
resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937"
integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==
dependencies:
has-symbols "^1.0.1"
is-typedarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
isarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
isstream@~0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
jsbn@~0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM=
json-schema-traverse@^0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
json-schema@0.2.3:
version "0.2.3"
resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=
json-stringify-safe@~5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
jsprim@^1.2.2:
version "1.4.1"
resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=
dependencies:
assert-plus "1.0.0"
extsprintf "1.3.0"
json-schema "0.2.3"
verror "1.10.0"
jwa@^1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a"
integrity sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==
dependencies:
buffer-equal-constant-time "1.0.1"
ecdsa-sig-formatter "1.0.11"
safe-buffer "^5.0.1"
jws@3.x.x:
version "3.2.2"
resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304"
integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==
dependencies:
jwa "^1.4.1"
safe-buffer "^5.0.1"
kareem@2.3.1:
version "2.3.1"
resolved "https://registry.yarnpkg.com/kareem/-/kareem-2.3.1.tgz#def12d9c941017fabfb00f873af95e9c99e1be87"
integrity sha512-l3hLhffs9zqoDe8zjmb/mAN4B8VT3L56EUvKNqLFVs9YlFA+zx7ke1DO8STAdDyYNkeSo1nKmjuvQeI12So8Xw==
lodash.defaults@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c"
integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=
lodash.flatten@^4.4.0:
version "4.4.0"
resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f"
integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=
lodash@^4.14.0, lodash@^4.17.15:
version "4.17.15"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
memory-pager@^1.0.2:
version "1.5.0"
resolved "https://registry.yarnpkg.com/memory-pager/-/memory-pager-1.5.0.tgz#d8751655d22d384682741c972f2c3d6dfa3e66b5"
integrity sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==
mime-db@1.44.0:
version "1.44.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92"
integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==
mime-types@^2.1.12, mime-types@~2.1.19:
version "2.1.27"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f"
integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==
dependencies:
mime-db "1.44.0"
moment-timezone@^0.5.31:
version "0.5.31"
resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.31.tgz#9c40d8c5026f0c7ab46eda3d63e49c155148de05"
integrity sha512-+GgHNg8xRhMXfEbv81iDtrVeTcWt0kWmTEY1XQK14dICTXnWJnT0dxdlPspwqF3keKMVPXwayEsk1DI0AA/jdA==
dependencies:
moment ">= 2.9.0"
"moment@>= 2.9.0", moment@^2.21.0, moment@^2.22.2, moment@^2.24.0:
version "2.26.0"
resolved "https://registry.yarnpkg.com/moment/-/moment-2.26.0.tgz#5e1f82c6bafca6e83e808b30c8705eed0dcbd39a"
integrity sha512-oIixUO+OamkUkwjhAVE18rAMfRJNsNe/Stid/gwHSOfHrOtw9EhAY2AHvdKZ/k/MggcYELFCJz/Sn2pL8b8JMw==
mongodb@3.5.8:
version "3.5.8"
resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-3.5.8.tgz#34550856449b745d145873734bf922c12d6b9caa"
integrity sha512-jz7mR58z66JKL8Px4ZY+FXbgB7d0a0hEGCT7kw8iye46/gsqPrOEpZOswwJ2BQlfzsrCLKdsF9UcaUfGVN2HrQ==
dependencies:
bl "^2.2.0"
bson "^1.1.4"
denque "^1.4.1"
require_optional "^1.0.1"
safe-buffer "^5.1.2"
optionalDependencies:
saslprep "^1.0.0"
mongoose-legacy-pluralize@1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz#3ba9f91fa507b5186d399fb40854bff18fb563e4"
integrity sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ==
mongoose@^5.7.4:
version "5.9.17"
resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-5.9.17.tgz#9b74659481807cd9ff5b9c120cdb5087cbbd92bd"
integrity sha512-9EDmTiKrOu/41twlPWUA1aOsdxSN6PRIdFwTpLu4MjyNcJ/vuBE+VewKrN1jsD4oXO5rB8bMYtYxVmJQ02SrPg==
dependencies:
bson "^1.1.4"
kareem "2.3.1"
mongodb "3.5.8"
mongoose-legacy-pluralize "1.0.2"
mpath "0.7.0"
mquery "3.2.2"
ms "2.1.2"
regexp-clone "1.0.0"
safe-buffer "5.1.2"
sift "7.0.1"
sliced "1.0.1"
mpath@0.7.0:
version "0.7.0"
resolved "https://registry.yarnpkg.com/mpath/-/mpath-0.7.0.tgz#20e8102e276b71709d6e07e9f8d4d0f641afbfb8"
integrity sha512-Aiq04hILxhz1L+f7sjGyn7IxYzWm1zLNNXcfhDtx04kZ2Gk7uvFdgZ8ts1cWa/6d0TQmag2yR8zSGZUmp0tFNg==
mquery@3.2.2:
version "3.2.2"
resolved "https://registry.yarnpkg.com/mquery/-/mquery-3.2.2.tgz#e1383a3951852ce23e37f619a9b350f1fb3664e7"
integrity sha512-XB52992COp0KP230I3qloVUbkLUxJIu328HBP2t2EsxSFtf4W1HPSOBWOXf1bqxK4Xbb66lfMJ+Bpfd9/yZE1Q==
dependencies:
bluebird "3.5.1"
debug "3.1.0"
regexp-clone "^1.0.0"
safe-buffer "5.1.2"
sliced "1.0.1"
ms-rest-azure@^2.5.5:
version "2.6.0"
resolved "https://registry.yarnpkg.com/ms-rest-azure/-/ms-rest-azure-2.6.0.tgz#2098efec529eecfa0c6e215b69143abcaba12140"
integrity sha512-J6386a9krZ4VtU7CRt+Ypgo9RGf8+d3gjMBkH7zbkM4zzkhbbMOYiPRaZ+bHZcfihkKLlktTgA6rjshTjF329A==
dependencies:
adal-node "^0.1.28"
async "2.6.0"
moment "^2.22.2"
ms-rest "^2.3.2"
request "^2.88.0"
uuid "^3.2.1"
ms-rest-azure@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/ms-rest-azure/-/ms-rest-azure-3.0.0.tgz#54d0341c2aeef7b9f17f2a46258788740b2f0ec5"
integrity sha512-cttN01/TtMDB4v3rt/WQ/slgffB6jcUYxcPzcL0VNSB+WFPE1j4y5ICNHMuD1RaNNekCYMI4Pv51BDQ/BXNq7Q==
dependencies:
adal-node "^0.1.28"
async "2.6.0"
moment "^2.22.2"
ms-rest "^2.3.2"
request "^2.88.0"
uuid "^3.2.1"
ms-rest@^2.3.2, ms-rest@^2.5.0:
version "2.5.4"
resolved "https://registry.yarnpkg.com/ms-rest/-/ms-rest-2.5.4.tgz#57b42299cf302e45d5e1a734220bf7d4a110167a"
integrity sha512-VeqCbawxRM6nhw0RKNfj7TWL7SL8PB6MypqwgylXCi+u412uvYoyY/kSmO8n06wyd8nIcnTbYToCmSKFMI1mCg==
dependencies:
duplexer "^0.1.1"
is-buffer "^1.1.6"
is-stream "^1.1.0"
moment "^2.21.0"
request "^2.88.0"
through "^2.3.8"
tunnel "0.0.5"
uuid "^3.2.1"
ms@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
ms@2.1.2, ms@^2.1.1:
version "2.1.2"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
node-fetch@^2.6.0:
version "2.6.0"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd"
integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==
nodemailer@^6.4.2:
version "6.4.8"
resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.4.8.tgz#aca52886e4e56f71f6b8a65f5ca6b767ca751fc7"
integrity sha512-UbJD0+g5e2H20bWv7Rpj3B+N3TMMJ0MLoLwaGVJ0k3Vo8upq0UltwHJ5BJfrpST1vFa91JQ8cf7cICK5DSIo1Q==
oauth-sign@~0.9.0:
version "0.9.0"
resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
object-inspect@^1.7.0:
version "1.7.0"
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67"
integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==
object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
object.assign@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da"
integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==
dependencies:
define-properties "^1.1.2"
function-bind "^1.1.1"
has-symbols "^1.0.0"
object-keys "^1.0.11"
object.getownpropertydescriptors@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649"
integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==
dependencies:
define-properties "^1.1.3"
es-abstract "^1.17.0-next.1"
p-finally@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
p-timeout@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe"
integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==
dependencies:
p-finally "^1.0.0"
performance-now@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
process-nextick-args@~2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
promise.prototype.finally@^3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/promise.prototype.finally/-/promise.prototype.finally-3.1.2.tgz#b8af89160c9c673cefe3b4c4435b53cfd0287067"
integrity sha512-A2HuJWl2opDH0EafgdjwEw7HysI8ff/n4lW4QEVBCUXFk9QeGecBWv0Deph0UmLe3tTNYegz8MOjsVuE6SMoJA==
dependencies:
define-properties "^1.1.3"
es-abstract "^1.17.0-next.0"
function-bind "^1.1.1"
psl@^1.1.28:
version "1.8.0"
resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==
punycode@^2.1.0, punycode@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
qmi-cloud-common@../qmi-cloud-common:
version "1.1.2"
dependencies:
"@hapi/boom" "^9.1.0"
azure-arm-compute "^10.0.0"
bull "^3.11.0"
mongoose "^5.7.4"
ms-rest-azure "^3.0.0"
nodemailer "^6.4.2"
qs@~6.5.2:
version "6.5.2"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
readable-stream@^2.3.5:
version "2.3.7"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
dependencies:
core-util-is "~1.0.0"
inherits "~2.0.3"
isarray "~1.0.0"
process-nextick-args "~2.0.0"
safe-buffer "~5.1.1"
string_decoder "~1.1.1"
util-deprecate "~1.0.1"
redis-commands@1.5.0:
version "1.5.0"
resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.5.0.tgz#80d2e20698fe688f227127ff9e5164a7dd17e785"
integrity sha512-6KxamqpZ468MeQC3bkWmCB1fp56XL64D4Kf0zJSwDZbVLLm7KFkoIcHrgRvQ+sk8dnhySs7+yBg94yIkAK7aJg==
redis-errors@^1.0.0, redis-errors@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/redis-errors/-/redis-errors-1.2.0.tgz#eb62d2adb15e4eaf4610c04afe1529384250abad"
integrity sha1-62LSrbFeTq9GEMBK/hUpOEJQq60=
redis-parser@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-3.0.0.tgz#b66d828cdcafe6b4b8a428a7def4c6bcac31c8b4"
integrity sha1-tm2CjNyv5rS4pCin3vTGvKwxyLQ=
dependencies:
redis-errors "^1.0.0"
regexp-clone@1.0.0, regexp-clone@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/regexp-clone/-/regexp-clone-1.0.0.tgz#222db967623277056260b992626354a04ce9bf63"
integrity sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw==
"request@>= 2.52.0", request@^2.88.0:
version "2.88.2"
resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==
dependencies:
aws-sign2 "~0.7.0"
aws4 "^1.8.0"
caseless "~0.12.0"
combined-stream "~1.0.6"
extend "~3.0.2"
forever-agent "~0.6.1"
form-data "~2.3.2"
har-validator "~5.1.3"
http-signature "~1.2.0"
is-typedarray "~1.0.0"
isstream "~0.1.2"
json-stringify-safe "~5.0.1"
mime-types "~2.1.19"
oauth-sign "~0.9.0"
performance-now "^2.1.0"
qs "~6.5.2"
safe-buffer "^5.1.2"
tough-cookie "~2.5.0"
tunnel-agent "^0.6.0"
uuid "^3.3.2"
require_optional@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/require_optional/-/require_optional-1.0.1.tgz#4cf35a4247f64ca3df8c2ef208cc494b1ca8fc2e"
integrity sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==
dependencies:
resolve-from "^2.0.0"
semver "^5.1.0"
resolve-from@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57"
integrity sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=
safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
version "5.1.2"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2:
version "5.2.1"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
version "2.1.2"
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
saslprep@^1.0.0:
version "1.0.3"
resolved "https://registry.yarnpkg.com/saslprep/-/saslprep-1.0.3.tgz#4c02f946b56cf54297e347ba1093e7acac4cf226"
integrity sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==
dependencies:
sparse-bitfield "^3.0.3"
semver@^5.1.0:
version "5.7.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
semver@^6.3.0:
version "6.3.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
sift@7.0.1:
version "7.0.1"
resolved "https://registry.yarnpkg.com/sift/-/sift-7.0.1.tgz#47d62c50b159d316f1372f8b53f9c10cd21a4b08"
integrity sha512-oqD7PMJ+uO6jV9EQCl0LrRw1OwsiPsiFQR5AR30heR+4Dl7jBBbDLnNvWiak20tzZlSE1H7RB30SX/1j/YYT7g==
sliced@1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/sliced/-/sliced-1.0.1.tgz#0b3a662b5d04c3177b1926bea82b03f837a2ef41"
integrity sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=
sparse-bitfield@^3.0.3:
version "3.0.3"
resolved "https://registry.yarnpkg.com/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz#ff4ae6e68656056ba4b3e792ab3334d38273ca11"
integrity sha1-/0rm5oZWBWuks+eSqzM004JzyhE=
dependencies:
memory-pager "^1.0.2"
sshpk@^1.7.0:
version "1.16.1"
resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877"
integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==
dependencies:
asn1 "~0.2.3"
assert-plus "^1.0.0"
bcrypt-pbkdf "^1.0.0"
dashdash "^1.12.0"
ecc-jsbn "~0.1.1"
getpass "^0.1.1"
jsbn "~0.1.0"
safer-buffer "^2.0.2"
tweetnacl "~0.14.0"
standard-as-callback@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/standard-as-callback/-/standard-as-callback-2.0.1.tgz#ed8bb25648e15831759b6023bdb87e6b60b38126"
integrity sha512-NQOxSeB8gOI5WjSaxjBgog2QFw55FV8TkS6Y07BiB3VJ8xNTvUYm0wl0s8ObgQ5NhdpnNfigMIKjgPESzgr4tg==
string.prototype.trimend@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913"
integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==
dependencies:
define-properties "^1.1.3"
es-abstract "^1.17.5"
string.prototype.trimleft@^2.1.1:
version "2.1.2"
resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz#4408aa2e5d6ddd0c9a80739b087fbc067c03b3cc"
integrity sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==
dependencies:
define-properties "^1.1.3"
es-abstract "^1.17.5"
string.prototype.trimstart "^1.0.0"
string.prototype.trimright@^2.1.1:
version "2.1.2"
resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz#c76f1cef30f21bbad8afeb8db1511496cfb0f2a3"
integrity sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==
dependencies:
define-properties "^1.1.3"
es-abstract "^1.17.5"
string.prototype.trimend "^1.0.0"
string.prototype.trimstart@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54"
integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==
dependencies:
define-properties "^1.1.3"
es-abstract "^1.17.5"
string_decoder@~1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
dependencies:
safe-buffer "~5.1.0"
through@^2.3.8:
version "2.3.8"
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
tough-cookie@~2.5.0:
version "2.5.0"
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
dependencies:
psl "^1.1.28"
punycode "^2.1.1"
tunnel-agent@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=
dependencies:
safe-buffer "^5.0.1"
tunnel@0.0.5:
version "0.0.5"
resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.5.tgz#d1532254749ed36620fcd1010865495a1fa9d0ae"
integrity sha512-gj5sdqherx4VZKMcBA4vewER7zdK25Td+z1npBqpbDys4eJrLx+SlYjJvq1bDXs2irkuJM5pf8ktaEQVipkrbA==
tweetnacl@^0.14.3, tweetnacl@~0.14.0:
version "0.14.5"
resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
"underscore@>= 1.3.1":
version "1.10.2"
resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.10.2.tgz#73d6aa3668f3188e4adb0f1943bd12cfd7efaaaf"
integrity sha512-N4P+Q/BuyuEKFJ43B9gYuOj4TQUHXX+j2FqguVOpjkssLUUrnJofCcBccJSCoeturDoZU6GorDTHSvUDlSQbTg==
uri-js@^4.2.2:
version "4.2.2"
resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0"
integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==
dependencies:
punycode "^2.1.0"
util-deprecate@~1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
util.promisify@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee"
integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==
dependencies:
define-properties "^1.1.3"
es-abstract "^1.17.2"
has-symbols "^1.0.1"
object.getownpropertydescriptors "^2.1.0"
uuid@^3.1.0, uuid@^3.2.1, uuid@^3.3.2, uuid@^3.4.0:
version "3.4.0"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
verror@1.10.0:
version "1.10.0"
resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=
dependencies:
assert-plus "^1.0.0"
core-util-is "1.0.2"
extsprintf "^1.2.0"
"xmldom@>= 0.1.x":
version "0.3.0"
resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.3.0.tgz#e625457f4300b5df9c2e1ecb776147ece47f3e5a"
integrity sha512-z9s6k3wxE+aZHgXYxSTpGDo7BYOUfJsIRyoZiX6HTjwpwfS2wpQBQKa2fD+ShLyPkqDYo5ud7KitmLZ2Cd6r0g==
xpath.js@~1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/xpath.js/-/xpath.js-1.1.0.tgz#3816a44ed4bb352091083d002a383dd5104a5ff1"
integrity sha512-jg+qkfS4K8E7965sqaUl8mRngXiKb3WZGfONgE18pr03FUQiuSV6G+Ej4tS55B+rIQSFEIw3phdVAQ4pPqNWfQ==

View File

@@ -1,13 +1,16 @@
const MsRest = require('ms-rest-azure');
var computeManagementClient = require('azure-arm-compute');
const SUBSCRIPTION_ID = "62ebff8f-c40b-41be-9239-252d6c0c8ad9";
const computeManagementClient = require('azure-arm-compute');
const db = require("./mongo");
const sendEmail = require("./send-email");
async function _getClient() {
const SUBSCRIPTION_ID = "62ebff8f-c40b-41be-9239-252d6c0c8ad9";
async function _getClient(scenarioName) {
var scenario = await db.scenario.getOne({"name": scenarioName});
var id = scenario.subscription? scenario.subscription.subsId : SUBSCRIPTION_ID;
var credentials = await MsRest.loginWithMSI({ port: 50342 });
console.log("Azure CLI authenticated", credentials);
return new computeManagementClient(credentials, SUBSCRIPTION_ID);
return new computeManagementClient(credentials, id);
}
async function asyncForEach(array, callback) {
@@ -21,11 +24,12 @@ async function deallocate(provision, isSendEmailAfter ) {
rgName = rgName.replace(/AZQMI/g, 'QMI');
rgName = rgName + "-" + provision._id.toString();
db.provision.update(provision._id, {"statusVms": "Stopping"});
console.log("Deallocating VMs for resource group: "+rgName);
var computeClient = await _getClient();
var computeClient = await _getClient(provision.scenario);
let finalResult = await computeClient.virtualMachines.list(rgName);
if ( finalResult && finalResult.length > 0 ) {
db.provision.update(provision._id, {"statusVms": "Stopping"});
}
await asyncForEach(finalResult, async function(vm) {
await computeClient.virtualMachines.deallocate(rgName, vm.name);
});
@@ -46,11 +50,13 @@ async function start(provision){
rgName = rgName.replace(/AZQMI/g, 'QMI');
rgName = rgName + "-" + provision._id.toString();
db.provision.update(provision._id, {"statusVms": "Starting"});
console.log("Starting VMs for resource group: "+rgName);
var computeClient = await _getClient();
var computeClient = await _getClient(provision.scenario);
let finalResult = await computeClient.virtualMachines.list(rgName);
if ( finalResult && finalResult.length > 0 ) {
db.provision.update(provision._id, {"statusVms": "Starting"});
}
await asyncForEach(finalResult, async function(vm) {
await computeClient.virtualMachines.start(rgName, vm.name);
});

View File

@@ -10,12 +10,17 @@ const schema = new mongoose.Schema({
},
created: {
type: Date,
default: Date.now
default: Date.now,
index : true
},
updated: {
type: Date,
default: Date.now
},
isActive: {
type: Boolean,
default: true
},
apiKey: {
type: String,
default: function() {

View File

@@ -9,7 +9,8 @@ const destroySchema = new mongoose.Schema({
},
created: {
type: Date,
default: Date.now
default: Date.now,
index : true
},
updated: {
type: Date,

View File

@@ -6,7 +6,8 @@ mongoose.set('useFindAndModify', false);
const sc = new mongoose.Schema({
created: {
type: Date,
default: Date.now
default: Date.now,
index : true
},
updated: {
type: Date,

View File

@@ -9,17 +9,23 @@ const provisionSchema = new mongoose.Schema({
},
created: {
type: Date,
default: Date.now
default: Date.now,
index : true
},
updated: {
type: Date,
default: Date.now
},
scenario: String,
scenario: {
type: String,
required: true
},
scenarioVersion: {
type: String,
default: "1.0"
},
description: String,
vmImage: Object,
vmType: String,
nodeCount: Number,
status: {
type: String,
default: "queued"
@@ -28,6 +34,10 @@ const provisionSchema = new mongoose.Schema({
logFile: String,
outputs: Object,
path: String,
isExternalAccess: {
type: Boolean,
default: false
},
isDestroyed: {
type: Boolean,
default: false
@@ -38,12 +48,14 @@ const provisionSchema = new mongoose.Schema({
index: true
},
statusVms: {
type: String,
default: "Running"
type: String
},
destroy: {
type: mongoose.Types.ObjectId, ref: 'Destroy'
},
actualDestroyDate: {
type: Date
},
runningFrom: {
type: Date
},
@@ -61,7 +73,18 @@ const provisionSchema = new mongoose.Schema({
pendingNextAction: {
type: String
}
},{
toObject: {virtuals:true},
toJSON: {virtuals:true}
});
// Foreign keys definitions
provisionSchema.virtual('_scenarioDoc', {
ref: 'Scenario',
localField: 'scenario',
foreignField: 'name',
justOne: true // for many-to-1 relationships
});
module.exports = mongoose.model('Provision', provisionSchema)

View File

@@ -6,7 +6,8 @@ mongoose.set('useFindAndModify', false);
const scenarioSchema = new mongoose.Schema({
created: {
type: Date,
default: Date.now
default: Date.now,
index : true
},
updated: {
type: Date,
@@ -14,11 +15,13 @@ const scenarioSchema = new mongoose.Schema({
},
version: {
type: String,
requred: true
required: true
},
name: {
type: String,
requred: true
unique : true,
required: true,
index: true
},
isAdminOnly: {
type: Boolean,
@@ -28,20 +31,26 @@ const scenarioSchema = new mongoose.Schema({
type: Boolean,
default: false
},
isExternal: {
isExterrequirednal: {
type: Boolean,
default: false
},
isDisabled: {
type: Boolean,
default: false
},
title: {
type: String,
requred: true
required: true
},
description: String,
vmTypeDefault: String,
nodeCount: Number,
availableProductVersions: Array,
productVersionDefault: String,
newImageName: String //For Gen scenarios
newImageName: String, //For Gen scenarios
subscription: {
type: mongoose.Types.ObjectId, ref: 'Subscription',
required: true
}
});

View File

@@ -0,0 +1,37 @@
const mongoose = require('mongoose')
mongoose.set('useFindAndModify', false);
//mongoose.set('debug', true)
const subSchema = new mongoose.Schema({
created: {
type: Date,
default: Date.now,
index : true
},
updated: {
type: Date,
default: Date.now
},
subsId: {
type: String,
required: true
},
description: {
type: String,
required: true
},
vnetExists: {
type: Boolean,
required: true,
default: false
},
subnetId: {
type: String
},
appGwSubnetId: {
type: String
}
});
module.exports = mongoose.model('Subscription', subSchema);

View File

@@ -6,7 +6,8 @@ mongoose.set('useFindAndModify', false);
const userSchema = new mongoose.Schema({
created: {
type: Date,
default: Date.now
default: Date.now,
index : true
},
updated: {
type: Date,
@@ -21,7 +22,10 @@ const userSchema = new mongoose.Schema({
role: {
type: String,
default: "user"
}
},
lastLogin: {
type: Date
},
});

View File

@@ -6,7 +6,11 @@ mongoose.set('useFindAndModify', false);
const userSchema = new mongoose.Schema({
type: String,
desc: String,
costHour: Number
costHour: Number,
disabled: {
type: Boolean,
default: false
}
});

View File

@@ -1,4 +1,5 @@
const mongoose = require('mongoose');
const boom = require('@hapi/boom');
const options = {
loggerLevel: 'error',
useNewUrlParser: true,
@@ -8,57 +9,69 @@ const options = {
useUnifiedTopology: true
};
console.log("--- MongoDB connecting...");
// Connect to DB
mongoose.connect(process.env.MONGO_URI, options);
// When successfully connected
mongoose.connection.on('connected', () => {
console.log('MongoDB connected...');
console.log('--- MongoDB connected');
});
// When successfully reconnected
mongoose.connection.on('reconnected', () => {
console.log('dbevent: reconnected');
console.log('--- MongoDB dbevent: reconnected');
});
// If the connection throws an error
mongoose.connection.on('error', (err) => {
console.log(`dbevent: error: ${err}`);
console.log(`--- MongoDB dbevent: error: ${err}`);
//console.log(`Retry mongo connect`);
//mongoose.connect(process.env.MONGO_URI, options);
});
// External Dependancies
const boom = require('boom');
// Get Data Models
const Scenario = require('./models/Scenario');
const Provision = require('./models/Provision');
const Destroy = require('./models/Destroy');
const User = require('./models/User');
const Scenario = require('./models/Scenario');
const VmType = require('./models/VmType');
const ApiKey = require('./models/ApiKey');
const Notification = require('./models/Notification');
const Subscription = require('./models/Subscription');
const getNewCountExtend = function(provision) {
return provision.countExtend !== undefined? (provision.countExtend + 1) : 1;
};
const getNewTimeRunning = function (provision) {
let runningFrom = provision.runningFrom? new Date(provision.runningFrom).getTime() : new Date(provision.created).getTime();
let timeRunning = provision.timeRunning !== undefined? provision.timeRunning : 0; //minutes
let diffMinutes = Math.abs(new Date().getTime() - runningFrom)/1000/60;
let minutesFromLastRunning = Math.floor(diffMinutes);
if ( provision.statusVms === 'Stopped' ) {
return timeRunning;
} else {
let runningFrom = provision.runningFrom? new Date(provision.runningFrom).getTime() : new Date(provision.created).getTime();
let diffMinutes = Math.abs(new Date().getTime() - runningFrom)/1000/60;
let minutesFromLastRunning = Math.floor(diffMinutes);
return Math.floor(minutesFromLastRunning + timeRunning);
}
return Math.floor(minutesFromLastRunning + timeRunning);
};
const get = async (model, filter, skip, limit, reply) => {
var sort = {created: -1};
const get = async (model, filter, select, skip, limit, populates, reply) => {
var sort = {};
var modelAttributes = Object.keys(model.schema.tree);
if ( modelAttributes.indexOf("created") !== -1) {
sort = {created: -1};
}
try {
var exec = model.find(filter).sort(sort);
var exec = model.find(filter, select).sort(sort);
var totalDocs = await model.countDocuments(filter);
skip = skip? parseInt(skip) : 0;
@@ -68,15 +81,26 @@ const get = async (model, filter, skip, limit, reply) => {
limit = parseInt(limit);
exec = exec.limit(limit);
}
if ( populates ) {
populates = JSON.parse(populates);
populates.forEach(p=> {
exec = exec.populate(p);
});
} else {
if ( model === Provision ) {
exec = exec.populate({ path: 'user', select: 'displayName upn'}).populate({path:'destroy', select: "-user -jobId"}).populate({path:'_scenarioDoc', select: "-availableProductVersions -updated -created"});
}
if ( model === ApiKey ) {
exec = exec.populate('user');
}
if ( model === Provision ) {
exec = exec.populate({ path: 'user', select: 'displayName upn'}).populate('destroy');
if ( model = Scenario ) {
exec = exec.populate('subscription');
}
}
if ( model === ApiKey ) {
exec = exec.populate('user');
}
const entity = await exec;
var out = {
total: totalDocs,
@@ -98,11 +122,14 @@ const getById = async (model, id, reply) => {
try {
var exec = model.findById(id);
if ( model === Provision ) {
exec = exec.populate({ path: 'user', select: 'displayName upn'}).populate('destroy');
exec = exec.populate('user').populate('destroy').populate('_scenarioDoc');
}
if ( model === ApiKey ) {
exec = exec.populate('user');
}
if ( model = Scenario ) {
exec = exec.populate('subscription');
}
const entity = await exec;
return entity;
} catch (err) {
@@ -114,11 +141,14 @@ const getOne = async (model, filter, reply) => {
try {
var exec = model.findOne(filter);
if ( model === Provision ) {
exec = exec.populate('user').populate('destroy');
exec = exec.populate('user').populate('destroy').populate('_scenarioDoc');
}
if ( model === ApiKey ) {
exec = exec.populate('user');
}
if ( model = Scenario ) {
exec = exec.populate('subscription');
}
const entity = await exec;
return entity;
} catch (err) {
@@ -144,6 +174,12 @@ const update = async (model, id, body, reply) => {
if ( model === Provision ) {
exec = exec.populate('user').populate('destroy');
}
if ( model === ApiKey ) {
exec = exec.populate('user');
}
if ( model = Scenario ) {
exec = exec.populate('subscription');
}
const update = await exec;
return update;
} catch (err) {
@@ -162,8 +198,8 @@ const del = async (model, id, reply) => {
function _m(model) {
return {
get: async (filter, skip, limit, reply) => {
return get(model, filter, skip, limit, reply);
get: async (filter, select, skip, limit, populates, reply) => {
return get(model, filter, select, skip, limit, populates, reply);
},
getById: async (id, reply) => {
return getById(model, id, reply);
@@ -191,6 +227,7 @@ module.exports = {
vmtype: _m(VmType),
apiKey: _m(ApiKey),
notification: _m(Notification),
subscription: _m(Subscription),
user: _m(User),
utils: {
getNewTimeRunning: getNewTimeRunning,
@@ -204,7 +241,8 @@ module.exports = {
User: User,
VmType: VmType,
Notification: Notification,
ApiKey: ApiKey
ApiKey: ApiKey,
Subscription: Subscription
}
};

View File

@@ -0,0 +1,12 @@
{
"name": "qmi-cloud-common",
"version": "1.1.3",
"dependencies": {
"@hapi/boom": "^9.1.0",
"mongoose": "^5.7.4",
"nodemailer": "^6.4.2",
"azure-arm-compute": "^10.0.0",
"ms-rest-azure": "^3.0.0",
"bull": "^3.11.0"
}
}

View File

@@ -4,7 +4,13 @@ const FROM = '"Qlik" <no-reply@qlik.com>';
var transporter;
const RUNNING_PERIOD = 4;
const STOP_PERIOD = 10;
const RUNNING_PERIOD_WARNING_DAYS = 1;
const STOP_PERIOD = 20;
const STOP_PERIOD_WARNING_DAYS = 2;
const RUNNING_PERIOD_WARNING_HOURS = RUNNING_PERIOD_WARNING_DAYS*24;
const STOP_PERIOD_WARNING_HOURS = STOP_PERIOD_WARNING_DAYS*24;
if ( process.env.GMAIL_USERNAME && process.env.GMAIL_PASSWORD ) {
@@ -66,13 +72,13 @@ function getHtmlScenarioDestroyIn24( provision, scenario) {
<p style="margin:0px">QMI Cloud</p>
</div>
<div style="color:#404040;font-size:22px;margin:20px 0px 40px 0px">
<p style="margin:0px">Provision '${scenario.title}' inactive more than ${(STOP_PERIOD - 1)} days</p>
<p style="margin:0px">Provision '${scenario.title}' inactive more than ${(STOP_PERIOD - STOP_PERIOD_WARNING_DAYS)} days</p>
</div>
<div style="color:#404040;font-size:18px;margin:10px 0px">
<p style="margin:0px;color: #FF2020">This scenario will be automatically DESTROYED in less than 24h.</p>
<p style="margin:0px;color: #FF2020">This scenario will be automatically DESTROYED in ${STOP_PERIOD_WARNING_HOURS} hours.</p>
</div>
<div style="color:#404040;font-size:16px;margin:30px 0px">
<p style="margin:0px">If you don't want this to happen, you've got 24 hours (from when this email was sent) as a grace period to get back at 'Running' status this provision.</p>
<p style="margin:0px">If you don't want this to happen, you've got ${STOP_PERIOD_WARNING_HOURS} hours (from when this email was sent) as a grace period to get back at 'Running' status this provision.</p>
</div>
${common}
<div style="color:#404040;font-size:16px;margin:30px 0px">
@@ -115,16 +121,16 @@ function getHtmlScenarioWillStopIn24( provision, scenario ) {
<p style="margin:0px">QMI Cloud</p>
</div>
<div style="color:#404040;font-size:22px;margin:20px 0px 40px 0px">
<p style="margin:0px">Provision '${scenario.title}'</p>
<p style="margin:0px">Provision '${scenario.title}' - VMs running for ${(RUNNING_PERIOD - RUNNING_PERIOD_WARNING_DAYS)} days</p>
</div>
<div style="color:#404040;font-size:18px;margin:10px 0px">
<p style="margin:0px;color: #FF2020">This scenario will automatically stop its VMs in less than 24h.</p>
<p style="margin:0px;color: #FF2020">This scenario will automatically stop its VMs in ${RUNNING_PERIOD_WARNING_HOURS} hours.</p>
</div>
<div style="color:#404040;font-size:18px;margin:20px 0px 10px 0px">
<p style="margin:0px;color: #FF2020">Take action and extend the period ${RUNNING_PERIOD} extra days.</p>
</div>
<div style="color:#404040;font-size:16px;margin:30px 0px">
<p style="margin:0px">If you don't want the VMs to automatically stop, you've got 24 hours (from when this email was sent) as a grace period to extend this scenario's <b style="color: #009845">Running</b> VMs for ${RUNNING_PERIOD} extra days.</p>
<p style="margin:0px">If you don't want the VMs to automatically stop, you've got ${RUNNING_PERIOD_WARNING_HOURS} hours (from when this email was sent) as a grace period to extend this scenario's <b style="color: #009845">Running</b> VMs for ${RUNNING_PERIOD} extra days.</p>
</div>
${common}
<div style="color:#404040;font-size:16px;margin:30px 0px">
@@ -232,14 +238,14 @@ async function sendDestroyed(provision, scenario ) {
async function sendWillStopIn24( provision, scenario ) {
const htmlText = getHtmlScenarioWillStopIn24( provision, scenario);
await _doSend(provision.user.upn, 'QMI Cloud - VMs will stop in less than 24h', htmlText);
await _doSend(provision.user.upn, `QMI Cloud - VMs will stop in ${RUNNING_PERIOD_WARNING_HOURS} hours`, htmlText);
}
async function sendWillDestroyIn24( provision, scenario ) {
const htmlText = getHtmlScenarioDestroyIn24( provision, scenario);
await _doSend(provision.user.upn, 'QMI Cloud - Provision will destroy in less than 24h', htmlText);
await _doSend(provision.user.upn, `QMI Cloud - Provision will destroy in ${STOP_PERIOD_WARNING_HOURS} hours`, htmlText);
}
async function sendVMsStopped( provision, scenario ) {
@@ -253,3 +259,5 @@ module.exports.sendDestroyed = sendDestroyed;
module.exports.sendWillStopIn24 = sendWillStopIn24;
module.exports.sendVMsStopped = sendVMsStopped;
module.exports.sendWillDestroyIn24 = sendWillDestroyIn24;

View File

@@ -0,0 +1,18 @@
# Stage 1: NOTE: context is actually ../
FROM node:13.8-alpine AS sources
RUN apk --no-cache add yarn
WORKDIR /app
ADD ./qmi-cloud-worker ./
ADD ./qmi-cloud-common ../qmi-cloud-common
RUN yarn install --production
# Stage 2:
FROM node:13.8-alpine AS production
WORKDIR /app
COPY --from=sources /app ./
CMD ["node", "-r", "esm", "index.js"]

View File

@@ -0,0 +1,72 @@
const db = require('qmi-cloud-common/mongo');
const path = require('path');
const PROJECT_PATH = process.env.PROJECT_PATH;
const tf = require("./docker/tf");
const azure = require("./docker/azure");
const sendEmail = require("qmi-cloud-common/send-email");
module.exports = async function(job) {
var prov = await db.provision.update(job.data.id, {
"status": "initializing",
"jobId": job.id,
"logFile": path.join('/logs', 'provision', `${job.data.id}.log`),
"path": path.join(PROJECT_PATH, '..', 'qmi-cloud-provisions', `${job.data.scenario}_${job.data.id}`)
});
if ( !prov ) {
console.log(`Error: Not found Provision object in Database (it should exist!), provisionId is: ${job.data.id}` );
return Promise.reject({"success": false, "err": "Not found Provision object in Worker"});
}
// TERRAFORM INIT
return tf.init(prov)
.then(async function(res) {
if ( res.statusCode === 1 ) {
console.log("Error at INIT");
return Promise.reject({"success": false, "error": "Error at Terraform Init", provStatus: "error_init"});
} else {
// TERRAFORM PLAN
return tf.plan(prov, job.data._scenario);
}
} )
.then( async function(res) {
if ( res.statusCode === 1 ) {
console.log("Error at PLAN");
return Promise.reject({"success": false, "error": "Error at Terraform Plan", provStatus: "error_plan"});
} else {
return await db.provision.update(prov._id,{"status": "provisioning", "statusVms": "Running", "runningFrom": new Date(), "runningTime": 0, "countExtend": 0});
}
} ).then( function(prov) {
// TERRAFORM APPLY
return tf.apply(prov);
} ).then( async function(res) {
if ( res.statusCode === 1 ) {
console.log("Error at APPLY");
}
var status = ( res.output.indexOf("Error:") !== -1 )? "error" : "provisioned";
return await db.provision.update(prov._id, {"status": status});
} ).then( async function(prov) {
return tf.outputs(prov).then( async function(outputs){
return await db.provision.update(prov._id, {"outputs": outputs});
});
} ).then( async function(prov) {
// Application Gateway assign policy
return azure.appgateway(prov, job.data._scenario);
} ).then( async function(prov) {
// Create Image
return azure.createimage(prov, job.data._scenario);
} ).then( function(prov) {
if (prov.status === "provisioned") {
sendEmail.send(prov, job.data._scenario);
} else {
sendEmail.sendError(prov, job.data._scenario);
}
return Promise.resolve({"success": true, provMongo: prov});
} ).catch( function(err) {
console.log("Provision: error", err);
db.provision.update(prov._id, {"status": err.provStatus? err.provStatus : 'error'});
sendEmail.sendError(prov, job.data._scenario);
return Promise.reject({"success": false, "error": err});
} );
}

View File

@@ -4,14 +4,14 @@ const docker = new Docker({
//'socketPath': '/var/run/docker.sock'
});
const fs = require("fs");
const DOCKERIMAGE = "mcr.microsoft.com/azure-powershell";
const DOCKERIMAGE = process.env.DOCKERIMAGE_AZURE_POWERSHELL || "mcr.microsoft.com/azure-powershell";
//const cmd = `docker run --net=host -w /myapp -v ${FOLDER}:/myapp mcr.microsoft.com/azure-powershell pwsh appgw.ps1 -ApplicationGatewayName ${appGwName}`;
const appgateway = function( mongoJob, scenario ) {
const appgateway = function( provision, scenario ) {
if ( mongoJob.status === 'provisioned' && scenario.isWafPolicyAppGw ) {
var provision_id = mongoJob._id.toString();
var processStream = fs.createWriteStream(mongoJob.logFile, {flags:'a'});
if ( provision.status === 'provisioned' && scenario.isWafPolicyAppGw && provision.isExternalAccess ) {
var provision_id = provision._id.toString();
var processStream = fs.createWriteStream(provision.logFile, {flags:'a'});
var name = 'qmi-azureps-appgw-'+provision_id;
console.log(`AzurePS: will spin up container: ${name}`);
@@ -20,7 +20,7 @@ const appgateway = function( mongoJob, scenario ) {
"WorkingDir": "/myapp",
"HostConfig": {
"Binds": [
`${mongoJob.path}/shell:/myapp`
`${provision.path}/shell:/myapp`
],
"NetworkMode": "host"
}
@@ -31,23 +31,23 @@ const appgateway = function( mongoJob, scenario ) {
return container.remove();
}).then(function() {
console.log(`AzurePS: ${name} removed!`);
return Promise.resolve(mongoJob);
return Promise.resolve(provision);
});
} else {
return Promise.resolve(mongoJob);
return Promise.resolve(provision);
}
};
const createimage = function( mongoJob, scenario ) {
const createimage = function( provision, scenario ) {
if ( mongoJob.status === 'provisioned' && scenario.newImageName ) {
var provision_id = mongoJob._id.toString();
var processStream = fs.createWriteStream(mongoJob.logFile, {flags:'a'});
if ( provision.status === 'provisioned' && scenario.newImageName ) {
var provision_id = provision._id.toString();
var processStream = fs.createWriteStream(provision.logFile, {flags:'a'});
var name = 'qmi-azureps-createimage-'+provision_id;
let rgName = mongoJob.scenario.toUpperCase();
let rgName = provision.scenario.toUpperCase();
rgName = rgName + "-" + provision_id;
let imageName = scenario.newImageName + "-" + new Date().getTime();
@@ -59,7 +59,7 @@ const createimage = function( mongoJob, scenario ) {
"WorkingDir": "/myapp",
"HostConfig": {
"Binds": [
`${mongoJob.path}/shell:/myapp`
`${provision.path}/shell:/myapp`
],
"NetworkMode": "host"
}
@@ -70,11 +70,11 @@ const createimage = function( mongoJob, scenario ) {
return container.remove();
}).then(function() {
console.log(`AzurePS: ${name} removed!`);
return Promise.resolve(mongoJob);
return Promise.resolve(provision);
});
} else {
return Promise.resolve(mongoJob);
return Promise.resolve(provision);
}
};

Some files were not shown because too many files have changed in this diff Show More