public Long getCurrentVersionId(Long topologyId) { Optional<TopologyVersion> versionInfo = getCurrentTopologyVersionInfo(topologyId); return versionInfo.isPresent() ? versionInfo.get().getId() : -1L; }
/** * Lists the 'CURRENT' version of topologies */ public Collection<Topology> listTopologies() { List<Topology> topologies = new ArrayList<>(); for (TopologyVersion version: listCurrentTopologyVersionInfos()) { topologies.addAll(listTopologies(version.getId())); } return topologies; }
public Collection<TopologyEditorMetadata> listTopologyEditorMetadata() { List<TopologyEditorMetadata> metadatas = new ArrayList<>(); Collection<TopologyVersion> currentVersions = listCurrentTopologyVersionInfos(); for (TopologyVersion version : currentVersions) { List<QueryParam> queryParams = WSUtils.buildTopologyIdAndVersionIdAwareQueryParams( version.getTopologyId(), version.getId(), null); metadatas.addAll(listTopologyEditorMetadata(queryParams)); } return metadatas; }
@POST @Path("/topologies/{topologyId}/versions/{versionId}/activate") @Timed public Response activateTopologyVersion(@PathParam("topologyId") Long topologyId, @PathParam("versionId") Long versionId, @Context SecurityContext securityContext) { SecurityUtil.checkRole(authorizer, securityContext, Roles.ROLE_TOPOLOGY_ADMIN); SecurityUtil.checkRoleOrPermissions(authorizer, securityContext, Roles.ROLE_TOPOLOGY_USER, NAMESPACE, topologyId, READ); Optional<TopologyVersion> currentVersionInfo = catalogService.getCurrentTopologyVersionInfo(topologyId); if (currentVersionInfo.isPresent() && currentVersionInfo.get().getId().equals(versionId)) { throw new IllegalArgumentException("Version id " + versionId + " is already the current version"); } TopologyVersion savedVersion = catalogService.getTopologyVersionInfo(versionId); if (savedVersion != null) { catalogService.cloneTopologyVersion(topologyId, savedVersion.getId()); /* * successfully cloned and set a new current version, * remove the old current version of topology and version info */ if (currentVersionInfo.isPresent()) { catalogService.removeTopology(topologyId, currentVersionInfo.get().getId(), true); } return WSUtils.respondEntity(savedVersion, CREATED); } throw EntityNotFoundException.byVersion(topologyId.toString(), versionId.toString()); }
public TopologyVersion addTopologyVersionInfo(TopologyVersion topologyVersion) { if (topologyVersion.getId() == null) { topologyVersion.setId(this.dao.nextId(TOPOLOGY_VERSIONINFO_NAMESPACE)); } if (topologyVersion.getTimestamp() == null) { topologyVersion.setTimestamp(System.currentTimeMillis()); } dao.add(topologyVersion); return topologyVersion; }
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 TopologyVersion(TopologyVersion other) { if (other != null) { setId(other.getId()); setTopologyId(other.getTopologyId()); setName(other.getName()); setDescription(other.getDescription()); setTimestamp(other.getTimestamp()); } }