| package net.onrc.onos.ofcontroller.core; |
| |
| import org.kohsuke.args4j.CmdLineException; |
| import org.kohsuke.args4j.CmdLineParser; |
| |
| import net.floodlightcontroller.core.IFloodlightProviderService; |
| import net.floodlightcontroller.core.internal.CmdLineSettings; |
| import net.floodlightcontroller.core.module.FloodlightModuleException; |
| import net.floodlightcontroller.core.module.FloodlightModuleLoader; |
| import net.floodlightcontroller.core.module.IFloodlightModuleContext; |
| import net.floodlightcontroller.restserver.IRestApiService; |
| |
| /** |
| * Host for the ONOS main method |
| * @author alexreimers |
| */ |
| public class Main { |
| |
| /** |
| * Main method to load configuration and modules |
| * @param args |
| * @throws FloodlightModuleException |
| */ |
| public static void main(String[] args) throws FloodlightModuleException { |
| // Setup logger |
| System.setProperty("org.restlet.engine.loggerFacadeClass", |
| "org.restlet.ext.slf4j.Slf4jLoggerFacade"); |
| |
| CmdLineSettings settings = new CmdLineSettings(); |
| CmdLineParser parser = new CmdLineParser(settings); |
| try { |
| parser.parseArgument(args); |
| } catch (CmdLineException e) { |
| parser.printUsage(System.out); |
| System.exit(1); |
| } |
| |
| // Load modules |
| FloodlightModuleLoader fml = new FloodlightModuleLoader(); |
| IFloodlightModuleContext moduleContext = fml.loadModulesFromConfig(settings.getModuleFile()); |
| // Run REST server |
| IRestApiService restApi = moduleContext.getServiceImpl(IRestApiService.class); |
| restApi.run(); |
| // Run the main floodlight module |
| IFloodlightProviderService controller = |
| moduleContext.getServiceImpl(IFloodlightProviderService.class); |
| // This call blocks, it has to be the last line in the main |
| controller.run(); |
| } |
| } |