@SuppressWarnings("deprecation") private void freeAtomicResource(MesosResource mesosResource) { Resource.Builder resBuilder = Resource.newBuilder(mesosResource.getResource()); resBuilder.clearReservation(); resBuilder.setRole(Constants.ANY_ROLE); if (resBuilder.hasDisk()) { Resource.DiskInfo.Builder diskBuilder = Resource.DiskInfo.newBuilder(resBuilder.getDisk()); diskBuilder.clearPersistence(); diskBuilder.clearVolume(); resBuilder.setDisk(diskBuilder.build()); } Resource releasedResource = resBuilder.build(); List<MesosResource> resList = unreservedAtomicPool.get(mesosResource.getName()); if (resList == null) { resList = new ArrayList<>(); } resList.add(new MesosResource(releasedResource)); unreservedAtomicPool.put(mesosResource.getName(), resList); }
/** * The resource passed in is the fully completed Resource which will be launched. This may include volume/disk * information which is not appropriate for the RESERVE operation. It is filtered out here. */ private static Protos.Resource getReservedResource(Protos.Resource resource) { // The resource passed in is the fully completed Resource which will be launched. This may include volume/disk // information which is not appropriate for the RESERVE operation. It is filtered out here. Protos.Resource.Builder resBuilder = Protos.Resource.newBuilder(resource); if (resBuilder.hasDisk() && resBuilder.getDisk().hasSource()) { // Mount volume: Copy disk, but without 'persistence' nor 'volume' fields resBuilder.setDisk(Protos.Resource.DiskInfo.newBuilder(resBuilder.getDisk()) .clearPersistence() .clearVolume()); } else { // Root volume: Clear the disk. resBuilder.clearDisk(); } resBuilder.clearRevocable(); return resBuilder.build(); }