feat: add task and dashboard controller
Signed-off-by: MiaoWoo <admin@yumc.pw>
This commit is contained in:
@@ -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 [];
|
||||
|
||||
Reference in New Issue
Block a user