diff --git a/api/docker/snapshot.go b/api/docker/snapshot.go index 5f37ad985..d8c481fb7 100644 --- a/api/docker/snapshot.go +++ b/api/docker/snapshot.go @@ -30,6 +30,11 @@ func snapshot(cli *client.Client) (*portainer.Snapshot, error) { if err != nil { return nil, err } + + err = snapshotNodes(snapshot, cli) + if err != nil { + return nil, err + } } err = snapshotContainers(snapshot, cli) @@ -64,6 +69,22 @@ func snapshotInfo(snapshot *portainer.Snapshot, cli *client.Client) error { return nil } +func snapshotNodes(snapshot *portainer.Snapshot, cli *client.Client) error { + nodes, err := cli.NodeList(context.Background(), types.NodeListOptions{}) + if err != nil { + return err + } + var nanoCpus int64 + var totalMem int64 + for _, node := range nodes { + nanoCpus += node.Description.Resources.NanoCPUs + totalMem += node.Description.Resources.MemoryBytes + } + snapshot.TotalCPU = int(nanoCpus / 1e9) + snapshot.TotalMemory = totalMem + return nil +} + func snapshotSwarmServices(snapshot *portainer.Snapshot, cli *client.Client) error { stacks := make(map[string]struct{}) diff --git a/app/docker/views/dashboard/dashboard.html b/app/docker/views/dashboard/dashboard.html index 2e31750fb..3821dfead 100644 --- a/app/docker/views/dashboard/dashboard.html +++ b/app/docker/views/dashboard/dashboard.html @@ -45,7 +45,10 @@