mirror of https://github.com/apache/cloudstack.git
QuickCloud: sanitize logs for normal running of agents outside systemvm
This commit is contained in:
parent
271d232d62
commit
2e6c65fd34
|
|
@ -235,14 +235,14 @@ public class ConsoleProxyResource extends ServerResourceBase implements
|
|||
if (_eth1ip != null) {
|
||||
params.put("private.network.device", "eth1");
|
||||
} else {
|
||||
s_logger.warn("WARNING: eth1ip parameter is not found!");
|
||||
s_logger.info("eth1ip parameter has not been configured, assuming that we are not inside a system vm");
|
||||
}
|
||||
|
||||
String eth2ip = (String) params.get("eth2ip");
|
||||
if (eth2ip != null) {
|
||||
params.put("public.network.device", "eth2");
|
||||
} else {
|
||||
s_logger.warn("WARNING: eth2ip parameter is not found!");
|
||||
s_logger.info("eth2ip parameter is not found, assuming that we are not inside a system vm");
|
||||
}
|
||||
|
||||
super.configure(name, params);
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@ public abstract class ServerResourceBase implements ServerResource {
|
|||
_storageNic2 = getNetworkInterface(storageNic2);
|
||||
|
||||
if (_privateNic == null) {
|
||||
s_logger.error("Nics are not configured!");
|
||||
s_logger.warn("Nics are not specified in properties file/db, will try to autodiscover");
|
||||
|
||||
Enumeration<NetworkInterface> nics = null;
|
||||
try {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,298 @@
|
|||
// Licensed to the Apache Software Foundation (ASF) under one
|
||||
// or more contributor license agreements. See the NOTICE file
|
||||
// distributed with this work for additional information
|
||||
// regarding copyright ownership. The ASF licenses this file
|
||||
// to you 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.
|
||||
package com.cloud.consoleproxy;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import javax.ejb.Local;
|
||||
import javax.inject.Inject;
|
||||
import javax.naming.ConfigurationException;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.cloud.agent.AgentManager;
|
||||
import com.cloud.agent.api.GetVncPortAnswer;
|
||||
import com.cloud.agent.api.GetVncPortCommand;
|
||||
import com.cloud.agent.api.StartupProxyCommand;
|
||||
import com.cloud.configuration.dao.ConfigurationDao;
|
||||
import com.cloud.host.HostVO;
|
||||
import com.cloud.host.dao.HostDao;
|
||||
import com.cloud.info.ConsoleProxyInfo;
|
||||
import com.cloud.keystore.KeystoreManager;
|
||||
import com.cloud.utils.NumbersUtil;
|
||||
import com.cloud.utils.component.ManagerBase;
|
||||
import com.cloud.vm.ConsoleProxyVO;
|
||||
import com.cloud.vm.UserVmVO;
|
||||
import com.cloud.vm.VMInstanceVO;
|
||||
import com.cloud.vm.VirtualMachineManager;
|
||||
import com.cloud.vm.dao.ConsoleProxyDao;
|
||||
import com.cloud.vm.dao.UserVmDao;
|
||||
import com.cloud.vm.dao.VMInstanceDao;
|
||||
|
||||
@Local(value = { ConsoleProxyManager.class })
|
||||
public class AgentBasedConsoleProxyManager extends ManagerBase implements ConsoleProxyManager {
|
||||
private static final Logger s_logger = Logger.getLogger(AgentBasedConsoleProxyManager.class);
|
||||
|
||||
@Inject
|
||||
protected HostDao _hostDao;
|
||||
@Inject
|
||||
protected UserVmDao _userVmDao;
|
||||
private String _instance;
|
||||
protected String _consoleProxyUrlDomain;
|
||||
@Inject
|
||||
private VMInstanceDao _instanceDao;
|
||||
private ConsoleProxyListener _listener;
|
||||
protected int _consoleProxyUrlPort = ConsoleProxyManager.DEFAULT_PROXY_URL_PORT;
|
||||
protected int _consoleProxyPort = ConsoleProxyManager.DEFAULT_PROXY_VNC_PORT;
|
||||
protected boolean _sslEnabled = false;
|
||||
@Inject
|
||||
AgentManager _agentMgr;
|
||||
@Inject
|
||||
VirtualMachineManager _itMgr;
|
||||
@Inject
|
||||
protected ConsoleProxyDao _cpDao;
|
||||
@Inject
|
||||
protected KeystoreManager _ksMgr;
|
||||
|
||||
@Inject ConfigurationDao _configDao;
|
||||
|
||||
public class AgentBasedAgentHook extends AgentHookBase {
|
||||
|
||||
public AgentBasedAgentHook(VMInstanceDao instanceDao, HostDao hostDao, ConfigurationDao cfgDao,
|
||||
KeystoreManager ksMgr, AgentManager agentMgr) {
|
||||
super(instanceDao, hostDao, cfgDao, ksMgr, agentMgr);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected HostVO findConsoleProxyHost(StartupProxyCommand cmd) {
|
||||
return _hostDao.findByGuid(cmd.getGuid());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public int getVncPort(VMInstanceVO vm) {
|
||||
if (vm.getHostId() == null) {
|
||||
return -1;
|
||||
}
|
||||
GetVncPortAnswer answer = (GetVncPortAnswer) _agentMgr.easySend(vm.getHostId(), new GetVncPortCommand(vm.getId(), vm.getHostName()));
|
||||
return (answer == null || !answer.getResult()) ? -1 : answer.getPort();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean configure(String name, Map<String, Object> params) throws ConfigurationException {
|
||||
|
||||
if (s_logger.isInfoEnabled()) {
|
||||
s_logger.info("Start configuring AgentBasedConsoleProxyManager");
|
||||
}
|
||||
|
||||
Map<String, String> configs = _configDao.getConfiguration("management-server", params);
|
||||
String value = configs.get("consoleproxy.url.port");
|
||||
if (value != null) {
|
||||
_consoleProxyUrlPort = NumbersUtil.parseInt(value, ConsoleProxyManager.DEFAULT_PROXY_URL_PORT);
|
||||
}
|
||||
|
||||
value = configs.get("consoleproxy.port");
|
||||
if (value != null) {
|
||||
_consoleProxyPort = NumbersUtil.parseInt(value, ConsoleProxyManager.DEFAULT_PROXY_VNC_PORT);
|
||||
}
|
||||
|
||||
value = configs.get("consoleproxy.sslEnabled");
|
||||
if (value != null && value.equalsIgnoreCase("true")) {
|
||||
_sslEnabled = true;
|
||||
}
|
||||
|
||||
_instance = configs.get("instance.name");
|
||||
|
||||
_consoleProxyUrlDomain = configs.get("consoleproxy.url.domain");
|
||||
|
||||
_listener =
|
||||
new ConsoleProxyListener(new AgentBasedAgentHook(_instanceDao, _hostDao, _configDao, _ksMgr, _agentMgr));
|
||||
_agentMgr.registerForHostEvents(_listener, true, true, false);
|
||||
|
||||
if (s_logger.isInfoEnabled()) {
|
||||
s_logger.info("AgentBasedConsoleProxyManager has been configured. SSL enabled: " + _sslEnabled);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
HostVO findHost(VMInstanceVO vm) {
|
||||
return _hostDao.findById(vm.getHostId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public ConsoleProxyInfo assignProxy(long dataCenterId, long userVmId) {
|
||||
UserVmVO userVm = _userVmDao.findById(userVmId);
|
||||
if (userVm == null) {
|
||||
s_logger.warn("User VM " + userVmId + " no longer exists, return a null proxy for user vm:" + userVmId);
|
||||
return null;
|
||||
}
|
||||
|
||||
HostVO host = findHost(userVm);
|
||||
if (host != null) {
|
||||
if (s_logger.isDebugEnabled()) {
|
||||
s_logger.debug("Assign embedded console proxy running at " + host.getName() + " to user vm " + userVmId + " with public IP "
|
||||
+ host.getPublicIpAddress());
|
||||
}
|
||||
|
||||
// only private IP, public IP, host id have meaningful values, rest
|
||||
// of all are place-holder values
|
||||
String publicIp = host.getPublicIpAddress();
|
||||
if (publicIp == null) {
|
||||
if (s_logger.isDebugEnabled()) {
|
||||
s_logger.debug("Host " + host.getName() + "/" + host.getPrivateIpAddress()
|
||||
+ " does not have public interface, we will return its private IP for cosole proxy.");
|
||||
}
|
||||
publicIp = host.getPrivateIpAddress();
|
||||
}
|
||||
|
||||
int urlPort = _consoleProxyUrlPort;
|
||||
|
||||
if (host.getProxyPort() != null && host.getProxyPort().intValue() > 0) {
|
||||
urlPort = host.getProxyPort().intValue();
|
||||
}
|
||||
|
||||
return new ConsoleProxyInfo(_sslEnabled, publicIp, _consoleProxyPort, urlPort, _consoleProxyUrlDomain);
|
||||
} else {
|
||||
s_logger.warn("Host that VM is running is no longer available, console access to VM " + userVmId + " will be temporarily unavailable.");
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public ConsoleProxyVO startProxy(long proxyVmId) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean destroyProxy(long proxyVmId) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean rebootProxy(long proxyVmId) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean stopProxy(long proxyVmId) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setManagementState(ConsoleProxyManagementState state) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public ConsoleProxyManagementState getManagementState() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void resumeLastManagementState() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return _name;
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
|
||||
@Override
|
||||
public Long convertToId(String vmName) {
|
||||
if (!VirtualMachineName.isValidConsoleProxyName(vmName, _instance)) {
|
||||
return null;
|
||||
}
|
||||
return VirtualMachineName.getConsoleProxyId(vmName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ConsoleProxyVO findByName(String name) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ConsoleProxyVO findById(long id) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ConsoleProxyVO persist(ConsoleProxyVO vm) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean finalizeVirtualMachineProfile(VirtualMachineProfile<ConsoleProxyVO> profile, DeployDestination dest, ReservationContext context) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean finalizeDeployment(Commands cmds, VirtualMachineProfile<ConsoleProxyVO> profile, DeployDestination dest, ReservationContext context) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean finalizeCommandsOnStart(Commands cmds, VirtualMachineProfile<ConsoleProxyVO> profile) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean finalizeStart(VirtualMachineProfile<ConsoleProxyVO> profile, long hostId, Commands cmds, ReservationContext context) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void finalizeStop(VirtualMachineProfile<ConsoleProxyVO> profile, StopAnswer answer) {
|
||||
// TODO Auto-generated method stub
|
||||
}
|
||||
|
||||
@Override
|
||||
public void finalizeExpunge(ConsoleProxyVO proxy) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean plugNic(Network network, NicTO nic, VirtualMachineTO vm,
|
||||
ReservationContext context, DeployDestination dest) throws ConcurrentOperationException, ResourceUnavailableException,
|
||||
InsufficientCapacityException {
|
||||
//not supported
|
||||
throw new UnsupportedOperationException("Plug nic is not supported for vm of type " + vm.getType());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean unplugNic(Network network, NicTO nic, VirtualMachineTO vm,
|
||||
ReservationContext context, DeployDestination dest) throws ConcurrentOperationException, ResourceUnavailableException {
|
||||
//not supported
|
||||
throw new UnsupportedOperationException("Unplug nic is not supported for vm of type " + vm.getType());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void prepareStop(VirtualMachineProfile<ConsoleProxyVO> profile) {
|
||||
}
|
||||
}
|
||||
=======
|
||||
}
|
||||
>>>>>>> QuickCloud: refactor to avoid copy paste of authentication and startup code
|
||||
|
|
@ -25,8 +25,6 @@ import javax.inject.Inject;
|
|||
import javax.naming.ConfigurationException;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
import org.springframework.context.annotation.Primary;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import com.cloud.agent.api.Command;
|
||||
import com.cloud.configuration.Config;
|
||||
|
|
@ -90,6 +88,10 @@ public class PremiumSecondaryStorageManagerImpl extends SecondaryStorageManagerI
|
|||
@Override
|
||||
public Pair<AfterScanAction, Object> scanPool(Long pool) {
|
||||
long dataCenterId = pool.longValue();
|
||||
if (!isSecondaryStorageVmRequired(dataCenterId)) {
|
||||
return new Pair<AfterScanAction, Object>(AfterScanAction.nop, null);
|
||||
}
|
||||
|
||||
Date cutTime = new Date(DateUtil.currentGMTTime().getTime() - _maxExecutionTimeMs);
|
||||
|
||||
_cmdExecLogDao.expungeExpiredRecords(cutTime);
|
||||
|
|
|
|||
|
|
@ -851,7 +851,7 @@ public class DownloadMonitorImpl extends ManagerBase implements DownloadMonitor
|
|||
TemplateInfo tmpltInfo = templateInfos.remove(uniqueName);
|
||||
toBeDownloaded.remove(tmplt);
|
||||
if (tmpltHost != null) {
|
||||
s_logger.info("Template Sync found " + uniqueName + " already in the template host table");
|
||||
s_logger.info("Template Sync found " + tmplt.getName() + " already in the template host table");
|
||||
if (tmpltHost.getDownloadState() != Status.DOWNLOADED) {
|
||||
tmpltHost.setErrorString("");
|
||||
}
|
||||
|
|
@ -911,10 +911,12 @@ public class DownloadMonitorImpl extends ManagerBase implements DownloadMonitor
|
|||
continue;
|
||||
}
|
||||
if (tmpltHost != null && tmpltHost.getDownloadState() != Status.DOWNLOADED) {
|
||||
s_logger.info("Template Sync did not find " + uniqueName + " ready on server " + sserverId + ", will request download to start/resume shortly");
|
||||
s_logger.info("Template Sync did not find " + tmplt.getName() + " ready on server " + sserverId
|
||||
+ ", will request download to start/resume shortly");
|
||||
|
||||
} else if (tmpltHost == null) {
|
||||
s_logger.info("Template Sync did not find " + uniqueName + " on the server " + sserverId + ", will request download shortly");
|
||||
s_logger.info("Template Sync did not find " + tmplt.getName() + " on the server " + sserverId
|
||||
+ ", will request download shortly");
|
||||
VMTemplateHostVO templtHost = new VMTemplateHostVO(sserverId, tmplt.getId(), new Date(), 0, Status.NOT_DOWNLOADED, null, null, null, null, tmplt.getUrl());
|
||||
_vmTemplateHostDao.persist(templtHost);
|
||||
VMTemplateZoneVO tmpltZoneVO = _vmTemplateZoneDao.findByZoneTemplate(zoneId, tmplt.getId());
|
||||
|
|
@ -964,6 +966,9 @@ public class DownloadMonitorImpl extends ManagerBase implements DownloadMonitor
|
|||
}
|
||||
s_logger.debug("Template " + tmplt.getName() + " needs to be downloaded to " + ssHost.getName());
|
||||
downloadTemplateToStorage(tmplt, ssHost);
|
||||
} else {
|
||||
s_logger.info("Skipping download of template " + tmplt.getName() + " since we don't have any "
|
||||
+ tmplt.getHypervisorType() + " hypervisors");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -472,7 +472,7 @@ public class SecondaryStorageManagerImpl extends ManagerBase implements Secondar
|
|||
|
||||
}
|
||||
|
||||
private boolean isSecondaryStorageVmRequired(long dcId) {
|
||||
protected boolean isSecondaryStorageVmRequired(long dcId) {
|
||||
DataCenterVO dc = _dcDao.findById(dcId);
|
||||
_dcDao.loadDetails(dc);
|
||||
String ssvmReq = dc.getDetail(ZoneConfig.EnableSecStorageVm.key());
|
||||
|
|
|
|||
|
|
@ -1464,7 +1464,7 @@ SecondaryStorageResource {
|
|||
if (_eth1ip != null) { //can only happen inside service vm
|
||||
params.put("private.network.device", "eth1");
|
||||
} else {
|
||||
s_logger.warn("Wait, what's going on? eth1ip is null!!");
|
||||
s_logger.warn("eth1ip parameter has not been configured, assuming that we are not inside a system vm");
|
||||
}
|
||||
String eth2ip = (String) params.get("eth2ip");
|
||||
if (eth2ip != null) {
|
||||
|
|
@ -1479,8 +1479,8 @@ SecondaryStorageResource {
|
|||
}
|
||||
|
||||
_storageIp = (String) params.get("storageip");
|
||||
if (_storageIp == null) {
|
||||
s_logger.warn("Wait, there is no storageip in /proc/cmdline, something wrong!");
|
||||
if (_storageIp == null && _inSystemVM) {
|
||||
s_logger.warn("There is no storageip in /proc/cmdline, something wrong!");
|
||||
}
|
||||
_storageNetmask = (String) params.get("storagenetmask");
|
||||
_storageGateway = (String) params.get("storagegateway");
|
||||
|
|
|
|||
|
|
@ -22,8 +22,8 @@ import java.nio.channels.SelectionKey;
|
|||
import java.nio.channels.Selector;
|
||||
import java.nio.channels.SocketChannel;
|
||||
|
||||
import javax.net.ssl.SSLEngine;
|
||||
import javax.net.ssl.SSLContext;
|
||||
import javax.net.ssl.SSLEngine;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
|
|
@ -78,6 +78,7 @@ public class NioClient extends NioConnection {
|
|||
|
||||
Link.doHandshake(sch, sslEngine, true);
|
||||
s_logger.info("SSL: Handshake done");
|
||||
s_logger.info("Connected to " + _host + ":" + _port);
|
||||
} catch (Exception e) {
|
||||
_selector.close();
|
||||
throw new IOException("SSL: Fail to init SSL! " + e);
|
||||
|
|
|
|||
|
|
@ -107,7 +107,7 @@ public abstract class NioConnection implements Runnable {
|
|||
try {
|
||||
init();
|
||||
} catch (ConnectException e) {
|
||||
s_logger.error("Unable to connect to remote");
|
||||
s_logger.warn("Unable to connect to remote: is there a server running on port " + _port);
|
||||
return;
|
||||
} catch (IOException e) {
|
||||
s_logger.error("Unable to initialize the threads.", e);
|
||||
|
|
|
|||
Loading…
Reference in New Issue