@Override public void updateResource(KafkaTopic topicResource, Handler<AsyncResult<Void>> handler) { vertx.executeBlocking(future -> { try { operation().inNamespace(namespace).withName(topicResource.getMetadata().getName()).patch(topicResource); future.complete(); } catch (Exception e) { future.fail(e); } }, handler); }
public void createWhenExistsIsAPatch(TestContext context, boolean cascade) { T resource = resource(); Resource mockResource = mock(resourceType()); when(mockResource.get()).thenReturn(resource); when(mockResource.cascading(cascade)).thenReturn(mockResource); NonNamespaceOperation mockNameable = mock(NonNamespaceOperation.class); when(mockNameable.withName(matches(resource.getMetadata().getName()))).thenReturn(mockResource); MixedOperation mockCms = mock(MixedOperation.class); when(mockCms.inNamespace(matches(resource.getMetadata().getNamespace()))).thenReturn(mockNameable); C mockClient = mock(clientType()); mocker(mockClient, mockCms); AbstractResourceOperator<C, T, L, D, R> op = createResourceOperations(vertx, mockClient); Async async = context.async(); Future<ReconcileResult<T>> fut = op.createOrUpdate(resource()); fut.setHandler(ar -> { if (!ar.succeeded()) { ar.cause().printStackTrace(); } assertTrue(ar.succeeded()); verify(mockResource).get(); verify(mockResource).patch(any()); verify(mockResource, never()).create(any()); verify(mockResource, never()).createNew(); verify(mockResource, never()).createOrReplace(any()); verify(mockCms, never()).createOrReplace(any()); async.complete(); }); }
verify(mockResource).delete(); verify(mockResource).create(any()); verify(mockResource, never()).patch(any()); verify(mockResource, never()).createNew(); verify(mockResource, never()).createOrReplace(any());
} else if (!data.equals(existing.getData())) { log.info("Replacing cert secret {} with certBundle input", secret.getMetadata().getName()); client.secrets().inNamespace(namespace).withName(endpointInfo.getCertSpec().getSecretName()).patch(secret);
try { if (resource instanceof ConfigMap) { client.configMaps().withName(resource.getMetadata().getName()).patch((ConfigMap) resource); } else if (resource instanceof Secret) { client.secrets().withName(resource.getMetadata().getName()).patch((Secret) resource); } else if (resource instanceof Deployment) { client.apps().deployments().withName(resource.getMetadata().getName()).patch((Deployment) resource); client.services().withName(resource.getMetadata().getName()).patch((Service) resource); } else if (resource instanceof ServiceAccount) { client.serviceAccounts().withName(resource.getMetadata().getName()).patch((ServiceAccount) resource); } else if (resource instanceof NetworkPolicy) { client.network().networkPolicies().withName(resource.getMetadata().getName()).patch((NetworkPolicy) resource); } else if (resource instanceof PersistentVolumeClaim && patchPersistentVolumeClaims) { client.persistentVolumeClaims().withName(resource.getMetadata().getName()).patch((PersistentVolumeClaim) resource);
@Override public void apply(KubernetesList resources, boolean patchPersistentVolumeClaims) { for (HasMetadata resource : resources.getItems()) { try { if (resource instanceof ConfigMap) { client.configMaps().withName(resource.getMetadata().getName()).patch((ConfigMap) resource); } else if (resource instanceof Secret) { client.secrets().withName(resource.getMetadata().getName()).patch((Secret) resource); } else if (resource instanceof Deployment) { client.apps().deployments().withName(resource.getMetadata().getName()).patch((Deployment) resource); } else if (resource instanceof StatefulSet) { client.apps().statefulSets().withName(resource.getMetadata().getName()).cascading(false).patch((StatefulSet) resource); } else if (resource instanceof Service) { client.services().withName(resource.getMetadata().getName()).patch((Service) resource); } else if (resource instanceof ServiceAccount) { client.serviceAccounts().withName(resource.getMetadata().getName()).patch((ServiceAccount) resource); } else if (resource instanceof PersistentVolumeClaim && patchPersistentVolumeClaims) { client.persistentVolumeClaims().withName(resource.getMetadata().getName()).patch((PersistentVolumeClaim) resource); } } catch (KubernetesClientException e) { if (e.getCode() == 404) { // Create it if it does not exist client.resource(resource).createOrReplace(); } else { throw e; } } } }