Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
5e68e0e
Feature: View and update associated storage account (#406)
timotheeguerin May 29, 2017
4eec32a
Fix: Remove fdescribe, fix specs and fix tslint (#411)
timotheeguerin May 30, 2017
a212630
Feature: New design for actions buttons on details & Fix disabled but…
timotheeguerin May 30, 2017
c151353
Update storage account and vmSize table to fix active problem (#415)
timotheeguerin May 31, 2017
08ed6fe
Use css variables and abstract colors as primary, danger, warn, succe…
timotheeguerin May 31, 2017
44fc947
Fix: Disabled editing tags for a completed job & small refactor (#421)
timotheeguerin Jun 1, 2017
de5e0cb
Fix: dashboard tables return to line if window too small (#419)
timotheeguerin Jun 2, 2017
b7672b0
Wait for the fetch to complete before returning an item (#430)
timotheeguerin Jun 6, 2017
a1d72d6
Feature: Low priority support (#424)
timotheeguerin Jun 6, 2017
261e6be
Fix: Only reset graphs if the pool id changes (#431)
timotheeguerin Jun 6, 2017
085a9be
Fix custom image pool making list crash (#435)
timotheeguerin Jun 6, 2017
d570e0f
Feature: Scheduling error refactor to Failure info with more error po…
timotheeguerin Jun 6, 2017
726f4ff
Fix: List classic storage accounts too (#438)
timotheeguerin Jun 7, 2017
cd76696
Feature: Entities are refreshing every 10 seconds automatically (#436)
timotheeguerin Jun 7, 2017
a3203cb
Support quick adding of other output files (#423)
ascobie Jun 8, 2017
e9e6979
Make navigation bar thiner and define focus style (#444)
timotheeguerin Jun 8, 2017
beb7286
Fix: start-task tab padding (#442)
ascobie Jun 9, 2017
352b817
Feature: Display batch account quotas & refactor pool resize errors (…
timotheeguerin Jun 9, 2017
b889bcd
job manager task data and load more button styling (#449)
ascobie Jun 13, 2017
5f0bfec
Feature: load the dashboard on app load if an account is selected in …
paselem Jun 13, 2017
fbc2b09
Feature: Heatmap load all nodes (#452)
timotheeguerin Jun 13, 2017
9b3e24a
Feature: Load all tasks running on a pool (#455)
timotheeguerin Jun 14, 2017
f1d2754
Fix: Files summary card style not updated for new actions buttons (#459)
ascobie Jun 15, 2017
acc129c
Fix: banner showing Fixed when switching entity (#461)
timotheeguerin Jun 15, 2017
d00c0ba
Start task form not reseting every time the pool is updated (#464)
timotheeguerin Jun 15, 2017
29eed1a
Enable pricing and fix it being hard coded for linux (#465)
timotheeguerin Jun 15, 2017
fd74eff
Added support for images and code filetypes (#468)
timotheeguerin Jun 16, 2017
49cd040
Feature: Python to node communication using RPC server (#440)
timotheeguerin Jun 16, 2017
099c797
add additional items to the pool config tab (#463)
ascobie Jun 19, 2017
f632aab
Fix: Don't show large files in batch labs but propose to open in exte…
timotheeguerin Jun 19, 2017
58c42e6
add start task failure info banner to node (#475)
ascobie Jun 19, 2017
c53dde2
Typos and grammar edits in Readme.md (#477)
davefellows Jun 20, 2017
16bc92b
Fix: Failure info decorator (#484)
timotheeguerin Jun 20, 2017
a9c26ae
Node connect (#485)
timotheeguerin Jun 20, 2017
02e5fc0
Test for windows offer types that are differnt format to existing (#483)
ascobie Jun 20, 2017
ef02e97
Feature: Job prep/release task support v1 (#488)
timotheeguerin Jun 21, 2017
3c1cd72
Prepare release 0.5.0 (#492)
timotheeguerin Jun 21, 2017
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
10 changes: 10 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,19 @@
language: node_js
dist: trusty
sudo: false
node_js:
- '6.9.4'
python:
- "3.6"

before_install:
- python3 --version

install:
- npm install -g yarn
- yarn install
- python3 --version
- pip3 install -r python/requirements.txt

before_script:
- export DISPLAY=:99.0
Expand All @@ -13,6 +22,7 @@ before_script:

script:
- ./scripts/travis/build-and-test.sh
- pylint python/main.py

branches:
only:
Expand Down
4 changes: 2 additions & 2 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@
"name": "Launch",
"type": "node",
"request": "launch",
"program": "${workspaceRoot}/client/main.ts",
"program": "${workspaceRoot}/src/client/main.ts",
"stopOnEntry": false,
"args": [],
"cwd": "${workspaceRoot}",
"preLaunchTask": "build-node-ts",
"preLaunchTask": "build-client",
"runtimeExecutable": "${workspaceRoot}/node_modules/.bin/electron",
"windows": {
"runtimeExecutable": "${workspaceRoot}/node_modules/.bin/electron.cmd"
Expand Down
3 changes: 3 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@
"release/**": true,
"dll/**": true
},
"python.autoComplete.extraPaths": [
"${workspaceRoot}/python"
],
"tslint.jsEnable": true,
"tslint.autoFixOnSave": true,
"vsicons.presets.angular": true,
Expand Down
2 changes: 1 addition & 1 deletion .vscode/tasks.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
],
"tasks": [
{
"taskName": "build-node-ts",
"taskName": "build-client",
"args": [],
"isBuildCommand": true
},
Expand Down
16 changes: 16 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,19 @@
# Version 0.5.0(Beta)
[All items](https://github.com/Azure/BatchLabs/milestone/5?closed=1)

### Features
* Link Storage account in batch labs [\#385](https://github.com/Azure/BatchLabs/issues/385)
* New actions buttons [\#408](https://github.com/Azure/BatchLabs/issues/408)
* Low priority VMs [\#414](https://github.com/Azure/BatchLabs/issues/414)
* Details now refresh automatically every 10 seconds [\#428](https://github.com/Azure/BatchLabs/issues/428)
* Show batch account quotas [\#413](https://github.com/Azure/BatchLabs/issues/413)
* Job show manager task details [\#447](https://github.com/Azure/BatchLabs/issues/447)
* Preview images(and gif) and code files in labs [\#417](https://github.com/Azure/BatchLabs/issues/417)
* Setup python support for ncj [\#439](https://github.com/Azure/BatchLabs/issues/439)
* Task output quick add otherfiles for debug [\#184](https://github.com/Azure/BatchLabs/issues/184)
* Job prep/release task status read experience [\#429](https://github.com/Azure/BatchLabs/issues/429)
* Start task failed show error banner on node details [\#476](https://github.com/Azure/BatchLabs/issues/476)

# Version 0.4.0(Beta)
[All items](https://github.com/Azure/BatchLabs/milestone/3?closed=1)

Expand Down
20 changes: 10 additions & 10 deletions Readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@

**Note: BatchLabs is in beta. We don't provide any installer/packaged binaries as of now. You will need to build this app yourself.**

This is the readme for master branch is contains the latest changes. Stable might be slightly different [Stable readme](https://github.com/Azure/BatchLabs/tree/stable)
This is the readme for the 'master' branch which contains the latest changes, 'stable' may differ from this [Stable readme](https://github.com/Azure/BatchLabs/tree/stable)

## Description

Batch Labs is a tool to manage your Azure Batch accounts. The goal is to implement some great user experience that will help you debug, monitor and manage your pools, jobs and tasks.
It will also include expermiental features such as `No Code Job` in the aim to improve your Batch experience. We are open to any feedback, ideas and contribution you might have.
Batch Labs is a tool to manage your Azure Batch accounts. The goal is to implement a great user experience that will help you debug, monitor and manage your pools, jobs and tasks.
It will also include expermiental features such as `Batch Templates` in the aim to improve your Batch experience. We are open to any feedback, ideas and contributions you might have.

## Getting started
#### 1. Prerequisites
Expand All @@ -24,7 +24,7 @@ Move to the directory `cd BatchLabs`
```bash
yarn install
```
Note: You can also use `npm install` at your own risk. However please do not submit an issue if you didn't use `yarn install`. Yarn will make sure you have the exact same set of dependencies as everybody which remove any unexpected third party bugs problems.
Note: You can also use `npm install` at your own risk. However please do not submit an issue if you didn't use `yarn install`. Yarn will make sure you have the right set of dependencies, which reduces the likelihood of any unexpected build issues relating to third party packages.

#### 4. Build and run the application
```bash
Expand All @@ -44,7 +44,7 @@ npm run electron
[Dev docs](docs/readme.md)

For developers, you can set up a development environment as follows:
**Use `yarn install` instead of `npm install` this will makes sure everybody has the same exact set of depenencies [Migrating from npm to yarn](https://yarnpkg.com/lang/en/docs/migrating-from-npm/)**
**Use `yarn install` instead of `npm install`. This ensures a consistent build environment with the right set of dependencies [Migrating from npm to yarn](https://yarnpkg.com/lang/en/docs/migrating-from-npm/)**

Start the dev server
```bash
Expand All @@ -61,7 +61,7 @@ npm run dev-electron

The dev-server and dev-electron support hot reload for a better development experience. Simply saving a file will cause the UI to refresh to your updated changes.

*Note:* Changes to any files in the node client directory ('\client\') require restarting the application.
*Note:* Changes to any files in the node client directory ('src/client') require restarting the application.

If you're using VSCode (recommended) we suggest you use the following extensions:
* Debugger for Chrome
Expand All @@ -79,7 +79,7 @@ Please also take a look at the [coding guidelines](coding-guidelines.md) for thi
In vscode install the editorconfig extension

## Detailed commands:
**Magic command(Starts the server and electron in dev mode)**
**Magic command (starts the server and electron in dev mode)**
```
npm run dev
```
Expand All @@ -94,17 +94,17 @@ Run app
npm run electron
```

Run watch(This will build files on save)
Run watch (this will build files on save)
```
npm run watch
```

Run dev server(This will handle the refresh of files and later should have live reloead)
Run dev server (this will handle the refresh of files and later should have live reload)
```
npm run dev-server
```

Run dev electron(To use the dev server you need to run this)
Run dev electron (to use the dev server you need to run this)
```
npm run dev-electron
```
Expand Down
13 changes: 9 additions & 4 deletions app/app.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ import { DomSanitizer } from "@angular/platform-browser";
import { registerIcons } from "app/config";
import {
AccountService, AdalService, AutoscaleFormulaService, CommandService, NodeService,
PredefinedFormulaService, SSHKeyService, SettingsService, SubscriptionService, VmSizeService,
PredefinedFormulaService, PricingService, PythonRpcService, SSHKeyService, SettingsService, SubscriptionService,
VmSizeService,
} from "app/services";
import { SidebarContentComponent, SidebarManager } from "./components/base/sidebar";

Expand Down Expand Up @@ -44,17 +45,21 @@ export class AppComponent implements AfterViewInit, OnInit {
private subscriptionService: SubscriptionService,
private nodeService: NodeService,
private sshKeyService: SSHKeyService,
pythonRpcService: PythonRpcService,
private vmSizeService: VmSizeService,
private predefinedFormulaService: PredefinedFormulaService) {
private pricingService: PricingService,
private predefinedFormulaService: PredefinedFormulaService,
) {
this.autoscaleFormulaService.init();
this.settingsService.init();
this.sshKeyService.init();
this.commandService.init();
// Init the pricing when good to go.
// this.pricingService.init();
this.pricingService.init();
this.vmSizeService.init();
this.adalService.init(adalConfig);
this.accountService.loadInitialData();
pythonRpcService.init();

this.predefinedFormulaService.init();
this.hasAccount = accountService.currentAccount.map((x) => Boolean(x));

Expand Down
12 changes: 12 additions & 0 deletions app/app.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ import { TaskModule } from "app/components/task/task.module";
import { BatchLabsErrorHandler } from "app/error-handler";

// services
import { HttpModule } from "@angular/http";
import { PollService } from "app/services/core";
import {
AccountService,
AdalService,
Expand All @@ -37,21 +39,25 @@ import {
AzureHttpService,
BatchClientService,
CommandService,
ComputeService,
ElectronRemote,
ElectronShell,
FileService,
FileSystemService,
GithubDataService,
HttpUploadService,
JobHookTaskService,
JobService,
LocalFileStorage,
NodeService,
NodeUserService,
PoolService,
PredefinedFormulaService,
PricingService,
PythonRpcService,
SSHKeyService,
SettingsService,
StorageAccountService,
StorageClientService,
StorageService,
SubscriptionService,
Expand Down Expand Up @@ -82,6 +88,7 @@ const modules = [
FormsModule,
MaterialModule,
ReactiveFormsModule,
HttpModule,
RouterModule.forRoot(routes, { useHash: true }),
BaseModule,
...modules,
Expand All @@ -96,19 +103,24 @@ const modules = [
ArmHttpService,
BatchClientService,
CommandService,
ComputeService,
ElectronRemote,
ElectronShell,
FileService,
FileSystemService,
GithubDataService,
HttpUploadService,
JobHookTaskService,
JobService,
LocalFileStorage,
NodeService,
NodeUserService,
PollService,
PoolService,
PricingService,
PythonRpcService,
SettingsService,
StorageAccountService,
StorageClientService,
StorageService,
SSHKeyService,
Expand Down
9 changes: 9 additions & 0 deletions app/app.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { platformBrowserDynamic } from "@angular/platform-browser-dynamic";
import { remote } from "electron";
import * as MouseTrap from "mousetrap";

import { log } from "app/utils";
import { AppModule } from "./app.module";
Expand All @@ -25,3 +26,11 @@ platform.bootstrapModule(AppModule)
log.error("Bootstrapping failed :: ", error);
handleCoreError(error);
});

MouseTrap.bind("ctrl+shift+i", () => {
if (remote.getCurrentWindow().webContents.isDevToolsOpened()) {
remote.getCurrentWindow().webContents.closeDevTools();
} else {
remote.getCurrentWindow().webContents.openDevTools();
}
});
18 changes: 12 additions & 6 deletions app/components/account/account.module.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,21 @@
import { NgModule } from "@angular/core";

import { commonModules } from "app/common";
import { AccountCreateDialogComponent } from "app/components/account/action/add/account-create-dialog.component";
import { DeleteAccountDialogComponent } from "app/components/account/action/delete/delete-account-dialog.component";
import { AccountBrowseModule } from "app/components/account/browse";
import { AccountDefaultComponent, AccountDetailsComponent } from "app/components/account/details";
import { AccountHomeComponent } from "app/components/account/home";
import { EditStorageAccountFormComponent } from "app/components/account/action/edit-storage-account";
import { StorageAccountPickerComponent } from "app/components/account/base/storage-account-picker";
import { PoolDetailsModule } from "app/components/pool/details";
import { AccountCreateDialogComponent } from "./action/add/account-create-dialog.component";
import { DeleteAccountDialogComponent } from "./action/delete/delete-account-dialog.component";
import { AccountBrowseModule } from "./browse";
import { AccountDefaultComponent, AccountDetailsComponent } from "./details";
import { AccountQuotasCardComponent } from "./details/account-quotas-card";
import { StorageAccountCardComponent } from "./details/storage-account-card";
import { AccountHomeComponent } from "./home";

const components = [
AccountCreateDialogComponent, AccountDefaultComponent, AccountDetailsComponent,
AccountHomeComponent, DeleteAccountDialogComponent,
AccountHomeComponent, DeleteAccountDialogComponent, StorageAccountCardComponent,
EditStorageAccountFormComponent, StorageAccountPickerComponent, AccountQuotasCardComponent,
];

const modules = [
Expand All @@ -24,6 +29,7 @@ const modules = [
entryComponents: [
AccountCreateDialogComponent,
DeleteAccountDialogComponent,
EditStorageAccountFormComponent,
],
})
export class AccountModule {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
import { Component } from "@angular/core";
import { FormControl } from "@angular/forms";
import { autobind } from "core-decorators";
import { Observable } from "rxjs";

import { SidebarRef } from "app/components/base/sidebar";
import { AccountResource } from "app/models";
import { AccountPatchDto } from "app/models/dtos";
import { AccountService } from "app/services";

import "./edit-storage-account-form.scss";

@Component({
selector: "bl-edit-storage-account-form",
templateUrl: "edit-storage-account-form.html",
})
export class EditStorageAccountFormComponent {
public set account(account: AccountResource) {
this._account = account;
if (account) {
const props = account.properties;
this.storageAccountId.patchValue(props.autoStorage && props.autoStorage.storageAccountId);
}
}
public get account() { return this._account; }

public storageAccountId = new FormControl();

private _account: AccountResource;

constructor(
private accountService: AccountService,
public sidebarRef: SidebarRef<EditStorageAccountFormComponent>,
) { }

@autobind()
public submit(): Observable<any> {
const dto = new AccountPatchDto({ autoStorage: { storageAccountId: this.storageAccountId.value } });
const obs = this.accountService.patch(this.account.id, dto);
obs.subscribe(() => {
this.accountService.getOnce(this.account.id);
});
return obs;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<bl-simple-form [submit]="submit" [containerRef]="sidebarRef" [formGroup]="storageAccountId" [multiUse]="false" title="Update the storage account"
cancelText="Close" subtitle="Pick a storage account that will be assigned with this batch account.">
<form *ngIf="account">
<bl-storage-account-picker [formControl]="storageAccountId" [account]="account"></bl-storage-account-picker>
</form>
</bl-simple-form>
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from "./edit-storage-account-form.component";
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from "./storage-account-picker.component";
Loading