use of io.kubernetes.client.openapi.models.V1Node in project java by kubernetes-client.
the class TaintsTest method testAddTaints.
@Test
public void testAddTaints() {
V1Node node = new V1Node();
taints(node).addTaint("key1", NOSCHEDULE).addTaint("key2", PREFERNOSCHEDULE);
assertNotNull(Taints.findTaint(node, "key1", NOSCHEDULE));
assertNotNull(Taints.findTaint(node, "key2", PREFERNOSCHEDULE));
}
use of io.kubernetes.client.openapi.models.V1Node in project java by kubernetes-client.
the class TaintsTest method testRemoveTaints.
@Test
public void testRemoveTaints() {
V1Node node = new V1Node();
taints(node).addTaint("key1", NOSCHEDULE).addTaint("key1", PREFERNOSCHEDULE).addTaint("key1", NOEXECUTE).addTaint("key2", PREFERNOSCHEDULE).addTaint("key3", NOSCHEDULE).addTaint("key3", NOEXECUTE);
taints(node).removeTaint("key1").removeTaint("key2", NOSCHEDULE).removeTaint("key3", NOEXECUTE);
assertNull(Taints.findTaint(node, "key1", NOSCHEDULE));
assertNull(Taints.findTaint(node, "key1", PREFERNOSCHEDULE));
assertNull(Taints.findTaint(node, "key1", NOEXECUTE));
assertNull(Taints.findTaint(node, "key3", NOEXECUTE));
assertNotNull(Taints.findTaint(node, "key2", PREFERNOSCHEDULE));
assertNotNull(Taints.findTaint(node, "key3", NOSCHEDULE));
}
use of io.kubernetes.client.openapi.models.V1Node in project java by kubernetes-client.
the class KubectlTop method topNodes.
private List<Pair<ApiType, MetricsType>> topNodes(CoreV1Api api, ApiClient apiClient, String metricName) throws KubectlException, ApiException, IOException {
V1NodeList nodes = api.listNode(null, null, null, null, null, null, null, null, null, null);
NodeMetricsList metrics = new Metrics(apiClient).getNodeMetrics();
List<V1Node> items = nodes.getItems();
Collections.sort(items, new Comparator<V1Node>() {
@Override
public int compare(V1Node arg0, V1Node arg1) {
Quantity m0 = findNodeMetric(arg0.getMetadata().getName(), metrics).getUsage().get(metricName);
Quantity m1 = findNodeMetric(arg1.getMetadata().getName(), metrics).getUsage().get(metricName);
double p0 = findNodePercentage(arg0, m0, metricName);
double p1 = findNodePercentage(arg1, m1, metricName);
// sort high to low
return Double.compare(p0, p1) * -1;
}
});
List<Pair<ApiType, MetricsType>> result = new ArrayList<>();
for (V1Node node : items) {
result.add(new ImmutablePair<>((ApiType) node, (MetricsType) findNodeMetric(node, metrics)));
}
return result;
}
use of io.kubernetes.client.openapi.models.V1Node in project java by kubernetes-client.
the class ControllerExample method main.
public static void main(String[] args) throws IOException {
CoreV1Api coreV1Api = new CoreV1Api();
ApiClient apiClient = coreV1Api.getApiClient();
OkHttpClient httpClient = apiClient.getHttpClient().newBuilder().readTimeout(0, TimeUnit.SECONDS).build();
apiClient.setHttpClient(httpClient);
// instantiating an informer-factory, and there should be only one informer-factory
// globally.
SharedInformerFactory informerFactory = new SharedInformerFactory();
// registering node-informer into the informer-factory.
SharedIndexInformer<V1Node> nodeInformer = informerFactory.sharedIndexInformerFor((CallGeneratorParams params) -> {
return coreV1Api.listNodeCall(null, null, null, null, null, null, params.resourceVersion, null, params.timeoutSeconds, params.watch, null);
}, V1Node.class, V1NodeList.class);
informerFactory.startAllRegisteredInformers();
EventBroadcaster eventBroadcaster = new LegacyEventBroadcaster(coreV1Api);
// nodeReconciler prints node information on events
NodePrintingReconciler nodeReconciler = new NodePrintingReconciler(nodeInformer, eventBroadcaster.newRecorder(new V1EventSource().host("localhost").component("node-printer")));
// Use builder library to construct a default controller.
Controller controller = ControllerBuilder.defaultBuilder(informerFactory).watch((workQueue) -> ControllerBuilder.controllerWatchBuilder(V1Node.class, workQueue).withWorkQueueKeyFunc((V1Node node) -> new Request(node.getMetadata().getName())).withOnAddFilter((V1Node createdNode) -> createdNode.getMetadata().getName().startsWith(// optional, set onAdd filter
"docker-")).withOnUpdateFilter((V1Node oldNode, V1Node newNode) -> newNode.getMetadata().getName().startsWith(// optional, set onUpdate filter
"docker-")).withOnDeleteFilter((V1Node deletedNode, Boolean stateUnknown) -> deletedNode.getMetadata().getName().startsWith(// optional, set onDelete filter
"docker-")).build()).withReconciler(// required, set the actual reconciler
nodeReconciler).withName(// optional, set name for controller
"node-printing-controller").withWorkerCount(// optional, set worker thread count
4).withReadyFunc(// optional, only starts controller when the
nodeInformer::hasSynced).build();
// Use builder library to manage one or multiple controllers.
ControllerManager controllerManager = ControllerBuilder.controllerManagerBuilder(informerFactory).addController(controller).build();
LeaderElectingController leaderElectingController = new LeaderElectingController(new LeaderElector(new LeaderElectionConfig(new EndpointsLock("kube-system", "leader-election", "foo"), Duration.ofMillis(10000), Duration.ofMillis(8000), Duration.ofMillis(5000))), controllerManager);
leaderElectingController.run();
}
use of io.kubernetes.client.openapi.models.V1Node in project java by kubernetes-client.
the class CoreV1Api method patchNodeWithHttpInfo.
/**
* partially update the specified Node
*
* @param name name of the Node (required)
* @param body (required)
* @param pretty If 'true', then the output is pretty printed. (optional)
* @param dryRun When present, indicates that modifications should not be persisted. An invalid or
* unrecognized dryRun directive will result in an error response and no further processing of
* the request. Valid values are: - All: all dry run stages will be processed (optional)
* @param fieldManager fieldManager is a name associated with the actor or entity that is making
* these changes. The value must be less than or 128 characters long, and only contain
* printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is
* required for apply requests (application/apply-patch) but optional for non-apply patch
* types (JsonPatch, MergePatch, StrategicMergePatch). (optional)
* @param fieldValidation fieldValidation determines how the server should respond to
* unknown/duplicate fields in the object in the request. Introduced as alpha in 1.23, older
* servers or servers with the `ServerSideFieldValidation` feature disabled will
* discard valid values specified in this param and not perform any server side field
* validation. Valid values are: - Ignore: ignores unknown/duplicate fields. - Warn: responds
* with a warning for each unknown/duplicate field, but successfully serves the request. -
* Strict: fails the request on unknown/duplicate fields. (optional)
* @param force Force is going to \"force\" Apply requests. It means user will
* re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply
* patch requests. (optional)
* @return ApiResponse<V1Node>
* @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the
* response body
* @http.response.details
* <table summary="Response Details" border="1">
* <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
* <tr><td> 200 </td><td> OK </td><td> - </td></tr>
* <tr><td> 201 </td><td> Created </td><td> - </td></tr>
* <tr><td> 401 </td><td> Unauthorized </td><td> - </td></tr>
* </table>
*/
public ApiResponse<V1Node> patchNodeWithHttpInfo(String name, V1Patch body, String pretty, String dryRun, String fieldManager, String fieldValidation, Boolean force) throws ApiException {
okhttp3.Call localVarCall = patchNodeValidateBeforeCall(name, body, pretty, dryRun, fieldManager, fieldValidation, force, null);
Type localVarReturnType = new TypeToken<V1Node>() {
}.getType();
return localVarApiClient.execute(localVarCall, localVarReturnType);
}
Aggregations