/** * Creates a resource with the given namespace and name with the given desired state * and completes the given future accordingly. */ protected Future<ReconcileResult<T>> internalCreate(String namespace, String name, T desired) { try { ReconcileResult<T> result = ReconcileResult.created(operation().inNamespace(namespace).withName(name).create(desired)); log.debug("{} {} in namespace {} has been created", resourceKind, name, namespace); return Future.succeededFuture(result); } catch (Exception e) { log.error("Caught exception while creating {} {} in namespace {}", resourceKind, name, namespace, e); return Future.failedFuture(e); } }
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).get(); verify(mockResource, never()).create(any()); verify(mockResource, never()).createNew(); verify(mockResource, never()).createOrReplace(any());
@Override public void createAddressSpace(AddressSpace addressSpace) { String name = getConfigMapName(addressSpace.getMetadata().getNamespace(), addressSpace.getMetadata().getName()); ConfigMap map = create(addressSpace); client.configMaps().withName(name).create(map); }
verify(mockResource).get(); verify(mockResource).delete(); verify(mockResource).create(any()); verify(mockResource, never()).patch(any()); verify(mockResource, never()).createNew();
@Override public void createAddress(Address address) { String name = getConfigMapName(address.getMetadata().getNamespace(), address.getMetadata().getName()); ConfigMap map = create(address); client.configMaps().withName(name).create(map); }
@Test public void creationThrows(TestContext context) { T resource = resource(); RuntimeException ex = new RuntimeException("Testing this exception is handled correctly"); Resource mockResource = mock(resourceType()); when(mockResource.get()).thenReturn(null); 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); when(mockResource.create(any())).thenThrow(ex); C mockClient = mock(clientType()); mocker(mockClient, mockCms); AbstractResourceOperator<C, T, L, D, R> op = createResourceOperations(vertx, mockClient); Async async = context.async(); op.createOrUpdate(resource).setHandler(ar -> { assertTrue(ar.failed()); assertEquals(ex, ar.cause()); async.complete(); }); }
@Test public void successfulCreation(TestContext context) { T resource = resource(); Resource mockResource = mock(resourceType()); when(mockResource.get()).thenReturn(null); 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 = createResourceOperationsWithMockedReadiness(vertx, mockClient); Async async = context.async(); op.createOrUpdate(resource).setHandler(ar -> { if (ar.failed()) ar.cause().printStackTrace(); assertTrue(ar.succeeded()); verify(mockResource).get(); verify(mockResource).create(eq(resource)); async.complete(); }); }
.endSource() .build(); kubeClient.events().inNamespace(namespace).withName(eventName).create(newEvent);
public void applyImageStream(ImageStream entity, String sourceName) { OpenShiftClient openShiftClient = getOpenShiftClient(); if (openShiftClient != null) { String kind = getKind(entity); String name = getName(entity); String namespace = getNamespace(); try { Resource<ImageStream, DoneableImageStream> resource = openShiftClient.imageStreams().inNamespace(namespace).withName(name); ImageStream old = resource.get(); if (old == null) { log.info("Creating " + kind + " " + name + " from " + sourceName); resource.create(entity); } else { log.info("Updating " + kind + " " + name + " from " + sourceName); copyAllImageStreamTags(entity, old); patchService.compareAndPatchEntity(namespace, entity, old); } openShiftClient.resource(entity).inNamespace(namespace).createOrReplace(); } catch (Exception e) { onApplyError("Failed to create " + kind + " from " + sourceName + ". " + e, e); } } }