Search in sources :

Example 1 with NodeMetrics

use of com.marcnuri.yakc.model.io.k8s.metrics.pkg.apis.metrics.v1beta1.NodeMetrics in project kubernetes-client by fabric8io.

the class MetricsTest method testNodeMetric.

@Test
void testNodeMetric() {
    server.expect().get().withPath("/apis/metrics.k8s.io/v1beta1/nodes/test-node").andReturn(200, getNodeMetric()).once();
    NodeMetrics nodeMetrics = client.top().nodes().metrics("test-node");
    assertEquals("foo", nodeMetrics.getMetadata().getName());
}
Also used : NodeMetrics(io.fabric8.kubernetes.api.model.metrics.v1beta1.NodeMetrics) Test(org.junit.jupiter.api.Test)

Example 2 with NodeMetrics

use of com.marcnuri.yakc.model.io.k8s.metrics.pkg.apis.metrics.v1beta1.NodeMetrics in project Taier by DTStack.

the class AbstractK8sResourceInfo method getResource.

public void getResource(KubernetesClient kubernetesClient) {
    List<Node> nodes = kubernetesClient.nodes().list().getItems();
    Map<String, NodeStatus> nodeStatusMap = new HashMap<>(nodes.size());
    for (Node node : nodes) {
        nodeStatusMap.put(node.getMetadata().getName(), node.getStatus());
    }
    NodeMetricOperationsImpl nodeMetricOperations = kubernetesClient.top().nodes();
    List<NodeMetrics> nodeMetrics = nodeMetricOperations.metrics().getItems();
    for (NodeMetrics nodeMetric : nodeMetrics) {
        String nodeName = nodeMetric.getMetadata().getName();
        NodeStatus nodeStatus = nodeStatusMap.get(nodeName);
        Map<String, Quantity> allocatable = nodeStatus.getAllocatable();
        Map<String, Quantity> usage = nodeMetric.getUsage();
        BigDecimal cpuAllocatable = Quantity.getAmountInBytes(allocatable.get(CPU));
        BigDecimal cpuUsage = Quantity.getAmountInBytes(usage.get(CPU));
        BigDecimal menAllocatable = Quantity.getAmountInBytes(allocatable.get(MEMORY));
        BigDecimal menUsage = Quantity.getAmountInBytes(usage.get(MEMORY));
        double freeCores = cpuAllocatable.subtract(cpuUsage).doubleValue();
        double freeMem = menAllocatable.subtract(menUsage).doubleValue();
        this.addNodeResource(new AbstractK8sResourceInfo.NodeResourceDetail(nodeName, cpuAllocatable.doubleValue(), cpuUsage.doubleValue(), freeCores, menAllocatable.doubleValue(), menUsage.doubleValue(), freeMem));
    }
    calc();
}
Also used : HashMap(java.util.HashMap) Node(io.fabric8.kubernetes.api.model.Node) NodeMetrics(io.fabric8.kubernetes.api.model.metrics.v1beta1.NodeMetrics) Quantity(io.fabric8.kubernetes.api.model.Quantity) BigDecimal(java.math.BigDecimal) NodeMetricOperationsImpl(io.fabric8.kubernetes.client.dsl.internal.NodeMetricOperationsImpl) NodeStatus(io.fabric8.kubernetes.api.model.NodeStatus)

Example 3 with NodeMetrics

use of com.marcnuri.yakc.model.io.k8s.metrics.pkg.apis.metrics.v1beta1.NodeMetrics in project yakc by manusa.

the class MetricsV1beta1ApiIT method readNodeMetrics.

@Test
@DisplayName("readNodeMetrics, cluster contains at least a Node with some metrics")
void readNodeMetrics() throws IOException, InterruptedException {
    // Given
    final String node = KC.create(CoreV1Api.class).listNode().stream().findFirst().map(Node::getMetadata).map(ObjectMeta::getName).orElseThrow(() -> new AssertionError("No nodes found"));
    // When
    final NodeMetrics result = getWithRetry(() -> KC.create(MetricsV1beta1Api.class).readNodeMetrics(node).get());
    // Then
    assertThat(result).hasFieldOrPropertyWithValue("metadata.name", node).hasFieldOrProperty("usage.cpu").hasFieldOrProperty("usage.memory").hasFieldOrProperty("window").extracting(NodeMetrics::getTimestamp).isNotNull();
}
Also used : Node(com.marcnuri.yakc.model.io.k8s.api.core.v1.Node) NodeMetrics(com.marcnuri.yakc.model.io.k8s.metrics.pkg.apis.metrics.v1beta1.NodeMetrics) MetricsV1beta1Api(com.marcnuri.yakc.api.metrics.v1beta1.MetricsV1beta1Api) Test(org.junit.jupiter.api.Test) DisplayName(org.junit.jupiter.api.DisplayName)

Aggregations

NodeMetrics (io.fabric8.kubernetes.api.model.metrics.v1beta1.NodeMetrics)2 Test (org.junit.jupiter.api.Test)2 MetricsV1beta1Api (com.marcnuri.yakc.api.metrics.v1beta1.MetricsV1beta1Api)1 Node (com.marcnuri.yakc.model.io.k8s.api.core.v1.Node)1 NodeMetrics (com.marcnuri.yakc.model.io.k8s.metrics.pkg.apis.metrics.v1beta1.NodeMetrics)1 Node (io.fabric8.kubernetes.api.model.Node)1 NodeStatus (io.fabric8.kubernetes.api.model.NodeStatus)1 Quantity (io.fabric8.kubernetes.api.model.Quantity)1 NodeMetricOperationsImpl (io.fabric8.kubernetes.client.dsl.internal.NodeMetricOperationsImpl)1 BigDecimal (java.math.BigDecimal)1 HashMap (java.util.HashMap)1 DisplayName (org.junit.jupiter.api.DisplayName)1