private List<QueryParam> queryParam(Topology topology) { List<QueryParam> queryParams = new ArrayList<>(); queryParams.add(new QueryParam(TopologyComponent.TOPOLOGYID, topology.getId().toString())); queryParams.add(new QueryParam(TopologyComponent.VERSIONID, topology.getVersionId().toString())); return queryParams; } }
/** * Returns the list of components to be re-configured for a given topology. * * @param topology the topology * @return the collection of components that have the reconfigure flag set or empty if no such component exists */ public Map<String, Set<Long>> getComponentsToReconfigure(Topology topology) { Map<String, Set<Long>> components = new HashMap<>(); List<QueryParam> qps = QueryParam.params( TopologyComponent.TOPOLOGYID, String.valueOf(topology.getId()), TopologyComponent.VERSIONID, String.valueOf(topology.getVersionId()), TopologyComponent.RECONFIGURE, String.valueOf(true)); components.put(ComponentTypes.PROCESSOR, listTopologyProcessors(qps).stream().map(TopologyComponent::getId).collect(Collectors.toSet())); components.put(ComponentTypes.SINK, listTopologySinks(qps).stream().map(TopologyComponent::getId).collect(Collectors.toSet())); components.put(ComponentTypes.RULE, listRules(qps).stream().map(TopologyRule::getId).collect(Collectors.toSet())); components.put(ComponentTypes.BRANCH, listBranchRules(qps).stream().map(TopologyBranchRule::getId).collect(Collectors.toSet())); components.put(ComponentTypes.WINDOW, listWindows(qps).stream().map(TopologyWindow::getId).collect(Collectors.toSet())); return components; }
public void setReconfigureOnAllComponentsInTopology(Topology topology) { List<TopologyComponent> topologyComponents = new ArrayList<>(); List<com.hortonworks.registries.common.QueryParam> queryParams = new ArrayList<>(); queryParams.add(new com.hortonworks.registries.common.QueryParam("topologyId", String.valueOf(topology.getId()))); queryParams.add(new com.hortonworks.registries.common.QueryParam("versionId", String.valueOf(topology.getVersionId()))); topologyComponents.addAll(listTopologySources(queryParams)); topologyComponents.addAll(listTopologyProcessors(queryParams)); topologyComponents.addAll(listTopologySinks(queryParams)); for (TopologyComponent topologyComponent : topologyComponents) { setReconfigureOnTopologyComponent(topologyComponent); } }
public Collection<Topology> listTopologies(List<QueryParam> queryParams) { Collection<Topology> topologies = this.dao.find(TOPOLOGY_NAMESPACE, queryParams); topologies.forEach(t -> t.setVersionTimestamp(getVersionTimestamp(t.getVersionId()))); return topologies; }
/** * Clones the given version of the topology and all its dependencies to a new 'CURRENT' version. * The ids of the topology and its dependencies are retained. */ public Topology cloneTopologyVersion(Long topologyId, Long versionId) { Topology topology = getTopology(topologyId, versionId); if (topology != null) { try { topology = addTopology(new Topology(topology)); copyTopologyDependencies(topologyId, versionId, topology.getVersionId()); } catch (Exception ex) { LOG.error("Got exception while copying topology dependencies", ex); removeTopology(topology.getId(), topology.getVersionId(), true); throw new RuntimeException(ex); } } return topology; }
List<com.hortonworks.registries.common.QueryParam> queryParams = new ArrayList<>(); queryParams.add(new com.hortonworks.registries.common.QueryParam("topologyId", String.valueOf(topology.getId()))); queryParams.add(new com.hortonworks.registries.common.QueryParam("versionId", String.valueOf(topology.getVersionId())));
public Topology removeTopology(Long topologyId, Long versionId, boolean recurse) { Topology topology = new Topology(); topology.setId(topologyId); topology.setVersionId(versionId); if (recurse) { try { removeTopologyDependencies(topology.getId(), topology.getVersionId()); } catch (Exception ex) { LOG.error("Got exception while removing topology dependencies", ex); throw new RuntimeException(ex); } } Topology removedTopology = dao.remove(topology.getStorableKey()); removeTopologyVersionInfo(versionId); return removedTopology; }
private Response removeAllTopologyVersions(Long topologyId) { Collection<TopologyVersion> versions = catalogService.listTopologyVersionInfos( WSUtils.topologyVersionsQueryParam(topologyId)); Long currentVersionId = catalogService.getCurrentVersionId(topologyId); Topology res = null; for (TopologyVersion version : versions) { Topology removed = catalogService.removeTopology(topologyId, version.getId(), true); if (removed != null && removed.getVersionId().equals(currentVersionId)) { res = removed; } } // remove topology state information catalogService.removeTopologyState(topologyId); if (res != null) { return WSUtils.respondEntity(res, OK); } else { throw EntityNotFoundException.byId(topologyId.toString()); } }
public Topology addTopology(Topology topology) { validateTopology(topology); boolean storedPlaceholderVersionTopology = false; if (topology.getId() == null) { topology.setId(this.dao.nextId(TOPOLOGY_NAMESPACE)); topology.setVersionId(PLACEHOLDER_ID); this.dao.add(topology); LOG.debug("Added topology {} with placeholder version", topology); storedPlaceholderVersionTopology = true; } long timestamp = System.currentTimeMillis(); topology.setVersionTimestamp(timestamp); TopologyVersion versionInfo = addCurrentTopologyVersionInfo(topology.getId(), timestamp); LOG.debug("Added version info {}", versionInfo); if (storedPlaceholderVersionTopology) { // remove topology with placeholder version first // WARN: don't use removeTopology since it also removes PLACEHOLDER topology version info! removeOnlyTopologyEntity(topology.getId(), topology.getVersionId()); } // put actual version id topology.setVersionId(versionInfo.getId()); this.dao.addOrUpdate(topology); LOG.debug("Added topology {}", topology); return topology; }
public Topology(Topology other) { if (other != null) { setId(other.getId()); setVersionId(other.getVersionId()); setName(other.getName()); setDescription(other.getDescription()); setConfig(other.getConfig()); setNamespaceId(other.getNamespaceId()); setVersionTimestamp(other.getVersionTimestamp()); } // this will be re-generated during deployment. topologyDag = null; }