/**
* Copyright 2005-2016 Red Hat, Inc.
*
* Red Hat licenses this file to you under the Apache License, version
* 2.0 (the "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
* implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
package io.fabric8.kubernetes.jolokia;
import io.fabric8.kubernetes.api.KubernetesHelper;
import io.fabric8.kubernetes.api.model.Container;
import io.fabric8.kubernetes.api.model.Pod;
import io.fabric8.kubernetes.api.model.ReplicationController;
import io.fabric8.kubernetes.client.KubernetesClient;
import org.jolokia.client.J4pClient;
import org.jolokia.client.request.J4pReadRequest;
import org.jolokia.client.request.J4pResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.management.ObjectName;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
*/
public class Example {
private static final transient Logger LOG = LoggerFactory.getLogger(Example.class);
JolokiaClients clients = new JolokiaClients();
KubernetesClient kubernetes = clients.getKubernetes();
public static void main(String[] args) {
String selector = null;
if (args.length > 0) {
selector = args[0];
}
Example example = new Example();
example.findReplicationControllers(selector);
example.findPods(selector);
}
public void findPods(String selector) {
Map<String, Pod> podMap = KubernetesHelper.getSelectedPodMap(kubernetes, selector);
Collection<Pod> pods = podMap.values();
for (Pod pod : pods) {
String host = KubernetesHelper.getHost(pod);
List<Container> containers = KubernetesHelper.getContainers(pod);
for (Container container : containers) {
System.out.println("pod " + KubernetesHelper.getName(pod) + " container: " + container.getName() + " image: " + container.getImage());
J4pClient jolokia = clients.clientForContainer(host, container, pod);
if (jolokia != null) {
System.out.println(" has jolokia client: " + jolokia + " from host: " + host + " URL: " + jolokia.getUri());
try {
ObjectName objectName = new ObjectName("java.lang:type=OperatingSystem");
J4pResponse<J4pReadRequest> results = jolokia.execute(new J4pReadRequest(objectName, "SystemCpuLoad"));
Object value = results.getValue();
System.out.println(" System CPU Load: " + value);
} catch (Exception e) {
LOG.error("Failed to look up attribute. " + e, e);
}
}
}
}
}
public void findReplicationControllers(String selector) {
Map<String, ReplicationController> replicationControllerMap = KubernetesHelper.getSelectedReplicationControllerMap(kubernetes, selector);
Collection<ReplicationController> replicationControllers = replicationControllerMap.values();
for (ReplicationController replicationController : replicationControllers) {
System.out.println("" + KubernetesHelper.getName(replicationController));
}
}
}