private boolean isKubernetesComposite(CompositeComponent component) { if (component.componentLinks == null || component.componentLinks.isEmpty()) { return false; } for (String link : component.componentLinks) { Class<? extends ResourceState> componentClass = CompositeComponentRegistry .metaByStateLink(link).stateClass; if (!BaseKubernetesState.class.isAssignableFrom(componentClass)) { return false; } } return true; }
public static <T extends BaseKubernetesState> Class<T> getStateTypeFromSelfLink( String selfLink) { Class<? extends ResourceState> resourceStateClass = CompositeComponentRegistry .metaByStateLink(selfLink).stateClass; return fromResourceStateToBaseKubernetesState(resourceStateClass); }
private static ResourceState extractState(Operation o) { String path = o.getUri().getPath(); ComponentMeta meta = CompositeComponentRegistry.metaByStateLink(path); if (meta.stateClass == null) { Utils.log(CompositeComponentInterceptor.class, CompositeComponentInterceptor.class.getSimpleName(), Level.WARNING, "Cannot find meta for path = %s", path); } ResourceState state = o.getBody(meta.stateClass); return state; } }
ComponentMeta metaByStateLink = CompositeComponentRegistry.metaByStateLink(link); rt = ResourceType.fromName(metaByStateLink.resourceType);
ComponentMeta meta = CompositeComponentRegistry.metaByStateLink(link); if (meta == null) { logWarning("Unexpected result type: %s", link);
private DeferredResult<BaseKubernetesState> getState(RequestContext context, String selfLink) { return sendWithDeferredResult(Operation.createGet(this, selfLink)) .exceptionally(ex -> { Throwable cause = ex instanceof CompletionException ? ex.getCause() : ex; logWarning("Unable to get resource state for %s, reason: %s", selfLink, Utils.toString(cause)); throw ex instanceof CompletionException ? (CompletionException) ex : new CompletionException(ex); }).thenApply(op -> { Class<? extends ResourceState> stateClass = CompositeComponentRegistry .metaByStateLink(selfLink).stateClass; return (BaseKubernetesState) op.getBody(stateClass); }); } }
@Test public void testFromResourceStateToBaseKubernetesStateShouldFail() { Class<? extends ResourceState> containerClass = CompositeComponentRegistry .metaByStateLink("/resources/containers").stateClass; String expectedExceptionMsg = "Class: " + ContainerState.class.getName() + " is not child" + " of BaseKubernetesState."; boolean shouldFail = true; try { fromResourceStateToBaseKubernetesState(containerClass); } catch (IllegalArgumentException iae) { assertEquals(expectedExceptionMsg, iae.getMessage()); shouldFail = false; } assertEquals(false, shouldFail); }
private void processKubernetesRequest(RequestContext context) { sendRequest(Operation .createGet(context.request.resourceReference) .setCompletion((o, ex) -> { if (ex != null) { fail(context.request, ex); } else { Class<? extends BaseKubernetesState> stateType = null; try { stateType = fromResourceStateToBaseKubernetesState( CompositeComponentRegistry.metaByStateLink( context.request.resourceReference .getPath()).stateClass); context.kubernetesState = o.getBody(stateType); processKubernetesState(context); } catch (IllegalArgumentException iae) { fail(context.request, iae); } } })); }