KubeUtil { public static Map<String, String> createPodAnnotationsFromJobParameters(Job<?> job) { Map<String, String> annotations = new HashMap<>(); Map<String, String> containerAttributes = job.getJobDescriptor().getContainer().getAttributes(); Evaluators.acceptNotNull( containerAttributes.get(JobAttributes.JOB_CONTAINER_ATTRIBUTE_ACCOUNT_ID), accountId -> annotations.put(KubeConstants.POD_LABEL_ACCOUNT_ID, accountId) ); Evaluators.acceptNotNull( containerAttributes.get(JobAttributes.JOB_CONTAINER_ATTRIBUTE_SUBNETS), accountId -> annotations.put(KubeConstants.POD_LABEL_SUBNETS, accountId) ); return annotations; }  static int estimatePodSize(V1Pod v1Pod); static boolean isPodPhaseTerminal(String phase); static Optional<Long> findFinishedTimestamp(V1Pod pod); static Optional<TitusExecutorDetails> getTitusExecutorDetails(V1Pod pod); static Optional<V1ContainerState> findContainerState(V1Pod pod); static Optional<V1ContainerStateTerminated> findTerminatedContainerStatus(V1Pod pod); static String formatV1ContainerState(V1ContainerState containerState); static Optional<String> findFarzoneId(DirectKubeConfiguration configuration, Job job); static boolean isOwnedByKubeScheduler(V1Pod v1Pod); static Optional<String> getNodeIpV4Address(V1Node node); static Map<String, String> createPodAnnotations(
            Job<?> job,
            Task task,
            byte[] containerInfoData,
            Map<String, String> passthroughAttributes,
            boolean includeJobDescriptor
    ); static Map<String, String> createPodAnnotationsFromJobParameters(Job<?> job); static boolean isNodeOwnedByFenzo(List<String> farzones, V1Node node); static boolean hasFenzoSchedulerTaint(V1Node node); static boolean isFarzoneNode(List<String> farzones, V1Node node); static String toErrorDetails(Throwable e); static Mono<T> toReact(KubeFunction<ApiCallback<T>, Call> handler); static String getMetadataName(V1ObjectMeta metadata); static Optional<V1NodeCondition> findNodeCondition(V1Node node, String type); static boolean hasUninitializedTaint(V1Node node); static final String TYPE_INTERNAL_IP; }
@Test public void testCreatePodAnnotationsFromJobParameters() { Job<BatchJobExt> job = JobGenerator.oneBatchJob(); job = JobFunctions.appendContainerAttribute(job, JobAttributes.JOB_CONTAINER_ATTRIBUTE_ACCOUNT_ID, "myAccount"); job = JobFunctions.appendContainerAttribute(job, JobAttributes.JOB_CONTAINER_ATTRIBUTE_SUBNETS, "subnet1,subnet2"); assertThat(KubeUtil.createPodAnnotationsFromJobParameters(job)).containsEntry(KubeConstants.POD_LABEL_ACCOUNT_ID, "myAccount"); assertThat(KubeUtil.createPodAnnotationsFromJobParameters(job)).containsEntry(KubeConstants.POD_LABEL_SUBNETS, "subnet1,subnet2"); }