| 172 | } |
| 173 | |
| 174 | public void offers(Mesos mesos, List<Offer> offers) { |
| 175 | double CPUS_PER_TASK = 1; |
| 176 | double MEM_PER_TASK = 128; |
| 177 | |
| 178 | for (Offer offer : offers) { |
| 179 | Offer.Operation.Launch.Builder launch = |
| 180 | Offer.Operation.Launch.newBuilder(); |
| 181 | |
| 182 | double offerCpus = 0; |
| 183 | double offerMem = 0; |
| 184 | for (Resource resource : offer.getResourcesList()) { |
| 185 | if (resource.getName().equals("cpus")) { |
| 186 | offerCpus += resource.getScalar().getValue(); |
| 187 | } else if (resource.getName().equals("mem")) { |
| 188 | offerMem += resource.getScalar().getValue(); |
| 189 | } |
| 190 | } |
| 191 | |
| 192 | System.out.println( |
| 193 | "Received offer " + offer.getId().getValue() + " with cpus: " + |
| 194 | offerCpus + " and mem: " + offerMem); |
| 195 | |
| 196 | double remainingCpus = offerCpus; |
| 197 | double remainingMem = offerMem; |
| 198 | while (launchedTasks < totalTasks && |
| 199 | remainingCpus >= CPUS_PER_TASK && |
| 200 | remainingMem >= MEM_PER_TASK) { |
| 201 | TaskID taskId = TaskID.newBuilder() |
| 202 | .setValue(Integer.toString(launchedTasks++)).build(); |
| 203 | |
| 204 | System.out.println("Launching task " + taskId.getValue() + |
| 205 | " using offer " + offer.getId().getValue()); |
| 206 | |
| 207 | TaskInfo task = TaskInfo.newBuilder() |
| 208 | .setName("task " + taskId.getValue()) |
| 209 | .setTaskId(taskId) |
| 210 | .setAgentId(offer.getAgentId()) |
| 211 | .addResources(Resource.newBuilder() |
| 212 | .setName("cpus") |
| 213 | .setType(Value.Type.SCALAR) |
| 214 | .setScalar(Value.Scalar.newBuilder() |
| 215 | .setValue(CPUS_PER_TASK) |
| 216 | .build())) |
| 217 | .addResources(Resource.newBuilder() |
| 218 | .setName("mem") |
| 219 | .setType(Value.Type.SCALAR) |
| 220 | .setScalar(Value.Scalar.newBuilder() |
| 221 | .setValue(MEM_PER_TASK) |
| 222 | .build())) |
| 223 | .setExecutor(ExecutorInfo.newBuilder(executor)) |
| 224 | .build(); |
| 225 | |
| 226 | launch.addTaskInfos(TaskInfo.newBuilder(task)); |
| 227 | |
| 228 | remainingCpus -= CPUS_PER_TASK; |
| 229 | remainingMem -= MEM_PER_TASK; |
| 230 | } |
| 231 | |