package org.opendaylight.controller.config.yang.config.vpp_provider.impl;
import java.util.List;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.controller.md.sal.binding.api.MountPointService;
import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
import org.opendaylight.controller.sal.binding.api.BindingAwareProvider;
+import org.opendaylight.groupbasedpolicy.renderer.vpp.api.BridgeDomainManager;
+import org.opendaylight.groupbasedpolicy.renderer.vpp.adapter.VppRpcServiceImpl;
import org.opendaylight.groupbasedpolicy.renderer.vpp.iface.InterfaceManager;
import org.opendaylight.groupbasedpolicy.renderer.vpp.listener.RendererPolicyListener;
import org.opendaylight.groupbasedpolicy.renderer.vpp.listener.VppEndpointListener;
import org.opendaylight.groupbasedpolicy.renderer.vpp.listener.VppNodeListener;
-import org.opendaylight.groupbasedpolicy.renderer.vpp.manager.BridgeDomainManagerImpl;
import org.opendaylight.groupbasedpolicy.renderer.vpp.manager.VppNodeManager;
+import org.opendaylight.groupbasedpolicy.renderer.vpp.policy.BridgeDomainManagerImpl;
import org.opendaylight.groupbasedpolicy.renderer.vpp.policy.ForwardingManager;
import org.opendaylight.groupbasedpolicy.renderer.vpp.policy.VppRendererPolicyManager;
import org.opendaylight.groupbasedpolicy.renderer.vpp.sf.AllowAction;
import com.google.common.util.concurrent.CheckedFuture;
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ThreadFactoryBuilder;
public class VppRenderer implements AutoCloseable, BindingAwareProvider {
private static final Logger LOG = LoggerFactory.getLogger(VppRenderer.class);
public static final RendererName NAME = new RendererName("vpp-renderer");
- /**
- * Should be used for processing netconf responses so we do not consume netty thread.
- */
- private static final ExecutorService NETCONF_WORKER = Executors.newSingleThreadExecutor(
- new ThreadFactoryBuilder().setNameFormat("netconf-processing-worker-%d").setDaemon(true).build());
private final List<SupportedActionDefinition> actionDefinitions =
ImmutableList.of(new SupportedActionDefinitionBuilder().setActionDefinitionId(new AllowAction().getId())
private VppNodeListener vppNodeListener;
private VppEndpointListener vppEndpointListener;
private RendererPolicyListener rendererPolicyListener;
+ private VppRpcServiceImpl vppRpcServiceImpl;
public VppRenderer(DataBroker dataBroker, BindingAwareBroker bindingAwareBroker) {
this.dataBroker = Preconditions.checkNotNull(dataBroker);
MountPointService mountService =
Preconditions.checkNotNull(providerContext.getSALService(MountPointService.class));
- MountedDataBrokerProvider mountDataProvider = new MountedDataBrokerProvider(mountService);
+ MountedDataBrokerProvider mountDataProvider = new MountedDataBrokerProvider(mountService, dataBroker);
vppNodeManager = new VppNodeManager(dataBroker, providerContext);
- EventBus dtoEventBus = new EventBus("DTO events");
- interfaceManager = new InterfaceManager(mountDataProvider, dataBroker, NETCONF_WORKER);
+ EventBus dtoEventBus = new EventBus((exception, context) -> LOG.error("Could not dispatch event: {} to {}",
+ context.getSubscriber(), context.getSubscriberMethod(), exception));
+ interfaceManager = new InterfaceManager(mountDataProvider, dataBroker);
dtoEventBus.register(interfaceManager);
- ForwardingManager fwManager = new ForwardingManager(interfaceManager, new BridgeDomainManagerImpl(dataBroker));
+ BridgeDomainManager bdManager = new BridgeDomainManagerImpl(dataBroker);
+ ForwardingManager fwManager = new ForwardingManager(interfaceManager, bdManager, dataBroker);
vppRendererPolicyManager = new VppRendererPolicyManager(fwManager, dataBroker);
dtoEventBus.register(vppRendererPolicyManager);
vppNodeListener = new VppNodeListener(dataBroker, vppNodeManager, dtoEventBus);
vppEndpointListener = new VppEndpointListener(dataBroker, dtoEventBus);
rendererPolicyListener = new RendererPolicyListener(dataBroker, dtoEventBus);
-
+ vppRpcServiceImpl = new VppRpcServiceImpl(dataBroker, mountDataProvider, bdManager, interfaceManager);
registerToRendererManager();
}
}
});
}
+
+ VppRpcServiceImpl getVppRpcServiceImpl() {
+ return vppRpcServiceImpl;
+ }
}