Search in sources :

Example 26 with NCSComponent

use of org.opennms.netmgt.model.ncs.NCSComponent in project opennms by OpenNMS.

the class DependencyLoadingRulesIT method setUp.

@Before
public void setUp() {
    NetworkBuilder bldr = new NetworkBuilder();
    // Make sure that the default OnmsMonitoringLocation is saved
    m_locationDao.saveOrUpdate(bldr.getLocation());
    bldr.addNode("PE1").setForeignSource("space").setForeignId("1111-PE1");
    m_nodeDao.save(bldr.getCurrentNode());
    //m_pe1NodeId = bldr.getCurrentNode().getId();
    bldr.addNode("PE2").setForeignSource("space").setForeignId("2222-PE2");
    m_nodeDao.save(bldr.getCurrentNode());
    //	m_pe2NodeId = bldr.getCurrentNode().getId();
    NCSComponent svc = new NCSBuilder("Service", "NA-Service", "123").setName("CokeP2P").pushComponent("ServiceElement", "NA-ServiceElement", "8765").setName("PE1,SE1").setNodeIdentity("space", "1111-PE1").pushComponent("ServiceElementComponent", "NA-SvcElemComp", "8765,jnxVpnIf").setName("jnxVpnIf").setNodeIdentity("space", "1111-PE1").setUpEventUei("uei.opennms.org/vendor/Juniper/traps/jnxVpnIfUp").setDownEventUei("uei.opennms.org/vendor/Juniper/traps/jnxVpnIfDown").setAttribute("jnxVpnIfVpnType", "5").setAttribute("jnxVpnIfVpnName", "ge-1/0/2.50").pushComponent("ServiceElementComponent", "NA-SvcElemComp", "8765,link").setName("link").setNodeIdentity("space", "1111-PE1").setUpEventUei("uei.opennms.org/vendor/Juniper/traps/linkUp").setDownEventUei("uei.opennms.org/vendor/Juniper/traps/linkDown").setAttribute("linkName", "ge-1/0/2").popComponent().popComponent().pushComponent("ServiceElementComponent", "NA-SvcElemComp", "8765,jnxVpnPw-vcid(50)").setName("jnxVpnPw-vcid(50)").setNodeIdentity("space", "1111-PE1").setUpEventUei("uei.opennms.org/vendor/Juniper/traps/jnxVpnPwUp").setDownEventUei("uei.opennms.org/vendor/Juniper/traps/jnxVpnPwDown").setAttribute("jnxVpnPwVpnType", "5").setAttribute("jnxVpnPwVpnName", "ge-1/0/2.50").setDependenciesRequired(DependencyRequirements.ANY).pushComponent("ServiceElementComponent", "NA-SvcElemComp", "8765,lspA-PE1-PE2").setName("lspA-PE1-PE2").setNodeIdentity("space", "1111-PE1").setUpEventUei("uei.opennms.org/vendor/Juniper/traps/mplsLspPathUp").setDownEventUei("uei.opennms.org/vendor/Juniper/traps/mplsLspPathDown").setAttribute("mplsLspName", "lspA-PE1-PE2").popComponent().pushComponent("ServiceElementComponent", "NA-SvcElemComp", "8765,lspB-PE1-PE2").setName("lspB-PE1-PE2").setNodeIdentity("space", "1111-PE1").setUpEventUei("uei.opennms.org/vendor/Juniper/traps/mplsLspPathUp").setDownEventUei("uei.opennms.org/vendor/Juniper/traps/mplsLspPathDown").setAttribute("mplsLspName", "lspB-PE1-PE2").popComponent().popComponent().popComponent().pushComponent("ServiceElement", "NA-ServiceElement", "9876").setName("PE2,SE1").setNodeIdentity("space", "2222-PE2").pushComponent("ServiceElementComponent", "NA-SvcElemComp", "9876,jnxVpnIf").setName("jnxVpnIf").setNodeIdentity("space", "2222-PE2").setUpEventUei("uei.opennms.org/vendor/Juniper/traps/jnxVpnIfUp").setDownEventUei("uei.opennms.org/vendor/Juniper/traps/jnxVpnIfDown").setAttribute("jnxVpnIfVpnType", "5").setAttribute("jnxVpnIfVpnName", "ge-3/1/4.50").pushComponent("ServiceElementComponent", "NA-SvcElemComp", "9876,link").setName("link").setNodeIdentity("space", "2222-PE2").setUpEventUei("uei.opennms.org/vendor/Juniper/traps/linkUp").setDownEventUei("uei.opennms.org/vendor/Juniper/traps/linkDown").setAttribute("linkName", "ge-3/1/4").popComponent().popComponent().pushComponent("ServiceElementComponent", "NA-SvcElemComp", "9876,jnxVpnPw-vcid(50)").setName("jnxVpnPw-vcid(50)").setNodeIdentity("space", "2222-PE2").setUpEventUei("uei.opennms.org/vendor/Juniper/traps/jnxVpnPwUp").setDownEventUei("uei.opennms.org/vendor/Juniper/traps/jnxVpnPwDown").setAttribute("jnxVpnPwVpnType", "5").setAttribute("jnxVpnPwVpnName", "ge-3/1/4.50").setDependenciesRequired(DependencyRequirements.ANY).pushComponent("ServiceElementComponent", "NA-SvcElemComp", "9876,lspA-PE2-PE1").setName("lspA-PE2-PE1").setNodeIdentity("space", "2222-PE2").setUpEventUei("uei.opennms.org/vendor/Juniper/traps/mplsLspPathUp").setDownEventUei("uei.opennms.org/vendor/Juniper/traps/mplsLspPathDown").setAttribute("mplsLspName", "lspA-PE2-PE1").popComponent().pushComponent("ServiceElementComponent", "NA-SvcElemComp", "9876,lspB-PE2-PE1").setName("lspB-PE2-PE1").setNodeIdentity("space", "2222-PE2").setUpEventUei("uei.opennms.org/vendor/Juniper/traps/mplsLspPathUp").setDownEventUei("uei.opennms.org/vendor/Juniper/traps/mplsLspPathDown").setAttribute("mplsLspName", "lspB-PE2-PE1").popComponent().popComponent().popComponent().get();
    m_repository.save(svc);
    //		m_pwCompId = svc.getSubcomponent("NA-ServiceElement", "9876")
    //		                 .getSubcomponent("NA-SvcElemComp", "9876,jnxVpnPw-vcid(50)")
    //		                 .getId();
    // Get engine
    m_engine = findEngineByName("dependencyLoadingRules");
}
Also used : NetworkBuilder(org.opennms.netmgt.model.NetworkBuilder) NCSComponent(org.opennms.netmgt.model.ncs.NCSComponent) NCSBuilder(org.opennms.netmgt.model.ncs.NCSBuilder) Before(org.junit.Before)

