private void validateTopologySink(TopologySink topologySink) { StorageUtils.ensureUnique(topologySink, this::listTopologySinks, QueryParam.params(TopologySink.TOPOLOGYID, topologySink.getTopologyId().toString(), TopologySink.VERSIONID, topologySink.getVersionId().toString(), TopologySink.NAME, topologySink.getName())); }
public TopologySink getTopologySink(Long topologyId, Long sinkId, Long versionId) { TopologySink topologySink = new TopologySink(); topologySink.setId(sinkId); topologySink.setVersionId(versionId); TopologySink sink = dao.get(new StorableKey(TOPOLOGY_SINK_NAMESPACE, topologySink.getPrimaryKey())); if (sink == null || !sink.getTopologyId().equals(topologyId)) { return null; } sink.setVersionTimestamp(getVersionTimestamp(versionId)); return sink; }
private void updateNotifierJarFileName(TopologySink sink) { String notifierClassName = sink.getConfig().getString(Notifier.CLASS_NAME, ""); if (!notifierClassName.isEmpty()) { Collection<Notifier> notifiers = listNotifierInfos(QueryParam.params(Notifier.CLASS_NAME, notifierClassName)); if (notifiers.isEmpty()) { throw new IllegalStateException("No registered notifier in the cluster for class '" + notifierClassName + "'"); } Notifier current = notifiers.iterator().next(); sink.getConfig().setAny(Notifier.JARFILE_NAME, current.getJarFileName()); } }
public TopologySink addOrUpdateTopologySink(Long topologyId, Long id, TopologySink topologySink) { Long currentTopologyVersionId = getCurrentVersionId(topologyId); topologySink.setId(id); topologySink.setVersionId(currentTopologyVersionId); topologySink.setTopologyId(topologyId); validateTopologySink(topologySink); topologySink.setReconfigure(false); dao.addOrUpdate(topologySink); topologySink.setVersionTimestamp(updateVersionTimestamp(currentTopologyVersionId).getTimestamp()); return topologySink; }
public TopologySink addTopologySink(Long topologyId, Long versionId, TopologySink topologySink) { if (topologySink.getId() == null) { topologySink.setId(getNextTopologyComponentId()); } topologySink.setVersionId(versionId); topologySink.setTopologyId(topologyId); validateTopologySink(topologySink); dao.add(topologySink); topologySink.setVersionTimestamp(updateVersionTimestamp(versionId).getTimestamp()); return topologySink; }
topologySink.setTopologyId(newTopology.getId()); Long currentId = topologySink.getId(); topologySink.setId(null); TopologyComponentBundle bundle = getCurrentTopologyComponentBundle( TopologyComponentBundle.TopologyComponentType.SINK, topologyData.getBundleIdToType().get(topologySink.getTopologyComponentBundleId().toString())); topologySink.setTopologyComponentBundleId(bundle.getId()); if (bundle.getSubType().equals(NOTIFICATION)) { updateNotifierJarFileName(topologySink); oldToNewComponentIds.put(currentId, topologySink.getId());
@POST @Path("/topologies/{topologyId}/testcases/{testCaseId}/sinks") public Response addTestRunCaseSink(@PathParam("topologyId") Long topologyId, @PathParam("testCaseId") Long testCaseId, TopologyTestRunCaseSink testRunCaseSink, @Context SecurityContext securityContext) { SecurityUtil.checkRoleOrPermissions(authorizer, securityContext, Roles.ROLE_TOPOLOGY_USER, Topology.NAMESPACE, topologyId, WRITE); TopologySink topologySink = getAssociatedTopologySink(topologyId, testCaseId, testRunCaseSink.getSinkId()); testRunCaseSink.setVersionId(topologySink.getVersionId()); TopologyTestRunCaseSink addedCaseSink = catalogService.addTopologyTestRunCaseSink(testRunCaseSink); return WSUtils.respondEntity(addedCaseSink, CREATED); }
public TopologySink removeTopologySink(Long topologyId, Long sinkId, Long versionId, boolean removeEdges) { TopologySink topologySink = getTopologySink(topologyId, sinkId, versionId); if (topologySink != null) { if (removeEdges) { removeAllEdges(topologySink); } removeAllTopologyTestSinks(topologySink); topologySink = dao.<TopologySink>remove(new StorableKey(TOPOLOGY_SINK_NAMESPACE, topologySink.getPrimaryKey())); topologySink.setVersionTimestamp(updateVersionTimestamp(versionId).getTimestamp()); } return topologySink; }
private void removeAllTopologyTestSinks(TopologySink topologySink) { QueryParam sinkIdQuery = new QueryParam("sinkId", String.valueOf(topologySink.getId())); Collection<TopologyTestRunCaseSink> sinks = listTopologyTestRunCaseSink(Collections.singletonList(sinkIdQuery)); if (sinks != null) { sinks.forEach(s -> removeTopologyTestRunCaseSink(s.getId())); } }
addTopologySink(topologyId, newVersionId, new TopologySink(sink));
@PUT @Path("/topologies/{topologyId}/testcases/{testCaseId}/sinks/{id}") public Response addOrUpdateTestRunCaseSink(@PathParam("topologyId") Long topologyId, @PathParam("testCaseId") Long testCaseId, @PathParam("id") Long id, TopologyTestRunCaseSink testRunCaseSink, @Context SecurityContext securityContext) { SecurityUtil.checkRoleOrPermissions(authorizer, securityContext, Roles.ROLE_TOPOLOGY_USER, Topology.NAMESPACE, topologyId, WRITE); testRunCaseSink.setId(id); testRunCaseSink.setTestCaseId(testCaseId); TopologySink topologySink = getAssociatedTopologySink(topologyId, testCaseId, testRunCaseSink.getSinkId()); testRunCaseSink.setVersionId(topologySink.getVersionId()); TopologyTestRunCaseSink updatedCase = catalogService.addOrUpdateTopologyTestRunCaseSink(testRunCaseSink.getId(), testRunCaseSink); return WSUtils.respondEntity(updatedCase, OK); }
removeTopologySink(topologyId, sink.getId(), versionId, false);
private TopologySink getAssociatedTopologySink(Long topologyId, Long testCaseId, Long topologySinkId) { TopologyTestRunCase testCase = catalogService.getTopologyTestRunCase(topologyId, testCaseId); if (testCase == null) { throw EntityNotFoundException.byId("Topology test case with topology id " + topologyId + " and test case id " + testCaseId); } TopologySink topologySink = catalogService.getTopologySink(topologyId, topologySinkId, testCase.getVersionId()); if (topologySink == null) { throw EntityNotFoundException.byId("Topology sink with topology id " + topologyId + " and version id " + testCase.getVersionId()); } else if (!testCase.getVersionId().equals(topologySink.getVersionId())) { throw new IllegalStateException("Test case and topology sink point to the different version id: " + "version id of test case: " + testCase.getVersionId() + " / " + "version id of topology sink: " + topologySink.getVersionId()); } return topologySink; }