+++ /dev/null
-/*
- * ============LICENSE_START==========================================
- * Copyright (c) 2019 PANTHEON.tech s.r.o.
- * ===================================================================
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
- * OF ANY KIND, either express or implied. See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END============================================
- *
- */
-package org.onap.ccsdk.distribution.lighty;
-
-import io.lighty.core.controller.impl.config.ControllerConfiguration;
-import io.lighty.core.controller.impl.util.ControllerConfigUtils;
-import io.lighty.modules.northbound.restconf.community.impl.config.RestConfConfiguration;
-import io.lighty.modules.northbound.restconf.community.impl.util.RestConfConfigUtils;
-import java.net.InetAddress;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.Set;
-import java.util.concurrent.ExecutionException;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-import org.opendaylight.yangtools.yang.binding.YangModuleInfo;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Main class of the CCSDK lighty.io application. In order to start the application run main method. Path to
- * the configuration file can be provided as argument. If not, then default configuration will be used.
- */
-public class Main {
-
- private static final Logger LOG = LoggerFactory.getLogger(Main.class);
-
- private ShutdownHook shutdownHook;
-
- public static void main(String[] args) {
- Main app = new Main();
- app.start(args, true);
- }
-
- public void start(String[] args, boolean registerShutdownHook) {
- long startTime = System.nanoTime();
- LOG.info(".__ .__ .__ __ .__ _________ _________ _________________ "
- + " ____ __.");
- LOG.info("| | |__| ____ | |___/ |_ ___.__. |__| ____ \\_ ___ \\\\_ ___ \\ / _____/\\___"
- + "___ \\ | |/ _|");
- LOG.info("| | | |/ ___\\| | \\ __< | | | |/ _ \\ ______ / \\ \\// \\ \\/ \\_____ \\ "
- + " | | \\| <");
- LOG.info("| |_| / /_/ > Y \\ | \\___ | | ( <_> ) /_____/ \\ \\___\\ \\____/ \\ |"
- + " ` \\ | \\");
- LOG.info("|____/__\\___ /|___| /__| / ____| /\\ |__|\\____/ \\______ /\\______ /_______ //___"
- + "____ /____|__ \\");
- LOG.info(" /_____/ \\/ \\/ \\/ \\/ \\/ \\/ "
- + " \\/ \\/");
-
- LOG.info("Starting lighty.io CCSDK application ...");
- LOG.info("https://lighty.io/");
- LOG.info("https://github.com/PantheonTechnologies/lighty-core");
- try {
- if (args.length > 0) {
- Path configPath = Paths.get(args[0]);
- LOG.info("Using configuration from file {} ...", configPath);
- //1. get controller configuration
- ControllerConfiguration singleNodeConfiguration =
- ControllerConfigUtils.getConfiguration(Files.newInputStream(configPath));
- //2. get RESTCONF NBP configuration
- RestConfConfiguration restConfConfiguration = RestConfConfigUtils
- .getRestConfConfiguration(Files.newInputStream(configPath));
- //3. start lighty
- startLighty(singleNodeConfiguration, restConfConfiguration, registerShutdownHook);
- } else {
- LOG.info("Using default configuration ...");
- Set<YangModuleInfo> modelPaths = Stream.concat(RestConfConfigUtils.YANG_MODELS.stream(),
- CcsdkLightyModule.YANG_MODELS.stream()).collect(Collectors.toSet());
- //1. get controller configuration
- ControllerConfiguration defaultSingleNodeConfiguration =
- ControllerConfigUtils.getDefaultSingleNodeConfiguration(modelPaths);
- //2. get RESTCONF NBP configuration
- RestConfConfiguration restConfConfig =
- RestConfConfigUtils.getDefaultRestConfConfiguration();
- restConfConfig.setInetAddress(InetAddress.getLocalHost());
- restConfConfig.setHttpPort(8181);
- //3. start lighty
- startLighty(defaultSingleNodeConfiguration, restConfConfig, registerShutdownHook);
- }
- float duration = (System.nanoTime() - startTime)/1_000_000f;
- LOG.info("lighty.io and CCSDK started in {}ms", duration);
- } catch (Exception e) {
- LOG.error("Main CCSDK lighty.io application exception: ", e);
- }
- }
-
- private void startLighty(ControllerConfiguration singleNodeConfiguration,
- RestConfConfiguration restConfConfiguration, boolean registerShutdownHook)
- throws ExecutionException, InterruptedException {
- CcsdkLightyApplication ccsdkLightyApplication = new CcsdkLightyApplication(singleNodeConfiguration,
- restConfConfiguration);
-
- if (registerShutdownHook) {
- shutdownHook = new ShutdownHook(ccsdkLightyApplication);
- Runtime.getRuntime().addShutdownHook(shutdownHook);
- }
-
- ccsdkLightyApplication.start().get();
- }
-
- private static class ShutdownHook extends Thread {
-
- private static final Logger LOG = LoggerFactory.getLogger(ShutdownHook.class);
- private final CcsdkLightyApplication ccsdkLightyApplication;
-
- ShutdownHook(CcsdkLightyApplication ccsdkLightyApplication) {
- this.ccsdkLightyApplication = ccsdkLightyApplication;
- }
-
- @Override
- public void run() {
- LOG.info("lighty.io and CCSDK shutting down ...");
- long startTime = System.nanoTime();
- try {
- ccsdkLightyApplication.shutdown();
- } catch (Exception e) {
- LOG.error("Exception while shutting down lighty.io CCSDK application:", e);
- }
- float duration = (System.nanoTime() - startTime)/1_000_000f;
- LOG.info("lighty.io and CCSDK stopped in {}ms", duration);
- }
-
- }
-}