PortAnnotationOperator(NetworkConfigService networkConfigService) { bindService(networkConfigService); }
/** * Merges the appropriate PortConfig with the description. * * @param cpt ConnectPoint where the port is attached * @param desc {@link PortDescription} * @return merged {@link PortDescription} */ private PortDescription applyAllPortOps(ConnectPoint cpt, PortDescription desc) { PortDescription work = desc; for (PortConfigOperator portOp : portOps) { work = portOp.combine(cpt, work); } return portAnnotationOp.combine(cpt, work); }
@Activate public void activate() { portAnnotationOp = new PortAnnotationOperator(networkConfigService); deviceAnnotationOp = new DeviceAnnotationOperator(networkConfigService); portOpsIndex.put(PortAnnotationConfig.class, portAnnotationOp); backgroundService = newSingleThreadScheduledExecutor( groupedThreads("onos/device", "manager-background", log)); localNodeId = clusterService.getLocalNode().id(); store.setDelegate(delegate); eventDispatcher.addSink(DeviceEvent.class, listenerRegistry); mastershipService.addListener(mastershipListener); networkConfigService.addListener(networkConfigListener); backgroundService.scheduleWithFixedDelay(() -> { try { mastershipCheck(); } catch (Exception e) { log.error("Exception thrown during integrity check", e); } }, 1, 1, TimeUnit.MINUTES); portReqeustExecutor = newSingleThreadExecutor(); communicationService.<InternalPortUpDownEvent>addSubscriber( PORT_UPDOWN_SUBJECT, SERIALIZER::decode, this::handlePortRequest, portReqeustExecutor); log.info("Started"); }
@Override public PortDescription combine(ConnectPoint cp, PortDescription descr) { PortAnnotationConfig cfg = lookupConfig(cp); if (cfg == null) { return descr; } Map<String, String> annotations = cfg.annotations(); if (annotations.isEmpty()) { return descr; } Builder builder = DefaultAnnotations.builder(); builder.putAll(descr.annotations()); builder.putAll(annotations); return DefaultPortDescription.builder(descr) .annotations(builder.build()) .build(); }