use of org.opennms.netmgt.bsm.service.model.edge.Edge in project opennms by OpenNMS.
the class BusinessServiceRestService method getEdgeById.
@GET
@Path("/edges/{edgeId}")
public Response getEdgeById(@PathParam("edgeId") final Long edgeId) {
Edge edge = getManager().getEdgeById(edgeId);
AbstractEdgeResponseDTO edgeDTO = transform(edge);
return Response.ok().entity(edgeDTO).build();
}
use of org.opennms.netmgt.bsm.service.model.edge.Edge in project opennms by OpenNMS.
the class BusinessServiceRestService method removeEdge.
@DELETE
@Path("{id}/edges/{edgeId}")
public Response removeEdge(@PathParam("id") final Long serviceId, @PathParam("edgeId") final Long edgeId) {
final BusinessService service = getManager().getBusinessServiceById(serviceId);
final Edge edge = getManager().getEdgeById(edgeId);
boolean changed = getManager().deleteEdge(service, edge);
if (!changed) {
return Response.notModified().build();
}
service.save();
return Response.ok().build();
}
use of org.opennms.netmgt.bsm.service.model.edge.Edge in project opennms by OpenNMS.
the class BusinessServiceGraphImpl method addBusinessServiceVertex.
private GraphVertex addBusinessServiceVertex(BusinessService businessService) {
// Use an existing vertex if we already created one
GraphVertex businessServiceVertex = m_verticesByBusinessServiceId.get(businessService.getId());
if (businessServiceVertex != null) {
return businessServiceVertex;
}
// Create
businessServiceVertex = new GraphVertexImpl(businessService.getReduceFunction(), businessService);
// Add
addVertex(businessServiceVertex);
// Index
m_verticesByBusinessServiceId.put(businessService.getId(), businessServiceVertex);
for (Edge edge : businessService.getEdges()) {
// Create the edge
GraphEdge graphEdge = new GraphEdgeImpl(edge);
// Use an existing vertex if we already created one
final GraphVertex[] vertexForEdge = { getExistingVertex(edge) };
// If we couldn't find an existing vertex, create one
if (vertexForEdge[0] == null) {
edge.accept(new EdgeVisitor<Void>() {
@Override
public Void visit(ChildEdge edge) {
vertexForEdge[0] = addBusinessServiceVertex(edge.getChild());
return null;
}
@Override
public Void visit(IpServiceEdge edge) {
// There are multiple reductions keys for this edge
// Create an intermediary vertex using the Most Critical reduction function
vertexForEdge[0] = new GraphVertexImpl(REDUCE_HIGHEST_SEVERITY, edge.getIpService());
addVertex(vertexForEdge[0]);
m_verticesByIpServiceId.put(vertexForEdge[0].getIpService().getId(), vertexForEdge[0]);
// SPECIAL CASE: Map the reductions keys to the intermediary vertex using the Identity map
for (String reductionKey : edge.getReductionKeys()) {
GraphVertex reductionKeyVertex = m_verticesByReductionKey.get(reductionKey);
if (reductionKeyVertex == null) {
// not already added
reductionKeyVertex = new GraphVertexImpl(REDUCE_HIGHEST_SEVERITY, reductionKey);
addVertex(reductionKeyVertex);
m_verticesByReductionKey.put(reductionKey, reductionKeyVertex);
}
// Always add an edge
GraphEdgeImpl intermediaryEdge = new GraphEdgeImpl(MAP_IDENTITY);
addEdge(intermediaryEdge, vertexForEdge[0], reductionKeyVertex);
}
return null;
}
@Override
public Void visit(ReductionKeyEdge edge) {
String reductionKey = edge.getReductionKey();
vertexForEdge[0] = new GraphVertexImpl(REDUCE_HIGHEST_SEVERITY, edge.getReductionKey());
addVertex(vertexForEdge[0]);
m_verticesByReductionKey.put(reductionKey, vertexForEdge[0]);
return null;
}
});
}
// Link and index
addEdge(graphEdge, businessServiceVertex, vertexForEdge[0]);
m_verticesByEdgeId.put(edge.getId(), vertexForEdge[0]);
m_edgesByEdgeId.put(edge.getId(), graphEdge);
}
return businessServiceVertex;
}
use of org.opennms.netmgt.bsm.service.model.edge.Edge in project opennms by OpenNMS.
the class BusinessServiceManagerImpl method addReductionKeyEdge.
@Override
public boolean addReductionKeyEdge(BusinessService businessService, String reductionKey, MapFunction mapFunction, int weight, String friendlyName) {
final BusinessServiceEntity parentEntity = getBusinessServiceEntity(businessService);
// Create the edge
final ReductionKeyEdgeImpl edge = (ReductionKeyEdgeImpl) createEdge(ReductionKeyEdge.class, businessService, mapFunction, weight);
edge.setReductionKey(reductionKey);
edge.setFriendlyName(friendlyName);
// if already exists, no update
final SingleReductionKeyEdgeEntity edgeEntity = getBusinessServiceEdgeEntity(edge);
long count = parentEntity.getReductionKeyEdges().stream().filter(e -> e.equalsDefinition(edgeEntity)).count();
if (count > 0) {
return false;
}
parentEntity.addEdge(edge.getEntity());
return true;
}
use of org.opennms.netmgt.bsm.service.model.edge.Edge in project opennms by OpenNMS.
the class BusinessServiceManagerImpl method addIpServiceEdge.
@Override
public boolean addIpServiceEdge(BusinessService businessService, IpService ipService, MapFunction mapFunction, int weight, String friendlyName) {
final BusinessServiceEntity parentEntity = getBusinessServiceEntity(businessService);
// Create the edge
final IpServiceEdge edge = createEdge(IpServiceEdge.class, businessService, mapFunction, weight);
edge.setIpService(ipService);
edge.setFriendlyName(friendlyName);
// if already exists, no update
final IPServiceEdgeEntity edgeEntity = getBusinessServiceEdgeEntity(edge);
long count = parentEntity.getIpServiceEdges().stream().filter(e -> e.equalsDefinition(edgeEntity)).count();
if (count > 0) {
return false;
}
parentEntity.addEdge(((IpServiceEdgeImpl) edge).getEntity());
return true;
}
Aggregations