/** * This file is part of CloudML [ http://cloudml.org ] * * Copyright (C) 2012 - SINTEF ICT * Contact: Franck Chauvel <franck.chauvel@sintef.no> * * Module: root * * CloudML is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation, either version 3 of * the License, or (at your option) any later version. * * CloudML is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General * Public License along with CloudML. If not, see * <http://www.gnu.org/licenses/>. */ package org.cloudml.websocket; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.Arrays; import java.util.Map; import java.util.logging.Level; import java.util.logging.LogManager; import java.util.logging.Logger; import org.cloudml.codecs.JsonCodec; import org.cloudml.core.ComponentInstance; import org.cloudml.core.Deployment; import org.cloudml.facade.FacadeBridge; import org.cloudml.mrt.Coordinator; import org.cloudml.mrt.PeerStub; import org.cloudml.mrt.cmd.gen.Extended; import org.cloudml.mrt.sample.SystemOutPeerStub; /** * Hello world! * */ public class Daemon { public static void main( String[] args ) { final InputStream inputStream = Daemon.class.getClassLoader().getResourceAsStream("logging.properties"); try { LogManager.getLogManager().readConfiguration(inputStream); } catch (IOException e) { e.printStackTrace(); } Map<String, String> env = System.getenv(); int port = 9030; if(env.containsKey("MODACLOUDS_MODELS_AT_RUNTIME_ENDPOINT_PORT")) port=Integer.parseInt(env.get("MODACLOUDS_MODELS_AT_RUNTIME_ENDPOINT_PORT")); if(args.length >= 1) port = Integer.parseInt(args[0]); Coordinator coord = new Coordinator(); coord.setModelRepo(new FacadeBridge()); CoordWsReception reception = new CoordWsReception(port, coord); coord.setReception(reception); Coordinator.SINGLE_INSTANCE = coord; //coord.setCloudMLRoot(initWithSenseApp()); //coord.executor.repo.root = initWithMdms(); //initWithSample(coord); coord.start(); /*coord.process("!extended { name : LoadDeployment, params : ['sample://sensapp'] }", new SystemOutPeerStub("test")); try { Thread.sleep(10000); } catch (InterruptedException ex) { Logger.getLogger(Daemon.class.getName()).log(Level.SEVERE, null, ex); } System.out.println("changed!"); coord.updateStatus("sensapp-ml1", ComponentInstance.State.PENDING, "some");*/ } public static Deployment initWithSenseApp(){ Deployment root = null; JsonCodec jsonCodec = new JsonCodec(); try { root = (Deployment) jsonCodec.load(new FileInputStream("sensappAdmin.json")); } catch (FileNotFoundException ex) { Logger.getLogger(Daemon.class.getName()).log(Level.SEVERE, null, ex); } return root; // for(VMInstance ni : root.getExternalComponentInstances()){ // ni.getProperties().add(new Property("state","onn")); // } // for(InternalComponentInstance ai : root.getComponentInstances()){ // ai.getProperties().add(new Property("state","onn")); // } } public static void initWithSample(Coordinator coord){ Extended extended = new Extended(); extended.name = "LoadDeployment"; extended.params = Arrays.asList("sample://sensApp"); coord.process(extended, new PeerStub(){ @Override public String getID() { return "Root User"; } @Override public void sendMessage(Object message) { } }); //coord. } }