Ejemplo n.º 1
0
func (self *manager) ResourceRequirementsWouldMatch(offer *mesosproto.Offer, taskRequest *managerInterface.Task) bool {
	for _, resource := range offer.GetResources() {
		switch {
		case *resource.Name == "cpus":
			if resource.Scalar.GetValue() < float64(taskRequest.Cpus) {
				return false
			}
		case *resource.Name == "mem":
			if resource.Scalar.GetValue() < float64(taskRequest.Mem) {
				return false
			}
		}
	}
	for _, attribute := range offer.GetAttributes() {
		switch {
		case *attribute.Name == "nodetype":
			if len(taskRequest.NodeType) > 0 && attribute.Text.GetValue() != taskRequest.NodeType {
				return false
			}
		case *attribute.Name == "nodename":
			if len(taskRequest.NodeName) > 0 && attribute.Text.GetValue() != taskRequest.NodeName {
				return false
			}
		}
	}

	return true
}