This is an automated email from the ASF dual-hosted git repository. dahn pushed a commit to branch 4.18 in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/4.18 by this push: new 523ab58d028 Fix PR 7131 bugs and vulnerabilities (#7140) 523ab58d028 is described below commit 523ab58d02819addfe9ec4cab1e95c25f124a950 Author: João Jandre <48719461+joaojan...@users.noreply.github.com> AuthorDate: Tue Mar 21 11:06:18 2023 -0300 Fix PR 7131 bugs and vulnerabilities (#7140) --- .../kvm/resource/LibvirtComputingResource.java | 2 +- .../kvm/storage/LibvirtStorageAdaptor.java | 4 +- .../com/cloud/ovm/hypervisor/OvmResourceBase.java | 2 +- .../hypervisor/vmware/resource/VmwareResource.java | 5 + .../resource/XenServerConnectionPool.java | 3 +- .../com/cloud/alert/ConsoleProxyAlertAdapter.java | 169 ++++++++++---------- .../alert/SecondaryStorageVmAlertAdapter.java | 173 +++++++++++---------- server/src/main/java/com/cloud/api/ApiServer.java | 11 +- .../ExternalLoadBalancerDeviceManagerImpl.java | 8 +- .../com/cloud/servlet/ConsoleProxyServlet.java | 26 +++- .../main/java/com/cloud/vm/UserVmManagerImpl.java | 3 +- .../OutOfBandManagementServiceImpl.java | 3 +- .../resource/NfsSecondaryStorageResource.java | 2 +- 13 files changed, 229 insertions(+), 182 deletions(-) diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java index ad1ab77c3a8..3f711fa9b80 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java @@ -1759,7 +1759,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv } public boolean passCmdLine(final String vmName, final String cmdLine) throws InternalErrorException { - final Script command = new Script(_patchScriptPath, 300 * 1000, s_logger); + final Script command = new Script(_patchScriptPath, 300000, s_logger); String result; command.add("-n", vmName); command.add("-c", cmdLine); diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java index 4f228ac9e2d..183a36446cf 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java @@ -1427,7 +1427,9 @@ public class LibvirtStorageAdaptor implements StorageAdaptor { r.ioCtxDestroy(io); } catch (QemuImgException | LibvirtException e) { - s_logger.error("Failed to convert from " + srcFile.getFileName() + " to " + destFile.getFileName() + " the error was: " + e.getMessage()); + String srcFilename = srcFile != null ? srcFile.getFileName() : null; + String destFilename = destFile != null ? destFile.getFileName() : null; + s_logger.error(String.format("Failed to convert from %s to %s the error was: %s", srcFilename, destFilename, e.getMessage())); newDisk = null; } catch (RadosException e) { s_logger.error("A Ceph RADOS operation failed (" + e.getReturnValue() + "). The error was: " + e.getMessage()); diff --git a/plugins/hypervisors/ovm/src/main/java/com/cloud/ovm/hypervisor/OvmResourceBase.java b/plugins/hypervisors/ovm/src/main/java/com/cloud/ovm/hypervisor/OvmResourceBase.java index f24783190d4..cf2f1fbed64 100644 --- a/plugins/hypervisors/ovm/src/main/java/com/cloud/ovm/hypervisor/OvmResourceBase.java +++ b/plugins/hypervisors/ovm/src/main/java/com/cloud/ovm/hypervisor/OvmResourceBase.java @@ -258,7 +258,7 @@ public class OvmResourceBase implements ServerResource, HypervisorResource { _canBridgeFirewall = false; - s_logger.debug(_canBridgeFirewall ? "OVM host supports security groups." : "OVM host doesn't support security groups."); + s_logger.debug("OVM host doesn't support security groups."); return true; } diff --git a/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/resource/VmwareResource.java b/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/resource/VmwareResource.java index 5be98d4c43c..aa26f63b3a9 100644 --- a/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/resource/VmwareResource.java +++ b/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/resource/VmwareResource.java @@ -7541,6 +7541,11 @@ public class VmwareResource extends ServerResourceBase implements StoragePoolRes // prepare network on the host prepareNetworkFromNicInfo((HostMO)targetHyperHost, nic, false, vmTo.getType()); } + + if (targetHyperHost == null) { + throw new CloudRuntimeException(String.format("Trying to relocate VM [%s], but target hyper host is null.", vmTo.getUuid())); + } + // Ensure secondary storage mounted on target host VmwareManager mgr = targetHyperHost.getContext().getStockObject(VmwareManager.CONTEXT_STOCK_NAME); Pair<String, Long> secStoreUrlAndId = mgr.getSecondaryStorageStoreUrlAndId(Long.parseLong(_dcId)); diff --git a/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/XenServerConnectionPool.java b/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/XenServerConnectionPool.java index 9bc8d9e8bf0..2f27b1376fd 100644 --- a/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/XenServerConnectionPool.java +++ b/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/XenServerConnectionPool.java @@ -210,7 +210,8 @@ public class XenServerConnectionPool { throw e; } catch (Exception e) { if (s_logger.isDebugEnabled()) { - s_logger.debug("connect through IP(" + mConn.getIp() + " for pool(" + poolUuid + ") is broken due to " + e.toString()); + String ip = mConn != null ? mConn.getIp() : null; + s_logger.debug("connect through IP(" + ip + ") for pool(" + poolUuid + ") is broken due to " + e.toString()); } removeConnect(poolUuid); mConn = null; diff --git a/server/src/main/java/com/cloud/alert/ConsoleProxyAlertAdapter.java b/server/src/main/java/com/cloud/alert/ConsoleProxyAlertAdapter.java index 72dd0d7fb0b..cdcf68b10fd 100644 --- a/server/src/main/java/com/cloud/alert/ConsoleProxyAlertAdapter.java +++ b/server/src/main/java/com/cloud/alert/ConsoleProxyAlertAdapter.java @@ -21,6 +21,7 @@ import java.util.Map; import javax.inject.Inject; import javax.naming.ConfigurationException; +import org.apache.cloudstack.alert.AlertService; import org.apache.log4j.Logger; import org.springframework.stereotype.Component; @@ -60,87 +61,95 @@ public class ConsoleProxyAlertAdapter extends AdapterBase implements AlertAdapte throw new CloudRuntimeException("Invalid alert arguments, proxy must be set"); } + String proxyHostName = ""; + String proxyPublicIpAddress = ""; + String proxyPrivateIpAddress = "N/A"; + Long proxyPodIdToDeployIn = null; + + if (proxy != null) { + proxyHostName = proxy.getHostName(); + proxyPublicIpAddress = proxy.getPublicIpAddress(); + proxyPrivateIpAddress = proxy.getPrivateIpAddress() == null ? "N/A" : proxy.getPrivateIpAddress(); + proxyPodIdToDeployIn = proxy.getPodIdToDeployIn(); + } + + String message = ""; + String zoneProxyPublicAndPrivateIp = String.format("zone [%s], proxy [%s], public IP [%s], private IP [%s].", dc.getName(), proxyHostName, proxyPublicIpAddress, + proxyPrivateIpAddress); + String zone = String.format("(zone %s)", dc.getName()); + String errorDetails = " Error details: " + args.getMessage(); + + switch (args.getType()) { - case ConsoleProxyAlertEventArgs.PROXY_CREATED: - if (s_logger.isDebugEnabled()) - s_logger.debug("New console proxy created, zone: " + dc.getName() + ", proxy: " + proxy.getHostName() + ", public IP: " + proxy.getPublicIpAddress() + - ", private IP: " + proxy.getPrivateIpAddress()); - break; - - case ConsoleProxyAlertEventArgs.PROXY_UP: - if (s_logger.isDebugEnabled()) - s_logger.debug("Console proxy is up, zone: " + dc.getName() + ", proxy: " + proxy.getHostName() + ", public IP: " + proxy.getPublicIpAddress() + - ", private IP: " + proxy.getPrivateIpAddress()); - - _alertMgr.sendAlert(AlertManager.AlertType.ALERT_TYPE_CONSOLE_PROXY, args.getZoneId(), proxy.getPodIdToDeployIn(), - "Console proxy up in zone: " + dc.getName() + - ", proxy: " + proxy.getHostName() + ", public IP: " + proxy.getPublicIpAddress() + ", private IP: " + - (proxy.getPrivateIpAddress() == null ? "N/A" : proxy.getPrivateIpAddress()), "Console proxy up (zone " + dc.getName() + ")"); - break; - - case ConsoleProxyAlertEventArgs.PROXY_DOWN: - if (s_logger.isDebugEnabled()) - s_logger.debug("Console proxy is down, zone: " + dc.getName() + ", proxy: " + proxy.getHostName() + ", public IP: " + proxy.getPublicIpAddress() + - ", private IP: " + (proxy.getPrivateIpAddress() == null ? "N/A" : proxy.getPrivateIpAddress())); - - _alertMgr.sendAlert(AlertManager.AlertType.ALERT_TYPE_CONSOLE_PROXY, args.getZoneId(), proxy.getPodIdToDeployIn(), - "Console proxy down in zone: " + dc.getName() + - ", proxy: " + proxy.getHostName() + ", public IP: " + proxy.getPublicIpAddress() + ", private IP: " + - (proxy.getPrivateIpAddress() == null ? "N/A" : proxy.getPrivateIpAddress()), "Console proxy down (zone " + dc.getName() + ")"); - break; - - case ConsoleProxyAlertEventArgs.PROXY_REBOOTED: - if (s_logger.isDebugEnabled()) - s_logger.debug("Console proxy is rebooted, zone: " + dc.getName() + ", proxy: " + proxy.getHostName() + ", public IP: " + proxy.getPublicIpAddress() + - ", private IP: " + (proxy.getPrivateIpAddress() == null ? "N/A" : proxy.getPrivateIpAddress())); - - _alertMgr.sendAlert(AlertManager.AlertType.ALERT_TYPE_CONSOLE_PROXY, args.getZoneId(), proxy.getPodIdToDeployIn(), - "Console proxy rebooted in zone: " + dc.getName() + ", proxy: " + proxy.getHostName() + ", public IP: " + proxy.getPublicIpAddress() + - ", private IP: " + (proxy.getPrivateIpAddress() == null ? "N/A" : proxy.getPrivateIpAddress()), "Console proxy rebooted (zone " + dc.getName() + - ")"); - break; - - case ConsoleProxyAlertEventArgs.PROXY_CREATE_FAILURE: - if (s_logger.isDebugEnabled()) - s_logger.debug("Console proxy creation failure, zone: " + dc.getName()); - _alertMgr.sendAlert(AlertManager.AlertType.ALERT_TYPE_CONSOLE_PROXY, args.getZoneId(), null, - "Console proxy creation failure. zone: " + dc.getName() + ", error details: " + args.getMessage(), - "Console proxy creation failure (zone " + dc.getName() + ")"); - break; - - case ConsoleProxyAlertEventArgs.PROXY_START_FAILURE: - if (s_logger.isDebugEnabled()) - s_logger.debug("Console proxy startup failure, zone: " + dc.getName() + ", proxy: " + proxy.getHostName() + ", public IP: " + - proxy.getPublicIpAddress() + ", private IP: " + (proxy.getPrivateIpAddress() == null ? "N/A" : proxy.getPrivateIpAddress())); - - _alertMgr.sendAlert(AlertManager.AlertType.ALERT_TYPE_CONSOLE_PROXY, args.getZoneId(), proxy.getPodIdToDeployIn(), - "Console proxy startup failure. zone: " + dc.getName() + ", proxy: " + proxy.getHostName() + ", public IP: " + proxy.getPublicIpAddress() + - ", private IP: " + (proxy.getPrivateIpAddress() == null ? "N/A" : proxy.getPrivateIpAddress()) + ", error details: " + args.getMessage(), - "Console proxy startup failure (zone " + dc.getName() + ")"); - break; - - case ConsoleProxyAlertEventArgs.PROXY_FIREWALL_ALERT: - if (s_logger.isDebugEnabled()) - s_logger.debug("Console proxy firewall alert, zone: " + dc.getName() + ", proxy: " + proxy.getHostName() + ", public IP: " + - proxy.getPublicIpAddress() + ", private IP: " + (proxy.getPrivateIpAddress() == null ? "N/A" : proxy.getPrivateIpAddress())); - - _alertMgr.sendAlert( - AlertManager.AlertType.ALERT_TYPE_CONSOLE_PROXY, - args.getZoneId(), - proxy.getPodIdToDeployIn(), - "Failed to open console proxy firewall port. zone: " + dc.getName() + ", proxy: " + proxy.getHostName() + ", public IP: " + - proxy.getPublicIpAddress() + ", private IP: " + (proxy.getPrivateIpAddress() == null ? "N/A" : proxy.getPrivateIpAddress()), - "Console proxy alert (zone " + dc.getName() + ")"); - break; - - case ConsoleProxyAlertEventArgs.PROXY_STORAGE_ALERT: - if (s_logger.isDebugEnabled()) - s_logger.debug("Console proxy storage alert, zone: " + dc.getName() + ", proxy: " + proxy.getHostName() + ", public IP: " + - proxy.getPublicIpAddress() + ", private IP: " + proxy.getPrivateIpAddress() + ", message: " + args.getMessage()); - - _alertMgr.sendAlert(AlertManager.AlertType.ALERT_TYPE_STORAGE_MISC, args.getZoneId(), proxy.getPodIdToDeployIn(), - "Console proxy storage issue. zone: " + dc.getName() + ", message: " + args.getMessage(), "Console proxy alert (zone " + dc.getName() + ")"); - break; + case ConsoleProxyAlertEventArgs.PROXY_CREATED: + if (s_logger.isDebugEnabled()) { + s_logger.debug("New console proxy created, " + zoneProxyPublicAndPrivateIp); + } + break; + + case ConsoleProxyAlertEventArgs.PROXY_UP: + message = "Console proxy up in " + zoneProxyPublicAndPrivateIp; + if (s_logger.isDebugEnabled()) { + s_logger.debug(message); + } + + _alertMgr.sendAlert(AlertService.AlertType.ALERT_TYPE_CONSOLE_PROXY, args.getZoneId(), proxyPodIdToDeployIn, message, "Console proxy up " + zone); + break; + + case ConsoleProxyAlertEventArgs.PROXY_DOWN: + message = "Console proxy is down in " + zoneProxyPublicAndPrivateIp; + if (s_logger.isDebugEnabled()) { + s_logger.debug(message); + } + + _alertMgr.sendAlert(AlertService.AlertType.ALERT_TYPE_CONSOLE_PROXY, args.getZoneId(), proxyPodIdToDeployIn, message, "Console proxy down " + zone); + break; + + case ConsoleProxyAlertEventArgs.PROXY_REBOOTED: + message = "Console proxy is rebooted in " + zoneProxyPublicAndPrivateIp; + if (s_logger.isDebugEnabled()) { + s_logger.debug(message); + } + + _alertMgr.sendAlert(AlertService.AlertType.ALERT_TYPE_CONSOLE_PROXY, args.getZoneId(), proxyPodIdToDeployIn, message, "Console proxy rebooted " + zone); + break; + + case ConsoleProxyAlertEventArgs.PROXY_CREATE_FAILURE: + message = String.format("Console proxy creation failure. Zone [%s].", dc.getName()); + if (s_logger.isDebugEnabled()) { + s_logger.debug(message); + } + + _alertMgr.sendAlert(AlertService.AlertType.ALERT_TYPE_CONSOLE_PROXY, args.getZoneId(), null, message + errorDetails, "Console proxy creation failure " + zone); + break; + + case ConsoleProxyAlertEventArgs.PROXY_START_FAILURE: + message = "Console proxy startup failure in " + zoneProxyPublicAndPrivateIp; + if (s_logger.isDebugEnabled()) { + s_logger.debug(message); + } + + _alertMgr.sendAlert(AlertService.AlertType.ALERT_TYPE_CONSOLE_PROXY, args.getZoneId(), proxyPodIdToDeployIn, message + errorDetails, + "Console proxy startup failure " + zone); + break; + + case ConsoleProxyAlertEventArgs.PROXY_FIREWALL_ALERT: + if (s_logger.isDebugEnabled()) { + s_logger.debug("Console proxy firewall alert, " + zoneProxyPublicAndPrivateIp); + } + + _alertMgr.sendAlert(AlertService.AlertType.ALERT_TYPE_CONSOLE_PROXY, args.getZoneId(), proxyPodIdToDeployIn, "Failed to open console proxy firewall port. " + + zoneProxyPublicAndPrivateIp, "Console proxy alert " + zone); + break; + + case ConsoleProxyAlertEventArgs.PROXY_STORAGE_ALERT: + message = zoneProxyPublicAndPrivateIp + ", message: " + args.getMessage(); + if (s_logger.isDebugEnabled()) { + s_logger.debug("Console proxy storage alert, " + message); + } + _alertMgr.sendAlert(AlertService.AlertType.ALERT_TYPE_STORAGE_MISC, args.getZoneId(), proxyPodIdToDeployIn, "Console proxy storage issue. " + message, + "Console proxy alert " + zone); + break; } } diff --git a/server/src/main/java/com/cloud/alert/SecondaryStorageVmAlertAdapter.java b/server/src/main/java/com/cloud/alert/SecondaryStorageVmAlertAdapter.java index c29b982a5c4..c7d7c5c4fef 100644 --- a/server/src/main/java/com/cloud/alert/SecondaryStorageVmAlertAdapter.java +++ b/server/src/main/java/com/cloud/alert/SecondaryStorageVmAlertAdapter.java @@ -21,6 +21,7 @@ import java.util.Map; import javax.inject.Inject; import javax.naming.ConfigurationException; +import org.apache.cloudstack.alert.AlertService; import org.apache.log4j.Logger; import org.springframework.stereotype.Component; @@ -59,92 +60,94 @@ public class SecondaryStorageVmAlertAdapter extends AdapterBase implements Alert throw new CloudRuntimeException("Invalid alert arguments, secStorageVm must be set"); } + String secStorageVmHostName = ""; + String secStorageVmPublicIpAddress = ""; + String secStorageVmPrivateIpAddress = "N/A"; + Long secStorageVmPodIdToDeployIn = null; + + if (secStorageVm != null) { + secStorageVmHostName = secStorageVm.getHostName(); + secStorageVmPublicIpAddress = secStorageVm.getPublicIpAddress(); + secStorageVmPrivateIpAddress = secStorageVm.getPrivateIpAddress() == null ? "N/A" : secStorageVm.getPrivateIpAddress(); + secStorageVmPodIdToDeployIn = secStorageVm.getPodIdToDeployIn(); + } + String message = ""; + String zoneSecStorageVmPrivateAndPublicIp = String.format("zone [%s], secStorageVm [%s], public IP [%s], private IP [%s].", dc.getName(), secStorageVmHostName, + secStorageVmPublicIpAddress, secStorageVmPrivateIpAddress); + String errorDetails = " Error details: " + args.getMessage(); + String zone = String.format("(zone %s)", dc.getName()); + switch (args.getType()) { - case SecStorageVmAlertEventArgs.SSVM_CREATED: - if (s_logger.isDebugEnabled()) - s_logger.debug("New secondary storage vm created, zone: " + dc.getName() + ", secStorageVm: " + secStorageVm.getHostName() + ", public IP: " + - secStorageVm.getPublicIpAddress() + ", private IP: " + secStorageVm.getPrivateIpAddress()); - break; - - case SecStorageVmAlertEventArgs.SSVM_UP: - if (s_logger.isDebugEnabled()) - s_logger.debug("Secondary Storage Vm is up, zone: " + dc.getName() + ", secStorageVm: " + secStorageVm.getHostName() + ", public IP: " + - secStorageVm.getPublicIpAddress() + ", private IP: " + secStorageVm.getPrivateIpAddress()); - - _alertMgr.sendAlert(AlertManager.AlertType.ALERT_TYPE_SSVM, args.getZoneId(), secStorageVm.getPodIdToDeployIn(), "Secondary Storage Vm up in zone: " + - dc.getName() + ", secStorageVm: " + secStorageVm.getHostName() + ", public IP: " + secStorageVm.getPublicIpAddress() + ", private IP: " + - (secStorageVm.getPrivateIpAddress() == null ? "N/A" : secStorageVm.getPrivateIpAddress()), "Secondary Storage Vm up (zone " + dc.getName() + ")"); - break; - - case SecStorageVmAlertEventArgs.SSVM_DOWN: - if (s_logger.isDebugEnabled()) - s_logger.debug("Secondary Storage Vm is down, zone: " + dc.getName() + ", secStorageVm: " + secStorageVm.getHostName() + ", public IP: " + - secStorageVm.getPublicIpAddress() + ", private IP: " + (secStorageVm.getPrivateIpAddress() == null ? "N/A" : secStorageVm.getPrivateIpAddress())); - - _alertMgr.sendAlert( - AlertManager.AlertType.ALERT_TYPE_SSVM, - args.getZoneId(), - secStorageVm.getPodIdToDeployIn(), - "Secondary Storage Vm down in zone: " + dc.getName() + ", secStorageVm: " + secStorageVm.getHostName() + ", public IP: " + - secStorageVm.getPublicIpAddress() + ", private IP: " + (secStorageVm.getPrivateIpAddress() == null ? "N/A" : secStorageVm.getPrivateIpAddress()), - "Secondary Storage Vm down (zone " + dc.getName() + ")"); - break; - - case SecStorageVmAlertEventArgs.SSVM_REBOOTED: - if (s_logger.isDebugEnabled()) - s_logger.debug("Secondary Storage Vm is rebooted, zone: " + dc.getName() + ", secStorageVm: " + secStorageVm.getHostName() + ", public IP: " + - secStorageVm.getPublicIpAddress() + ", private IP: " + (secStorageVm.getPrivateIpAddress() == null ? "N/A" : secStorageVm.getPrivateIpAddress())); - - _alertMgr.sendAlert( - AlertManager.AlertType.ALERT_TYPE_SSVM, - args.getZoneId(), - secStorageVm.getPodIdToDeployIn(), - "Secondary Storage Vm rebooted in zone: " + dc.getName() + ", secStorageVm: " + secStorageVm.getHostName() + ", public IP: " + - secStorageVm.getPublicIpAddress() + ", private IP: " + (secStorageVm.getPrivateIpAddress() == null ? "N/A" : secStorageVm.getPrivateIpAddress()), - "Secondary Storage Vm rebooted (zone " + dc.getName() + ")"); - break; - - case SecStorageVmAlertEventArgs.SSVM_CREATE_FAILURE: - if (s_logger.isDebugEnabled()) - s_logger.debug("Secondary Storage Vm creation failure, zone: " + dc.getName()); - - _alertMgr.sendAlert(AlertManager.AlertType.ALERT_TYPE_SSVM, args.getZoneId(), null, - "Secondary Storage Vm creation failure. zone: " + dc.getName() + ", error details: " + args.getMessage(), - "Secondary Storage Vm creation failure (zone " + dc.getName() + ")"); - break; - - case SecStorageVmAlertEventArgs.SSVM_START_FAILURE: - if (s_logger.isDebugEnabled()) - s_logger.debug("Secondary Storage Vm startup failure, zone: " + dc.getName() + ", secStorageVm: " + secStorageVm.getHostName() + ", public IP: " + - secStorageVm.getPublicIpAddress() + ", private IP: " + (secStorageVm.getPrivateIpAddress() == null ? "N/A" : secStorageVm.getPrivateIpAddress())); - - _alertMgr.sendAlert(AlertManager.AlertType.ALERT_TYPE_SSVM, args.getZoneId(), secStorageVm.getPodIdToDeployIn(), - "Secondary Storage Vm startup failure. zone: " + - dc.getName() + ", secStorageVm: " + secStorageVm.getHostName() + ", public IP: " + secStorageVm.getPublicIpAddress() + ", private IP: " + - (secStorageVm.getPrivateIpAddress() == null ? "N/A" : secStorageVm.getPrivateIpAddress()) + ", error details: " + args.getMessage(), - "Secondary Storage Vm startup failure (zone " + dc.getName() + ")"); - break; - - case SecStorageVmAlertEventArgs.SSVM_FIREWALL_ALERT: - if (s_logger.isDebugEnabled()) - s_logger.debug("Secondary Storage Vm firewall alert, zone: " + dc.getName() + ", secStorageVm: " + secStorageVm.getHostName() + ", public IP: " + - secStorageVm.getPublicIpAddress() + ", private IP: " + (secStorageVm.getPrivateIpAddress() == null ? "N/A" : secStorageVm.getPrivateIpAddress())); - - _alertMgr.sendAlert(AlertManager.AlertType.ALERT_TYPE_SSVM, args.getZoneId(), secStorageVm.getPodIdToDeployIn(), - "Failed to open secondary storage vm firewall port. zone: " + dc.getName() + ", secStorageVm: " + secStorageVm.getHostName() + ", public IP: " + - secStorageVm.getPublicIpAddress() + ", private IP: " + (secStorageVm.getPrivateIpAddress() == null ? "N/A" : secStorageVm.getPrivateIpAddress()), - "Secondary Storage Vm alert (zone " + dc.getName() + ")"); - break; - - case SecStorageVmAlertEventArgs.SSVM_STORAGE_ALERT: - if (s_logger.isDebugEnabled()) - s_logger.debug("Secondary Storage Vm storage alert, zone: " + dc.getName() + ", secStorageVm: " + secStorageVm.getHostName() + ", public IP: " + - secStorageVm.getPublicIpAddress() + ", private IP: " + secStorageVm.getPrivateIpAddress() + ", message: " + args.getMessage()); - - _alertMgr.sendAlert(AlertManager.AlertType.ALERT_TYPE_STORAGE_MISC, args.getZoneId(), secStorageVm.getPodIdToDeployIn(), - "Secondary Storage Vm storage issue. zone: " + dc.getName() + ", message: " + args.getMessage(), "Secondary Storage Vm alert (zone " + dc.getName() + - ")"); - break; + case SecStorageVmAlertEventArgs.SSVM_CREATED: + if (s_logger.isDebugEnabled()) { + s_logger.debug("New secondary storage vm created in " + zoneSecStorageVmPrivateAndPublicIp); + } + break; + + case SecStorageVmAlertEventArgs.SSVM_UP: + message = "Secondary Storage Vm is up in " + zoneSecStorageVmPrivateAndPublicIp; + if (s_logger.isDebugEnabled()) { + s_logger.debug(message); + } + + _alertMgr.sendAlert(AlertService.AlertType.ALERT_TYPE_SSVM, args.getZoneId(), secStorageVmPodIdToDeployIn, message, "Secondary Storage Vm up " + zone); + break; + + case SecStorageVmAlertEventArgs.SSVM_DOWN: + message = "Secondary Storage Vm is down in " + zoneSecStorageVmPrivateAndPublicIp; + if (s_logger.isDebugEnabled()) { + s_logger.debug(message); + } + + _alertMgr.sendAlert(AlertService.AlertType.ALERT_TYPE_SSVM, args.getZoneId(), secStorageVmPodIdToDeployIn, message, "Secondary Storage Vm down " + zone); + break; + + case SecStorageVmAlertEventArgs.SSVM_REBOOTED: + message = "Secondary Storage Vm rebooted in " + zoneSecStorageVmPrivateAndPublicIp; + if (s_logger.isDebugEnabled()) { + s_logger.debug(message); + } + + _alertMgr.sendAlert(AlertService.AlertType.ALERT_TYPE_SSVM, args.getZoneId(), secStorageVmPodIdToDeployIn, message, "Secondary Storage Vm rebooted " + zone); + break; + + case SecStorageVmAlertEventArgs.SSVM_CREATE_FAILURE: + message = String.format("Secondary Storage Vm creation failure in zone [%s].", dc.getName()); + if (s_logger.isDebugEnabled()) { + s_logger.debug(message); + } + + _alertMgr.sendAlert(AlertService.AlertType.ALERT_TYPE_SSVM, args.getZoneId(), null, message + errorDetails, + "Secondary Storage Vm creation failure " + zone); + break; + + case SecStorageVmAlertEventArgs.SSVM_START_FAILURE: + message = "Secondary Storage Vm startup failure in " + zoneSecStorageVmPrivateAndPublicIp; + if (s_logger.isDebugEnabled()) { + s_logger.debug(message); + } + + _alertMgr.sendAlert(AlertService.AlertType.ALERT_TYPE_SSVM, args.getZoneId(), secStorageVmPodIdToDeployIn, message + errorDetails, + "Secondary Storage Vm startup failure " + zone); + break; + + case SecStorageVmAlertEventArgs.SSVM_FIREWALL_ALERT: + if (s_logger.isDebugEnabled()) { + s_logger.debug("Secondary Storage Vm firewall alert, " + zoneSecStorageVmPrivateAndPublicIp); + } + + _alertMgr.sendAlert(AlertService.AlertType.ALERT_TYPE_SSVM, args.getZoneId(), secStorageVmPodIdToDeployIn, "Failed to open secondary storage vm firewall port. " + + zoneSecStorageVmPrivateAndPublicIp, "Secondary Storage Vm alert " + zone); + break; + + case SecStorageVmAlertEventArgs.SSVM_STORAGE_ALERT: + if (s_logger.isDebugEnabled()) { + s_logger.debug("Secondary Storage Vm storage alert, " + zoneSecStorageVmPrivateAndPublicIp + ", message: " + args.getMessage()); + } + + _alertMgr.sendAlert(AlertService.AlertType.ALERT_TYPE_STORAGE_MISC, args.getZoneId(), secStorageVmPodIdToDeployIn, + "Secondary Storage Vm storage issue. zone: " + dc.getName() + ", message: " + args.getMessage(), "Secondary Storage Vm alert " + zone); + break; } } diff --git a/server/src/main/java/com/cloud/api/ApiServer.java b/server/src/main/java/com/cloud/api/ApiServer.java index db79141b437..b62e59f5c27 100644 --- a/server/src/main/java/com/cloud/api/ApiServer.java +++ b/server/src/main/java/com/cloud/api/ApiServer.java @@ -188,6 +188,8 @@ public class ApiServer extends ManagerBase implements HttpRequestHandler, ApiSer private static final Logger s_logger = Logger.getLogger(ApiServer.class.getName()); private static final Logger s_accessLogger = Logger.getLogger("apiserver." + ApiServer.class.getName()); + private static final String SANITIZATION_REGEX = "[\n\r]"; + private static boolean encodeApiResponse = false; /** @@ -919,7 +921,7 @@ public class ApiServer extends ManagerBase implements HttpRequestHandler, ApiSer if ("3".equals(signatureVersion)) { // New signature authentication. Check for expire parameter and its validity if (expires == null) { - s_logger.debug("Missing Expires parameter -- ignoring request. Signature: " + signature + ", apiKey: " + apiKey); + s_logger.debug("Missing Expires parameter -- ignoring request."); return false; } @@ -932,7 +934,9 @@ public class ApiServer extends ManagerBase implements HttpRequestHandler, ApiSer final Date now = new Date(System.currentTimeMillis()); if (expiresTS.before(now)) { - s_logger.debug("Request expired -- ignoring ...sig: " + signature + ", apiKey: " + apiKey); + signature = signature.replaceAll(SANITIZATION_REGEX, "_"); + apiKey = apiKey.replaceAll(SANITIZATION_REGEX, "_"); + s_logger.debug(String.format("Request expired -- ignoring ...sig [%s], apiKey [%s].", signature, apiKey)); return false; } } @@ -979,7 +983,8 @@ public class ApiServer extends ManagerBase implements HttpRequestHandler, ApiSer final boolean equalSig = ConstantTimeComparator.compareStrings(signature, computedSignature); if (!equalSig) { - s_logger.info("User signature: " + signature + " is not equaled to computed signature: " + computedSignature); + signature = signature.replaceAll(SANITIZATION_REGEX, "_"); + s_logger.info(String.format("User signature [%s] is not equaled to computed signature [%s].", signature, computedSignature)); } else { CallContext.register(user, account); } diff --git a/server/src/main/java/com/cloud/network/ExternalLoadBalancerDeviceManagerImpl.java b/server/src/main/java/com/cloud/network/ExternalLoadBalancerDeviceManagerImpl.java index 34f1c4b2bca..c44dfa54eea 100644 --- a/server/src/main/java/com/cloud/network/ExternalLoadBalancerDeviceManagerImpl.java +++ b/server/src/main/java/com/cloud/network/ExternalLoadBalancerDeviceManagerImpl.java @@ -720,10 +720,10 @@ public abstract class ExternalLoadBalancerDeviceManagerImpl extends AdapterBase DestroyLoadBalancerApplianceAnswer answer = null; try { answer = (DestroyLoadBalancerApplianceAnswer)_agentMgr.easySend(lbDevice.getParentHostId(), lbDeleteCmd); - if (answer == null || !answer.getResult()) { - s_logger.warn("Failed to destoy load balancer appliance used by the network" - + guestConfig.getId() + " due to " + answer == null ? "communication error with agent" - : answer.getDetails()); + if (answer == null) { + s_logger.warn(String.format("Failed to destroy load balancer appliance used by the network [%s] due to a communication error with agent.", guestConfig.getId())); + } else if (!answer.getResult()) { + s_logger.warn(String.format("Failed to destroy load balancer appliance used by the network [%s] due to [%s].", guestConfig.getId(), answer.getDetails())); } } catch (Exception e) { s_logger.warn("Failed to destroy load balancer appliance used by the network" + guestConfig.getId() + " due to " + e.getMessage()); diff --git a/server/src/main/java/com/cloud/servlet/ConsoleProxyServlet.java b/server/src/main/java/com/cloud/servlet/ConsoleProxyServlet.java index 595299440fe..83c359a96f9 100644 --- a/server/src/main/java/com/cloud/servlet/ConsoleProxyServlet.java +++ b/server/src/main/java/com/cloud/servlet/ConsoleProxyServlet.java @@ -71,6 +71,8 @@ public class ConsoleProxyServlet extends HttpServlet { private static final int DEFAULT_THUMBNAIL_WIDTH = 144; private static final int DEFAULT_THUMBNAIL_HEIGHT = 110; + private static final String SANITIZATION_REGEX = "[\n\r]"; + @Inject AccountManager _accountMgr; @Inject @@ -154,7 +156,13 @@ public class ConsoleProxyServlet extends HttpServlet { String cmd = req.getParameter("cmd"); if (cmd == null || !isValidCmd(cmd)) { - s_logger.debug("invalid console servlet command: " + cmd); + if (cmd != null) { + cmd = cmd.replaceAll(SANITIZATION_REGEX, "_"); + s_logger.debug(String.format("invalid console servlet command [%s].", cmd)); + } else { + s_logger.debug("Null console servlet command."); + } + sendResponse(resp, ""); return; } @@ -162,7 +170,13 @@ public class ConsoleProxyServlet extends HttpServlet { String vmIdString = req.getParameter("vm"); VirtualMachine vm = _entityMgr.findByUuid(VirtualMachine.class, vmIdString); if (vm == null) { - s_logger.info("invalid console servlet command parameter: " + vmIdString); + if (vmIdString != null) { + vmIdString = vmIdString.replaceAll(SANITIZATION_REGEX, "_"); + s_logger.info(String.format("invalid console servlet command vm parameter[%s].", vmIdString)); + } else { + s_logger.info("Null console servlet command VM parameter."); + } + sendResponse(resp, ""); return; } @@ -262,7 +276,13 @@ public class ConsoleProxyServlet extends HttpServlet { String sid = req.getParameter("sid"); if (sid == null || !sid.equals(vm.getVncPassword())) { - s_logger.warn("sid " + sid + " in url does not match stored sid."); + if(sid != null) { + sid = sid.replaceAll(SANITIZATION_REGEX, "_"); + s_logger.warn(String.format("sid [%s] in url does not match stored sid.", sid)); + } else { + s_logger.warn("Null sid in URL."); + } + sendResponse(resp, "failed"); return; } diff --git a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java index 0023853c838..719971a261f 100644 --- a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java +++ b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java @@ -7201,7 +7201,8 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir _securityGroupMgr.addInstanceToGroups(vm.getId(), securityGroupIdList); - s_logger.debug("AssignVM: Basic zone, adding security groups no " + securityGroupIdList.size() + " to " + vm.getInstanceName()); + int securityIdList = securityGroupIdList != null ? securityGroupIdList.size() : 0; + s_logger.debug("AssignVM: Basic zone, adding security groups no " + securityIdList + " to " + vm.getInstanceName()); } else { Set<NetworkVO> applicableNetworks = new LinkedHashSet<>(); Map<Long, String> requestedIPv4ForNics = new HashMap<>(); diff --git a/server/src/main/java/org/apache/cloudstack/outofbandmanagement/OutOfBandManagementServiceImpl.java b/server/src/main/java/org/apache/cloudstack/outofbandmanagement/OutOfBandManagementServiceImpl.java index 39cea17d9f0..302765aa287 100644 --- a/server/src/main/java/org/apache/cloudstack/outofbandmanagement/OutOfBandManagementServiceImpl.java +++ b/server/src/main/java/org/apache/cloudstack/outofbandmanagement/OutOfBandManagementServiceImpl.java @@ -255,7 +255,8 @@ public class OutOfBandManagementServiceImpl extends ManagerBase implements OutOf Host host = hostDao.findById(hostId); if (host == null || host.getResourceState() == ResourceState.Degraded) { - LOG.debug(String.format("Host [id=%s, state=] was removed or placed in Degraded state by the Admin.", hostId, host.getResourceState())); + String state = host != null ? String.valueOf(host.getResourceState()) : null; + LOG.debug(String.format("Host [id=%s, state=%s] was removed or placed in Degraded state by the Admin.", hostId, state)); return false; } diff --git a/services/secondary-storage/server/src/main/java/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java b/services/secondary-storage/server/src/main/java/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java index e32e2455e09..3300207a280 100644 --- a/services/secondary-storage/server/src/main/java/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java +++ b/services/secondary-storage/server/src/main/java/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java @@ -865,7 +865,7 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S String templateUuid = UUID.randomUUID().toString(); String templateName = templateUuid + ".vhd"; - Script command = new Script(createTemplateFromSnapshotXenScript, cmd.getWait() * 1000, s_logger); + Script command = new Script(createTemplateFromSnapshotXenScript, cmd.getWait() * 1000L, s_logger); command.add("-p", snapshotPath); command.add("-s", snapshotName); command.add("-n", templateName);