/** * Copyright (C) 2010-2013 Eugen Feller, INRIA <eugen.feller@inria.fr> * * This file is part of Snooze, a scalable, autonomic, and * energy-aware virtual machine (VM) management framework. * * This program is free software: you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation, either version 2 * of the License, or (at your option) any later version. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see <http://www.gnu.org/licenses>. */ package org.inria.myriads.snoozenode.util; import java.util.List; import java.util.Map; import org.inria.myriads.snoozecommon.communication.localcontroller.LocalControllerDescription; import org.inria.myriads.snoozecommon.communication.virtualcluster.VirtualMachineMetaData; import org.inria.myriads.snoozecommon.communication.virtualcluster.monitoring.VirtualMachineMonitoringData; import org.inria.myriads.snoozecommon.guard.Guard; import org.inria.myriads.snoozecommon.util.MonitoringUtils; import org.inria.myriads.snoozenode.configurator.api.NodeConfiguration; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Output utility. * * @author Eugen Feller */ public final class OutputUtils { /** Define the logger. */ private static final Logger log_ = LoggerFactory.getLogger(OutputUtils.class); /** * Hide the consturctor. */ private OutputUtils() { throw new UnsupportedOperationException(); } /** * Prints the local controllers. * * @param localControllers The local controller descriptions */ public static void printLocalControllers(List<LocalControllerDescription> localControllers) { Guard.check(localControllers); log_.debug("Printing local controllers"); for (LocalControllerDescription description : localControllers) { log_.debug(String.format("Local controller %s is %s with total capacity: %s", description.getId(), description.getStatus(), description.getTotalCapacity())); } } /** * Prints the virtual machines. * * @param virtualMachines The virtual machines */ public static void printVirtualMachines(List<VirtualMachineMetaData> virtualMachines) { Guard.check(virtualMachines); log_.debug("Printing virtual machines"); for (VirtualMachineMetaData virtualMachine : virtualMachines) { String virtualMachineId = virtualMachine.getVirtualMachineLocation().getVirtualMachineId(); Map<Long, VirtualMachineMonitoringData> usedCapacity = virtualMachine.getUsedCapacity(); if (usedCapacity.size() == 0) { log_.debug(String.format("No monitoring data available on virtual machine: %s", virtualMachineId)); continue; } VirtualMachineMonitoringData monitoringData = MonitoringUtils.getLatestVirtualMachineMonitoringData(usedCapacity); log_.debug(String.format("Virtual machine id: %s, requested capacity: %s, latest used capacity: %s", virtualMachineId, virtualMachine.getRequestedCapacity(), monitoringData.getUsedCapacity())); } } /** * Display node parameterss. * * @param configuration The node configuration */ public static void printNodeConfiguration(NodeConfiguration configuration) { Guard.check(configuration); log_.debug("------------------ System configuration -------------"); log_.debug("Node settings:"); log_.debug("-----------------"); log_.debug(String.format("node.role: %s", configuration.getNode().getRole())); log_.debug(String.format("node.networkCapacity.Rx: %s", configuration.getNode().getNetworkCapacity().getRxBytes())); log_.debug(String.format("node.networkCapacity.Tx: %s", configuration.getNode().getNetworkCapacity().getTxBytes())); log_.debug("--------------------"); log_.debug("Networking settings:"); log_.debug("--------------------"); log_.debug(String.format("network.listen.address: %s", configuration.getNetworking().getListen().getControlDataAddress().getAddress())); log_.debug(String.format("network.listen.controlDataPort: %s", configuration.getNetworking().getListen().getControlDataAddress().getPort())); log_.debug(String.format("network.listen.monitoringDataPort: %s", configuration.getNetworking().getListen().getMonitoringDataAddress().getPort())); log_.debug(String.format("network.multicast.address: %s", configuration.getNetworking().getMulticast().getGroupLeaderHeartbeatAddress().getAddress())); log_.debug(String.format("network.multicast.groupLeaderHeartbeatPort: %s", configuration.getNetworking().getMulticast().getGroupLeaderHeartbeatAddress().getPort())); log_.debug(String.format("network.multicast.groupManagerHeartbeatPort: %s", configuration.getNetworking().getMulticast().getGroupManagerHeartbeatAddress().getPort())); log_.debug("--------------------"); log_.debug("HTTPd settings:"); log_.debug("--------------------"); log_.debug(String.format("httpd.maxNumberOfThread: %s", configuration.getHTTPd().getMaximumNumberOfThreads())); log_.debug(String.format("httpd.maxNumberOfConnections: %s", configuration.getHTTPd().getMaximumNumberOfConnections())); log_.debug("-------------------------"); log_.debug("Fault tolerance settings:"); log_.debug("-------------------------"); log_.debug(String.format("faultTolerance.zookeeper.hosts: %s", configuration.getFaultTolerance().getZooKeeper().getHosts())); log_.debug(String.format("faultTolerance.zookeeper.sessionTimeout: %d", configuration.getFaultTolerance().getZooKeeper().getSessionTimeout())); log_.debug(String.format("faultTolerance.heartbeat.interval: %d", configuration.getFaultTolerance().getHeartbeat().getInterval())); log_.debug(String.format("faultTolerance.heartbeat.timeout: %d", configuration.getFaultTolerance().getHeartbeat().getTimeout())); log_.debug("--------------------"); log_.debug("Hypervisor settings:"); log_.debug("--------------------"); log_.debug(String.format("hypervisor.driver: %s", configuration.getHypervisor().getDriver())); log_.debug(String.format("hypervisor.transport: %s", configuration.getHypervisor().getTransport())); log_.debug(String.format("hypervisor.port: %d", configuration.getHypervisor().getPort())); log_.debug(String.format("hypervisor.migration.method: %s", configuration.getHypervisor().getMigration().getMethod())); log_.debug(String.format("hypervisor.migration.timeout: %s", configuration.getHypervisor().getMigration().getTimeout())); log_.debug("--------------------"); log_.debug("Database settings:"); log_.debug("--------------------"); log_.debug(String.format("database.type: %s", configuration.getDatabase().getType())); log_.debug(String.format("database.numberOfEntriesPerGroupManager: %s", configuration.getDatabase().getNumberOfEntriesPerGroupManager())); log_.debug(String.format("database.numberOfEntriesPerVirtualMachine: %s", configuration.getDatabase().getNumberOfEntriesPerVirtualMachine())); log_.debug("-----------------------"); log_.debug("Monitoring settings:"); log_.debug("-----------------------"); log_.debug(String.format("monitoring.interval: %d", configuration.getMonitoring().getInterval())); log_.debug(String.format("monitoring.timeout: %d", configuration.getMonitoring().getTimeout())); log_.debug(String.format("monitoring.numberOfMonitoringEntries: %d", configuration.getMonitoring().getNumberOfMonitoringEntries())); log_.debug(String.format("monitoring.thresholds.cpu: %s", configuration.getMonitoring().getThresholds().getCPU())); log_.debug(String.format("monitoring.thresholds.memory: %s", configuration.getMonitoring().getThresholds().getMemory())); log_.debug(String.format("monitoring.thresholds.network: %s", configuration.getMonitoring().getThresholds().getNetwork())); log_.debug("-------------------"); log_.debug("Estimation settings:"); log_.debug("-------------------"); log_.debug(String.format("estimator.static: %s", configuration.getEstimator().isStatic())); log_.debug(String.format("estimator.sortNorm: %s", configuration.getEstimator().getSortNorm())); log_.debug(String.format("estimator.numberOfMonitoringEntries: %s", configuration.getEstimator().getNumberOfMonitoringEntries())); log_.debug(String.format("estimator.policy.cpu: %s", configuration.getEstimator().getPolicy().getCPU())); log_.debug(String.format("estimator.policy.cpu: %s", configuration.getEstimator().getPolicy().getMemory())); log_.debug(String.format("estimator.policy.memory: %s", configuration.getEstimator().getPolicy().getNetwork())); log_.debug("--------------------------------"); log_.debug("Group leader scheduler settings:"); log_.debug("--------------------------------"); log_.debug(String.format("groupLeaderScheduler.assignmentPolicy: %s", configuration.getGroupLeaderScheduler().getAssignmentPolicy())); log_.debug(String.format("groupLeaderScheduler.dispatchingPolicy: %s", configuration.getGroupLeaderScheduler().getDispatchingPolicy())); log_.debug("---------------------------------"); log_.debug("Group manager scheduler settings:"); log_.debug("---------------------------------"); log_.debug(String.format("groupManagerScheduler.placementPolicy: %s", configuration.getGroupManagerScheduler().getPlacementPolicy())); log_.debug(String.format("groupManagerScheduler.relocation.overloadRelocationPolicy: %s", configuration.getGroupManagerScheduler().getRelocationSettings().getOverloadPolicy())); log_.debug(String.format("groupManagerScheduler.relocation.underloadRelocationPolicy: %s", configuration.getGroupManagerScheduler().getRelocationSettings().getUnderloadPolicy())); log_.debug(String.format("groupManagerScheduler.reconfiguration.enabled: %s", configuration.getGroupManagerScheduler().getReconfigurationSettings().isEnabled())); log_.debug(String.format("groupManagerScheduler.reconfiguration.policy: %s", configuration.getGroupManagerScheduler().getReconfigurationSettings().getPolicy())); log_.debug(String.format("groupManagerScheduler.reconfiguration.interval: %s", configuration.getGroupManagerScheduler().getReconfigurationSettings().getInterval())); log_.debug("---------------------------"); log_.debug("Energy management settings:"); log_.debug("---------------------------"); log_.debug(String.format("energyManagement.enableds: %s", configuration.getEnergyManagement().isEnabled())); log_.debug(String.format("energyManagement.numberOfReservedNodes: %d", configuration.getEnergyManagement().getNumberOfReservedNodes())); log_.debug(String.format("energyManagement.powerSavingAction: %s", configuration.getEnergyManagement().getPowerSavingAction())); log_.debug(String.format("energyManagement.drivers.shutdown: %s", configuration.getEnergyManagement().getDrivers().getShutdown())); log_.debug(String.format("energyManagement.drivers.suspend: %s", configuration.getEnergyManagement().getDrivers().getSuspend())); log_.debug(String.format("energyManagement.drivers.wakeup: %s", configuration.getEnergyManagement().getDrivers().getWakeup().getDriver())); log_.debug(String.format("energyManagement.drivers.wakeup.options: %s", configuration.getEnergyManagement().getDrivers().getWakeup().getOptions())); log_.debug(String.format("energyManagement.thresholds.idleTime: %d", configuration.getEnergyManagement().getThresholds().getIdleTime())); log_.debug(String.format("energyManagement.thresholds.wakeupTime: %d", configuration.getEnergyManagement().getThresholds().getWakeupTime())); log_.debug(String.format("energyManagement.commandExecutionTimeout: %d", configuration.getEnergyManagement().getCommandExecutionTimeout())); log_.debug("-----------------------"); log_.debug("Provisioner Settings"); log_.debug("-----------------------"); log_.debug(String.format("provisioner.contextDisk.bus: %s", configuration.getProvisionerSettings().getFirstCdSettings().getDiskBusType())); log_.debug(String.format("provisioner.contextDisk.dev: %s", configuration.getProvisionerSettings().getFirstCdSettings().getDiskDevice())); log_.debug(String.format("provisioner.disk.bus: %s", configuration.getProvisionerSettings().getFirstHdSettings().getDiskBusType())); log_.debug(String.format("provisioner.disk.dev: %s", configuration.getProvisionerSettings().getFirstHdSettings().getDiskDevice())); log_.debug(String.format("provisioner.serial.enable: %s", configuration.getProvisionerSettings().isEnableSerial())); log_.debug(String.format("provisioner.vnc.enable: %s", configuration.getProvisionerSettings().getVncSettings().isEnableVnc())); log_.debug(String.format("provisioner.vnc.listenAdddress: %s", configuration.getProvisionerSettings().getVncSettings().getListenAddress())); log_.debug(String.format("provisioner.vnc.startPort: %s", configuration.getProvisionerSettings().getVncSettings().getStartPort())); log_.debug(String.format("provisioner.vnc.portRange: %s", configuration.getProvisionerSettings().getVncSettings().getVncPortRange())); log_.debug(String.format("provisioner.vnc.keymap: %s", configuration.getProvisionerSettings().getVncSettings().getKeymap())); } }