X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fforwardingrulesmanager_mdsal%2Fopenflow%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fforwardingrulesmanager_mdsal%2Fconsumer%2Fimpl%2FFRMConsumerImpl.java;h=e48e03867c89025fc62babeab7548a8947a27712;hb=d542617f3486541cf9937009fb6aa1e3f2c9f0e2;hp=ae488b689f4788c95d017a07c53cb0ddecb9f0fd;hpb=421d43013a16c9c2e025c66fea06f97e3f927bb9;p=controller.git diff --git a/opendaylight/forwardingrulesmanager_mdsal/openflow/src/main/java/org/opendaylight/controller/forwardingrulesmanager_mdsal/consumer/impl/FRMConsumerImpl.java b/opendaylight/forwardingrulesmanager_mdsal/openflow/src/main/java/org/opendaylight/controller/forwardingrulesmanager_mdsal/consumer/impl/FRMConsumerImpl.java index ae488b689f..e48e03867c 100644 --- a/opendaylight/forwardingrulesmanager_mdsal/openflow/src/main/java/org/opendaylight/controller/forwardingrulesmanager_mdsal/consumer/impl/FRMConsumerImpl.java +++ b/opendaylight/forwardingrulesmanager_mdsal/openflow/src/main/java/org/opendaylight/controller/forwardingrulesmanager_mdsal/consumer/impl/FRMConsumerImpl.java @@ -10,16 +10,23 @@ package org.opendaylight.controller.forwardingrulesmanager_mdsal.consumer.impl; +import org.eclipse.osgi.framework.console.CommandProvider; +import org.opendaylight.controller.clustering.services.IClusterContainerServices; import org.opendaylight.controller.sal.binding.api.AbstractBindingAwareProvider; import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext; import org.opendaylight.controller.sal.binding.api.NotificationService; import org.opendaylight.controller.sal.binding.api.data.DataBrokerService; import org.opendaylight.controller.sal.binding.api.data.DataProviderService; +import org.opendaylight.controller.sal.core.IContainer; +import org.opendaylight.controller.sal.utils.ServiceHelper; +import org.opendaylight.controller.switchmanager.ISwitchManager; +import org.osgi.framework.BundleContext; +import org.osgi.framework.FrameworkUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class FRMConsumerImpl extends AbstractBindingAwareProvider { +public class FRMConsumerImpl extends AbstractBindingAwareProvider implements CommandProvider{ protected static final Logger logger = LoggerFactory.getLogger(FRMConsumerImpl.class); private static ProviderContext p_session; private static DataBrokerService dataBrokerService; @@ -28,11 +35,21 @@ public class FRMConsumerImpl extends AbstractBindingAwareProvider { private GroupConsumerImpl groupImplRef; private static DataProviderService dataProviderService; + private static IClusterContainerServices clusterContainerService = null; + private static ISwitchManager switchManager; + private static IContainer container; + @Override public void onSessionInitiated(ProviderContext session) { FRMConsumerImpl.p_session = session; + if (!getDependentModule()) { + logger.error("Unable to fetch handlers for dependent modules"); + System.out.println("Unable to fetch handlers for dependent modules"); + return; + } + if (null != session) { notificationService = session.getSALService(NotificationService.class); @@ -44,7 +61,8 @@ public class FRMConsumerImpl extends AbstractBindingAwareProvider { if (null != dataProviderService) { flowImplRef = new FlowConsumerImpl(); - groupImplRef = new GroupConsumerImpl(); + // groupImplRef = new GroupConsumerImpl(); + registerWithOSGIConsole(); } else { logger.error("Data Provider Service is down or NULL. " + @@ -68,18 +86,85 @@ public class FRMConsumerImpl extends AbstractBindingAwareProvider { System.out.println("Consumer session is NULL. Please check if provider is registered"); } + } + + public static IClusterContainerServices getClusterContainerService() { + return clusterContainerService; + } + + public static void setClusterContainerService( + IClusterContainerServices clusterContainerService) { + FRMConsumerImpl.clusterContainerService = clusterContainerService; + } + + public static ISwitchManager getSwitchManager() { + return switchManager; + } + + public static void setSwitchManager(ISwitchManager switchManager) { + FRMConsumerImpl.switchManager = switchManager; + } + + public static IContainer getContainer() { + return container; } - public static DataProviderService getDataProviderService() { + public static void setContainer(IContainer container) { + FRMConsumerImpl.container = container; + } + + private void registerWithOSGIConsole() { + BundleContext bundleContext = FrameworkUtil.getBundle(this.getClass()).getBundleContext(); + bundleContext.registerService(CommandProvider.class.getName(), this, null); + } + + private boolean getDependentModule() { + do { + clusterContainerService = (IClusterContainerServices) ServiceHelper.getGlobalInstance(IClusterContainerServices.class, this); + try { + Thread.sleep(4); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } while(clusterContainerService == null); + + do { + + + container = (IContainer) ServiceHelper.getGlobalInstance(IContainer.class, this); + try { + Thread.sleep(5); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } while (container == null); + + do { + switchManager = (ISwitchManager) ServiceHelper.getInstance(ISwitchManager.class, container.getName(), this); + try { + Thread.sleep(5); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } while(null == switchManager); + return true; + } + + + + public static DataProviderService getDataProviderService() { return dataProviderService; } public FlowConsumerImpl getFlowImplRef() { - return flowImplRef; + return flowImplRef; } public GroupConsumerImpl getGroupImplRef() { - return groupImplRef; + return groupImplRef; } public static ProviderContext getProviderSession() { @@ -93,6 +178,15 @@ public class FRMConsumerImpl extends AbstractBindingAwareProvider { public static DataBrokerService getDataBrokerService() { return dataBrokerService; } + + /* + * OSGI COMMANDS + */ + @Override + public String getHelp() { + StringBuffer help = new StringBuffer(); + return help.toString(); + } }