Example 27 with NCSComponent

use of org.opennms.netmgt.model.ncs.NCSComponent in project opennms by OpenNMS.

the class ShowNCSPathOperation method execute.

@Override
public void execute(List<VertexRef> targets, final OperationContext operationContext) {
    //Get the current NCS criteria from here you can get the foreignIds foreignSource and deviceA and Z
    for (Criteria criterium : operationContext.getGraphContainer().getCriteria()) {
        try {
            NCSServiceCriteria ncsCriterium = (NCSServiceCriteria) criterium;
            if (ncsCriterium.getServiceCount() > 0) {
                m_storedCriteria = ncsCriterium;
                break;
            }
        } catch (ClassCastException e) {
        }
    }
    final VertexRef defaultVertRef = targets.get(0);
    final SelectionManager selectionManager = operationContext.getGraphContainer().getSelectionManager();
    //selectionManager.getSelectedVertexRefs();
    final Collection<VertexRef> vertexRefs = getVertexRefsForNCSService(m_storedCriteria);
    final UI mainWindow = operationContext.getMainWindow();
    final Window ncsPathPrompt = new Window("Show NCS Path");
    ncsPathPrompt.setModal(true);
    ncsPathPrompt.setResizable(false);
    ncsPathPrompt.setWidth("300px");
    ncsPathPrompt.setHeight("220px");
    //Items used in form field
    final PropertysetItem item = new PropertysetItem();
    item.addItemProperty("Device A", new ObjectProperty<String>("", String.class));
    item.addItemProperty("Device Z", new ObjectProperty<String>("", String.class));
    FormFieldFactory fieldFactory = new FormFieldFactory() {

        private static final long serialVersionUID = 1L;

        @Override
        public Field<?> createField(Item item, Object propertyId, Component uiContext) {
            String pid = (String) propertyId;
            ComboBox select = new ComboBox();
            for (VertexRef vertRef : vertexRefs) {
                select.addItem(vertRef.getId());
                select.setItemCaption(vertRef.getId(), vertRef.getLabel());
            }
            select.setNewItemsAllowed(false);
            select.setNullSelectionAllowed(false);
            select.setImmediate(true);
            select.setScrollToSelectedItem(true);
            if ("Device A".equals(pid)) {
                select.setCaption("Device A");
            } else {
                select.setCaption("Device Z");
            }
            return select;
        }
    };
    final Form promptForm = new Form() {

        @Override
        public void commit() {
            String deviceA = (String) getField("Device A").getValue();
            String deviceZ = (String) getField("Device Z").getValue();
            if (deviceA.equals(deviceZ)) {
                Notification.show("Device A and Device Z cannot be the same", Notification.Type.WARNING_MESSAGE);
                throw new Validator.InvalidValueException("Device A and Device Z cannot be the same");
            }
            OnmsNode nodeA = m_nodeDao.get(Integer.valueOf(deviceA));
            String deviceANodeForeignId = nodeA.getForeignId();
            //Use nodeA's foreignSource, deviceZ should have the same foreignSource. It's an assumption
            // which might need to changed in the future. Didn't want to hard code it it "space" if they
            // change it in the future
            String nodeForeignSource = nodeA.getForeignSource();
            String deviceZNodeForeignId = m_nodeDao.get(Integer.valueOf(deviceZ)).getForeignId();
            NCSComponent ncsComponent = m_dao.get(m_storedCriteria.getServiceIds().get(0));
            String foreignSource = ncsComponent.getForeignSource();
            String foreignId = ncsComponent.getForeignId();
            String serviceName = ncsComponent.getName();
            try {
                NCSServicePath path = getNcsPathProvider().getPath(foreignId, foreignSource, deviceANodeForeignId, deviceZNodeForeignId, nodeForeignSource, serviceName);
                if (path.getStatusCode() == 200) {
                    NCSServicePathCriteria criteria = new NCSServicePathCriteria(path.getEdges());
                    m_serviceManager.registerCriteria(criteria, operationContext.getGraphContainer().getSessionId());
                    //Select only the vertices in the path
                    selectionManager.setSelectedVertexRefs(path.getVertices());
                } else {
                    LoggerFactory.getLogger(this.getClass()).warn("An error occured while retrieving the NCS Path, Juniper NetworkAppsApi send error code: " + path.getStatusCode());
                    mainWindow.showNotification("An error occurred while retrieving the NCS Path\nStatus Code: " + path.getStatusCode(), Notification.TYPE_ERROR_MESSAGE);
                }
            } catch (Exception e) {
                if (e.getCause() instanceof ConnectException) {
                    LoggerFactory.getLogger(this.getClass()).warn("Connection Exception Occurred while retreiving path {}", e);
                    Notification.show("Connection Refused when attempting to reach the NetworkAppsApi", Notification.Type.TRAY_NOTIFICATION);
                } else if (e.getCause() instanceof HttpOperationFailedException) {
                    HttpOperationFailedException httpException = (HttpOperationFailedException) e.getCause();
                    if (httpException.getStatusCode() == 401) {
                        LoggerFactory.getLogger(this.getClass()).warn("Authentication error when connecting to NetworkAppsApi {}", httpException);
                        Notification.show("Authentication error when connecting to NetworkAppsApi, please check the username and password", Notification.Type.TRAY_NOTIFICATION);
                    } else {
                        LoggerFactory.getLogger(this.getClass()).warn("An error occured while retrieving the NCS Path {}", httpException);
                        Notification.show("An error occurred while retrieving the NCS Path\n" + httpException.getMessage(), Notification.Type.TRAY_NOTIFICATION);
                    }
                } else if (e.getCause() instanceof Validator.InvalidValueException) {
                    Notification.show(e.getMessage(), Notification.Type.ERROR_MESSAGE);
                } else {
                    LoggerFactory.getLogger(this.getClass()).warn("Exception Occurred while retreiving path {}", e);
                    Notification.show("An error occurred while calculating the path please check the karaf.log file for the exception: \n" + e.getMessage(), Notification.Type.TRAY_NOTIFICATION);
                }
            }
        }
    };
    promptForm.setBuffered(true);
    promptForm.setFormFieldFactory(fieldFactory);
    promptForm.setItemDataSource(item);
    Button ok = new Button("OK");
    ok.addClickListener(new ClickListener() {

        private static final long serialVersionUID = -2742886456007926688L;

        @Override
        public void buttonClick(ClickEvent event) {
            promptForm.commit();
            mainWindow.removeWindow(ncsPathPrompt);
        }
    });
    promptForm.getFooter().addComponent(ok);
    Button cancel = new Button("Cancel");
    cancel.addClickListener(new ClickListener() {

        private static final long serialVersionUID = -9026067481179449095L;

        @Override
        public void buttonClick(ClickEvent event) {
            mainWindow.removeWindow(ncsPathPrompt);
        }
    });
    promptForm.getFooter().addComponent(cancel);
    ncsPathPrompt.setContent(promptForm);
    mainWindow.addWindow(ncsPathPrompt);
    promptForm.getField("Device A").setValue(defaultVertRef.getId());
}
Also used : Form(com.vaadin.ui.Form) ClickEvent(com.vaadin.ui.Button.ClickEvent) PropertysetItem(com.vaadin.data.util.PropertysetItem) NCSServiceCriteria(org.opennms.features.topology.plugins.ncs.NCSEdgeProvider.NCSServiceCriteria) NCSServicePathCriteria(org.opennms.features.topology.plugins.ncs.NCSPathEdgeProvider.NCSServicePathCriteria) Criteria(org.opennms.features.topology.api.topo.Criteria) NCSServicePathCriteria(org.opennms.features.topology.plugins.ncs.NCSPathEdgeProvider.NCSServicePathCriteria) FormFieldFactory(com.vaadin.ui.FormFieldFactory) PropertysetItem(com.vaadin.data.util.PropertysetItem) Item(com.vaadin.data.Item) NCSComponent(org.opennms.netmgt.model.ncs.NCSComponent) UI(com.vaadin.ui.UI) Button(com.vaadin.ui.Button) NCSComponent(org.opennms.netmgt.model.ncs.NCSComponent) Component(com.vaadin.ui.Component) ClickListener(com.vaadin.ui.Button.ClickListener) ConnectException(java.net.ConnectException) Window(com.vaadin.ui.Window) SelectionManager(org.opennms.features.topology.api.SelectionManager) OnmsNode(org.opennms.netmgt.model.OnmsNode) ComboBox(com.vaadin.ui.ComboBox) NCSServiceCriteria(org.opennms.features.topology.plugins.ncs.NCSEdgeProvider.NCSServiceCriteria) HttpOperationFailedException(org.apache.camel.component.http.HttpOperationFailedException) ConnectException(java.net.ConnectException) HttpOperationFailedException(org.apache.camel.component.http.HttpOperationFailedException) VertexRef(org.opennms.features.topology.api.topo.VertexRef) Validator(com.vaadin.data.Validator)

