private String findKafkaTopicName(Component component) { if (!(component instanceof StreamlineSource)) { throw new IllegalStateException("Component must be Source."); } try { Map<String, Object> componentConfig = component.getConfig().getProperties(); return (String) componentConfig.get(TopologyLayoutConstants.JSON_KEY_TOPIC); } catch (RuntimeException e) { throw new IllegalStateException("Failed to parse topology configuration.", e); } }
@Override public void validate (TopologyLayout topology) throws Exception { Map<String, Object> topologyConfig = topology.getConfig().getProperties(); if (!topologyConfig.isEmpty()) { StormTopologyValidator validator = new StormTopologyValidator(topologyConfig, this.catalogRootUrl); validator.validate(); } }
private Map<String, Object> getYamlComponents(FluxComponent fluxComponent, Component topologyComponent) { Map<String, Object> props = new LinkedHashMap<>(); props.putAll(config); props.putAll(topologyComponent.getConfig().getProperties()); // below line is needed becuase kafka, normalization, notification and rules flux components need design time entities props.put(StormTopologyLayoutConstants.STREAMLINE_COMPONENT_CONF_KEY, topologyComponent); fluxComponent.withConfig(props); for (Map<String, Object> referencedComponent : fluxComponent.getReferencedComponents()) { keysAndComponents.add(makeEntry(StormTopologyLayoutConstants.YAML_KEY_COMPONENTS, referencedComponent)); } Map<String, Object> yamlComponent = fluxComponent.getComponent(); yamlComponent.put(StormTopologyLayoutConstants.YAML_KEY_ID, getFluxId(topologyComponent)); return yamlComponent; }
private String addUnderlyingBoltComponent() { StreamlineProcessor underlyingProcessor = testRunRulesProcessor.getUnderlyingProcessor(); String transformationClass = underlyingProcessor.getTransformationClass(); Map<String, Object> underlyingComponent; try { AbstractFluxComponent transformation = ReflectionHelper.newInstance(transformationClass); Map<String, Object> props = new LinkedHashMap<>(); props.putAll(underlyingProcessor.getConfig().getProperties()); props.put(StormTopologyLayoutConstants.STREAMLINE_COMPONENT_CONF_KEY, testRunRulesProcessor.getUnderlyingProcessor()); // should get rid of below things which is only supported to spout and bolt in flux props.remove("parallelism"); transformation.withConfig(props); underlyingComponent = transformation.getComponent(); for (Map<String, Object> dependentComponents : transformation.getReferencedComponents()) { addToComponents(dependentComponents); } addToComponents(underlyingComponent); return (String) underlyingComponent.get(StormTopologyLayoutConstants.YAML_KEY_ID); } catch (ClassNotFoundException | IllegalAccessException | InstantiationException e) { log.error("Error creating underlying transformation instance", e); throw new RuntimeException(e); } } }
private String addUnderlyingBoltComponent() { StreamlineProcessor underlyingProcessor = testRunProcessor.getUnderlyingProcessor(); String transformationClass = underlyingProcessor.getTransformationClass(); Map<String, Object> underlyingComponent; try { AbstractFluxComponent transformation = ReflectionHelper.newInstance(transformationClass); Map<String, Object> props = new LinkedHashMap<>(); props.putAll(underlyingProcessor.getConfig().getProperties()); props.put(StormTopologyLayoutConstants.STREAMLINE_COMPONENT_CONF_KEY, testRunProcessor.getUnderlyingProcessor()); // should get rid of below things which is only supported to spout and bolt in flux props.remove("parallelism"); transformation.withConfig(props); underlyingComponent = transformation.getComponent(); for (Map<String, Object> dependentComponents : transformation.getReferencedComponents()) { addToComponents(dependentComponents); } addToComponents(underlyingComponent); return (String) underlyingComponent.get(StormTopologyLayoutConstants.YAML_KEY_ID); } catch (ClassNotFoundException | IllegalAccessException | InstantiationException e) { log.error("Error creating underlying transformation instance", e); throw new RuntimeException(e); } } }
registerEventLogger(topologyConfig); maybeAddNotifierPlugin(topologyConfig); Map<String, Object> properties = topologyConfig.getProperties(); if (!deploy) { LOG.debug("Disabling topology event logger for test mode...");