pretty print mesos offers

Signed-off-by: Victor Vieux <victorvieux@gmail.com>
This commit is contained in:
Victor Vieux 2015-06-09 17:30:14 -07:00
parent 722b0e962d
commit c44151ff4a
2 changed files with 42 additions and 15 deletions

View File

@ -259,18 +259,6 @@ func (c *Cluster) RenameContainer(container *cluster.Container, newName string)
return nil
}
func scalarResourceValue(offers map[string]*mesosproto.Offer, name string) float64 {
var value float64
for _, offer := range offers {
for _, resource := range offer.Resources {
if *resource.Name == name {
value += *resource.Scalar.Value
}
}
}
return value
}
// listNodes returns all the nodess in the cluster.
func (c *Cluster) listNodes() []*node.Node {
c.RLock()
@ -280,9 +268,9 @@ func (c *Cluster) listNodes() []*node.Node {
for _, s := range c.slaves {
n := node.NewNode(s.engine)
n.ID = s.id
n.TotalCpus = int64(scalarResourceValue(s.offers, "cpus"))
n.TotalCpus = int64(sumScalarResourceValue(s.offers, "cpus"))
n.UsedCpus = 0
n.TotalMemory = int64(scalarResourceValue(s.offers, "mem")) * 1024 * 1024
n.TotalMemory = int64(sumScalarResourceValue(s.offers, "mem")) * 1024 * 1024
n.UsedMemory = 0
out = append(out, n)
}
@ -328,7 +316,7 @@ func (c *Cluster) Info() [][]string {
for _, offer := range offers {
info = append(info, []string{" Offer", offer.Id.GetValue()})
for _, resource := range offer.Resources {
info = append(info, []string{" └ " + *resource.Name, fmt.Sprintf("%v", resource)})
info = append(info, []string{" └ " + resource.GetName(), formatResource(resource)})
}
}

39
cluster/mesos/utils.go Normal file
View File

@ -0,0 +1,39 @@
package mesos
import (
"fmt"
"strings"
"github.com/docker/docker/pkg/units"
"github.com/mesos/mesos-go/mesosproto"
)
func formatResource(resource *mesosproto.Resource) string {
switch resource.GetType() {
case mesosproto.Value_SCALAR:
if resource.GetName() == "disk" || resource.GetName() == "mem" {
return units.BytesSize(resource.GetScalar().GetValue() * 1024 * 1024)
}
return fmt.Sprintf("%d", int(resource.GetScalar().GetValue()))
case mesosproto.Value_RANGES:
var ranges []string
for _, r := range resource.GetRanges().GetRange() {
ranges = append(ranges, fmt.Sprintf("%d-%d", r.GetBegin(), r.GetEnd()))
}
return strings.Join(ranges, ", ")
}
return "?"
}
func sumScalarResourceValue(offers map[string]*mesosproto.Offer, name string) float64 {
var value float64
for _, offer := range offers {
for _, resource := range offer.Resources {
if *resource.Name == name {
value += *resource.Scalar.Value
}
}
}
return value
}