Example 28 with NCSComponent

use of org.opennms.netmgt.model.ncs.NCSComponent in project opennms by OpenNMS.

the class ComponentCommand method doExecute.

@Override
protected Object doExecute() throws Exception {
    final ServiceReference<NCSComponentRepository> sr = this.bundleContext.getServiceReference(NCSComponentRepository.class);
    if (sr == null)
        return null;
    final NCSComponentRepository repository = this.bundleContext.getService(sr);
    for (final NCSComponent component : repository.findAll()) {
        System.out.println("    " + component.toString());
    }
    System.out.println();
    return null;
}
Also used : NCSComponent(org.opennms.netmgt.model.ncs.NCSComponent) NCSComponentRepository(org.opennms.netmgt.model.ncs.NCSComponentRepository)

Example 29 with NCSComponent

use of org.opennms.netmgt.model.ncs.NCSComponent in project opennms by OpenNMS.

the class NCSEdgeProvider method getEdges.

/**
	 * This factory works by using {@link NCSServiceCriteria} to construct edges based on
	 * connecting all of the ServiceElements that make up a Service to each other.
	 * 
	 * @param criteria An {@link NCSServiceCriteria} object
	 */
@Override
public List<Edge> getEdges(Criteria... criteria) {
    List<Edge> retval = new ArrayList<Edge>();
    for (Criteria criterium : criteria) {
        try {
            NCSServiceCriteria crit = (NCSServiceCriteria) criterium;
            for (Long id : crit) {
                NCSComponent service = m_dao.get(id);
                if (service == null) {
                    LoggerFactory.getLogger(this.getClass()).warn("NCSComponent not found for ID {}", id);
                } else {
                    //Check foreignsource of the subcomponents to make sure it matches the Service's foreignsource
                    NCSComponent[] subs = checkForeignSource(service.getForeignSource(), service.getSubcomponents());
                    // Connect all of the ServiceElements to one another
                    for (int i = 0; i < subs.length; i++) {
                        for (int j = i + 1; j < subs.length; j++) {
                            String foreignSource = null, foreignId = null;
                            OnmsNode sourceNode = null, targetNode = null;
                            NodeIdentification ident = subs[i].getNodeIdentification();
                            String sourceLabel = subs[i].getName();
                            if (ident != null) {
                                foreignSource = ident.getForeignSource();
                                foreignId = ident.getForeignId();
                                sourceNode = m_nodeDao.findByForeignId(foreignSource, foreignId);
                                if (sourceNode == null) {
                                    continue;
                                }
                                if (sourceLabel == null) {
                                    sourceLabel = sourceNode.getLabel();
                                }
                            }
                            ident = subs[j].getNodeIdentification();
                            String targetLabel = subs[j].getName();
                            if (ident != null) {
                                foreignSource = ident.getForeignSource();
                                foreignId = ident.getForeignId();
                                targetNode = m_nodeDao.findByForeignId(foreignSource, foreignId);
                                if (targetNode == null) {
                                    continue;
                                }
                                if (targetLabel == null) {
                                    targetLabel = targetNode.getLabel();
                                }
                            }
                            String sourceElementName = subs[i].getForeignSource() + "::" + subs[i].getForeignId();
                            String targetElementName = subs[j].getForeignSource() + "::" + subs[j].getForeignId();
                            retval.add(new NCSEdge(subs[i].getForeignId(), service.getName(), sourceElementName, targetElementName, new NCSVertex(String.valueOf(sourceNode.getId()), sourceLabel), new NCSVertex(String.valueOf(targetNode.getId()), targetLabel)));
                        }
                    }
                }
            }
        } catch (ClassCastException e) {
        }
    }
    return retval;
}
Also used : OnmsNode(org.opennms.netmgt.model.OnmsNode) ArrayList(java.util.ArrayList) Criteria(org.opennms.features.topology.api.topo.Criteria) NCSComponent(org.opennms.netmgt.model.ncs.NCSComponent) NodeIdentification(org.opennms.netmgt.model.ncs.NCSComponent.NodeIdentification) Edge(org.opennms.features.topology.api.topo.Edge) AbstractEdge(org.opennms.features.topology.api.topo.AbstractEdge)

