ObjectNode flattenService(JsonNode n) { ObjectNode out = new ObjectMapper().createObjectNode(); out.put("serviceId", n.path("ID").asText()); out.put("versionIndex", n.path("Version").path("Index").asInt()); out.put("createdAt", n.path("CreatedAt").asText()); out.put("updatedAt", n.path("UpdatedAt").asText()); out.put("name", n.path("Spec").path("Name").asText()); JsonNode labels = n.path("Spec").path("Labels"); labels.fields().forEachRemaining(it -> { out.put(formatLabelKey(it.getKey()), it.getValue().asText()); }); JsonNode taskTemplate = n.path("Spec").path("TaskTemplate"); out.put("taskImage", taskTemplate.path("ContainerSpec").path("Image").asText()); out.set("taskArgs", taskTemplate.path("ContainerSpec").path("Args")); out.put("replicas", n.path("Spec").path("Mode").path("Replicated").path("Replicas").asInt()); return out; }
protected ObjectNode flattenTask(JsonNode n) { ObjectNode out = new ObjectMapper().createObjectNode(); out.put("swarmClusterId", getSwarmClusterId().get()); out.put("taskId", n.path("ID").asText()); out.put("versionIndex", n.path("Version").path("Index").asText()); out.put("createdAt", n.path("CreatedAt").asText()); out.put("updatedAt", n.path("UpdatedAt").asText()); n.path("Labels").fields().forEachRemaining(it -> { out.put(formatLabelKey(it.getKey()), it.getValue().asText()); }); n.path("Spec").path("ContainerSepc"); out.put("serviceId", n.path("ServiceID").asText()); out.put("swarmNodeId", n.path("NodeID").asText()); out.put("state", n.path("Status").path("State").asText()); out.put("message", n.path("Status").path("Message").asText()); out.put("containerId", n.path("Status").path("ContainerStatus").path("ContainerID").asText()); out.put("desiredState", n.path("DesiredState").asText()); n.path("Status").path("PortStatus").path("Ports").forEach(it -> { String mode = it.path("PublishMode").asText(); String protocol = it.path("Protocol").asText(); if (mode.equals("host") && protocol.equals("tcp")) { int targetPort = it.path("TargetPort").asInt(); int publishedPort = it.path("PublishedPort").asInt(); String key = String.format("hostTcpPortMap_%d", targetPort); out.put(key, publishedPort); } }); ; return out; }