func (c *Resources) checkResources(cluster core.ClusterInterface, service framework.ServiceConfig) error { requiredInstances, err := c.requiredInstances(cluster, service) if err != nil { return err } if requiredInstances == 0 { return nil } slaves, err := cluster.Slaves() if err != nil { return err } allowedInstances := 0 for _, v := range slaves { allowed := v.AllowedInstances(service.CPUShares, float64(service.Memory)) logger.Instance().Infof("Checking slave %s - Available CPU %f Mem %f - Allowed instances %d", v.Hostname, v.AvailableCpu(), v.AvailableMem(), allowed) if allowed > 0 { allowedInstances += allowed } } if allowedInstances < requiredInstances { return fmt.Errorf("Cluster %s doesn't have enough resources. It only accept %d instances.", cluster.Id(), allowedInstances) } logger.Instance().Infof("Checking Resources in cluster %s done", cluster.Id()) return nil }