feat: add task and dashboard controller

Signed-off-by: MiaoWoo <admin@yumc.pw>
This commit is contained in:
2019-07-05 16:04:05 +08:00
parent c47137ec4a
commit 28d541b26f
9 changed files with 277 additions and 11 deletions

View File

@@ -17,7 +17,8 @@ enum Type {
NODE = "NODE"
}
let TREE_LIST = [Type.NODES, Type.CONTAINERS, Type.SERVICES, Type.NETWORKS]
let TREE_LIST = [Type.NODES, Type.CONTAINERS, Type.SERVICES, Type.STACKS, Type.NETWORKS]
const STACK_LABEL = 'com.docker.stack.namespace';
export class DockerProvider extends BaseProvider<vscode.TreeItem> {
onDidChangeTreeData?: vscode.Event<vscode.TreeItem | null | undefined> | undefined;
@@ -117,9 +118,37 @@ export class DockerProvider extends BaseProvider<vscode.TreeItem> {
tooltip: JSON.stringify(n, undefined, 2)
})
})
case Type.CONTAINER:
break;
case Type.STACKS:
let stacks: { [key: string]: string[] } = {};
let svrs = await docker.service.list();
for (const service of svrs) {
let stackName = service.Spec.Labels[STACK_LABEL]
if (stackName) {
let stack = stacks[stackName] || [];
stack.push(service.Spec.Name);
stacks[stackName] = stack;
}
}
return Object.keys(stacks).map(stack => {
return this.createTreeItem({
label: stack,
context: {
type: Type.STACK,
data: {
name: stack,
list: stacks[stack]
}
},
state: vscode.TreeItemCollapsibleState.Collapsed
})
})
case Type.STACK:
let list: string[] = value.data.list;
return list.map(s => {
return this.createTreeItem({
label: s
})
})
default:
}
return [];