class ResourceProfile implements Serializable, Comparable<ResourceProfile> {

	public static ResourceProfile fromResourceSpec(ResourceSpec resourceSpec, int networkMemory) {
		if (ResourceSpec.UNKNOWN.equals(resourceSpec)) {
			return UNKNOWN;
		}

		Map<String, Resource> copiedExtendedResources = new HashMap<>(resourceSpec.getExtendedResources());

		return new ResourceProfile(
				resourceSpec.getCpuCores(),
				resourceSpec.getHeapMemory(),
				resourceSpec.getDirectMemory(),
				resourceSpec.getNativeMemory(),
				networkMemory,
				resourceSpec.getManagedMemory(),
				copiedExtendedResources);
	}

	public  ResourceProfile(
			double cpuCores,
			int heapMemoryInMB,
			int directMemoryInMB,
			int nativeMemoryInMB,
			int networkMemoryInMB,
			int managedMemoryInMB,
			Map<String, Resource> extendedResources);
	public  ResourceProfile(double cpuCores, int heapMemoryInMB);
	private  ResourceProfile();
	public  ResourceProfile(ResourceProfile other);

}