Example 30 with NCSComponent

use of org.opennms.netmgt.model.ncs.NCSComponent in project opennms by OpenNMS.

the class NCSServiceContainer method createRootItems.

private void createRootItems(List<NCSComponent> components) {
    Set<String> foreignSources = new HashSet<String>();
    for (NCSComponent component : components) {
        if (!foreignSources.contains(component.getForeignSource())) {
            foreignSources.add(component.getForeignSource());
            m_rootItems.add(new NCSRootServiceItem(component));
        }
    }
}
Also used : NCSComponent(org.opennms.netmgt.model.ncs.NCSComponent) HashSet(java.util.HashSet)

Aggregations

NCSComponent (org.opennms.netmgt.model.ncs.NCSComponent)30 NCSBuilder (org.opennms.netmgt.model.ncs.NCSBuilder)6 Test (org.junit.Test)5 Before (org.junit.Before)4 NetworkBuilder (org.opennms.netmgt.model.NetworkBuilder)4 ArrayList (java.util.ArrayList)3 HashSet (java.util.HashSet)3 LinkedHashSet (java.util.LinkedHashSet)3 EventProxyException (org.opennms.netmgt.events.api.EventProxyException)3 Transactional (org.springframework.transaction.annotation.Transactional)3 LinkedList (java.util.LinkedList)2 Criteria (org.opennms.features.topology.api.topo.Criteria)2 OnmsNode (org.opennms.netmgt.model.OnmsNode)2 NodeIdentification (org.opennms.netmgt.model.ncs.NCSComponent.NodeIdentification)2 NCSComponentRepository (org.opennms.netmgt.model.ncs.NCSComponentRepository)2 Item (com.vaadin.data.Item)1 Validator (com.vaadin.data.Validator)1 PropertysetItem (com.vaadin.data.util.PropertysetItem)1 Button (com.vaadin.ui.Button)1 ClickEvent (com.vaadin.ui.Button.ClickEvent)1