|
15 | 15 | */ |
16 | 16 | package io.cryostat.discovery; |
17 | 17 |
|
18 | | -import static io.cryostat.discovery.KubeEndpointsDiscovery.KubeDiscoveryNodeType; |
19 | | - |
20 | 18 | import java.net.URI; |
21 | 19 | import java.nio.file.Path; |
22 | 20 | import java.time.Duration; |
|
32 | 30 | import java.util.concurrent.Executors; |
33 | 31 | import java.util.concurrent.ScheduledExecutorService; |
34 | 32 | import java.util.concurrent.TimeUnit; |
| 33 | +import java.util.function.Function; |
35 | 34 | import java.util.stream.Collectors; |
36 | 35 |
|
37 | 36 | import javax.management.remote.JMXServiceURL; |
@@ -92,7 +91,7 @@ public class KubeEndpointSlicesDiscovery implements ResourceEventHandler<Endpoin |
92 | 91 |
|
93 | 92 | ScheduledExecutorService resyncWorker = Executors.newSingleThreadScheduledExecutor(); |
94 | 93 |
|
95 | | - @ConfigProperty(name = "cryostat.discovery.kubernetes2.enabled") |
| 94 | + @ConfigProperty(name = "cryostat.discovery.kubernetes.enabled") |
96 | 95 | boolean enabled; |
97 | 96 |
|
98 | 97 | @ConfigProperty(name = "cryostat.discovery.kubernetes.port-names") |
@@ -666,4 +665,85 @@ public Target toTarget() { |
666 | 665 | } |
667 | 666 | } |
668 | 667 | } |
| 668 | + |
| 669 | + static enum KubeDiscoveryNodeType implements NodeType { |
| 670 | + NAMESPACE("Namespace"), |
| 671 | + STATEFULSET( |
| 672 | + "StatefulSet", |
| 673 | + c -> ns -> n -> c.apps().statefulSets().inNamespace(ns).withName(n).get()), |
| 674 | + DAEMONSET( |
| 675 | + "DaemonSet", |
| 676 | + c -> ns -> n -> c.apps().daemonSets().inNamespace(ns).withName(n).get()), |
| 677 | + DEPLOYMENT( |
| 678 | + "Deployment", |
| 679 | + c -> ns -> n -> c.apps().deployments().inNamespace(ns).withName(n).get()), |
| 680 | + REPLICASET( |
| 681 | + "ReplicaSet", |
| 682 | + c -> ns -> n -> c.apps().replicaSets().inNamespace(ns).withName(n).get()), |
| 683 | + REPLICATIONCONTROLLER( |
| 684 | + "ReplicationController", |
| 685 | + c -> ns -> n -> c.replicationControllers().inNamespace(ns).withName(n).get()), |
| 686 | + POD("Pod", c -> ns -> n -> c.pods().inNamespace(ns).withName(n).get()), |
| 687 | + ENDPOINT("Endpoint", c -> ns -> n -> c.endpoints().inNamespace(ns).withName(n).get()), |
| 688 | + ENDPOINT_SLICE( |
| 689 | + "EndpointSlice", |
| 690 | + c -> |
| 691 | + ns -> |
| 692 | + n -> |
| 693 | + c.discovery() |
| 694 | + .v1() |
| 695 | + .endpointSlices() |
| 696 | + .inNamespace(ns) |
| 697 | + .withName(n) |
| 698 | + .get()), |
| 699 | + // OpenShift resources |
| 700 | + DEPLOYMENTCONFIG("DeploymentConfig"), |
| 701 | + ; |
| 702 | + |
| 703 | + private final String kubernetesKind; |
| 704 | + private final transient Function< |
| 705 | + KubernetesClient, Function<String, Function<String, ? extends HasMetadata>>> |
| 706 | + getFn; |
| 707 | + |
| 708 | + KubeDiscoveryNodeType(String kubernetesKind) { |
| 709 | + this(kubernetesKind, client -> namespace -> name -> null); |
| 710 | + } |
| 711 | + |
| 712 | + KubeDiscoveryNodeType( |
| 713 | + String kubernetesKind, |
| 714 | + Function< |
| 715 | + KubernetesClient, |
| 716 | + Function<String, Function<String, ? extends HasMetadata>>> |
| 717 | + getFn) { |
| 718 | + this.kubernetesKind = kubernetesKind; |
| 719 | + this.getFn = getFn; |
| 720 | + } |
| 721 | + |
| 722 | + @Override |
| 723 | + public String getKind() { |
| 724 | + return kubernetesKind; |
| 725 | + } |
| 726 | + |
| 727 | + public Function<KubernetesClient, Function<String, Function<String, ? extends HasMetadata>>> |
| 728 | + getQueryFunction() { |
| 729 | + return getFn; |
| 730 | + } |
| 731 | + |
| 732 | + public static KubeDiscoveryNodeType fromKubernetesKind(String kubernetesKind) { |
| 733 | + if (kubernetesKind == null) { |
| 734 | + return null; |
| 735 | + } |
| 736 | + for (KubeDiscoveryNodeType nt : values()) { |
| 737 | + if (kubernetesKind.equalsIgnoreCase(nt.kubernetesKind)) { |
| 738 | + return nt; |
| 739 | + } |
| 740 | + } |
| 741 | + return null; |
| 742 | + } |
| 743 | + |
| 744 | + @Override |
| 745 | + public String toString() { |
| 746 | + return getKind(); |
| 747 | + } |
| 748 | + } |
669 | 749 | } |
0 commit comments