This is an automated email from the ASF dual-hosted git repository.
sureshanaparti pushed a commit to branch 4.19
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/4.19 by this push:
new c17aa0d9ada Import Remote KVM VM logging improvements (#9284)
c17aa0d9ada is described below
commit c17aa0d9ada2cceaf6d3e7a17cd577cc203047a7
Author: Suresh Kumar Anaparti <[email protected]>
AuthorDate: Mon Jun 24 11:34:37 2024 +0530
Import Remote KVM VM logging improvements (#9284)
---
.../admin/vm/ImportUnmanagedInstanceCmd.java | 8 ++++----
.../java/com/cloud/agent/api/CheckVolumeAnswer.java | 1 -
.../com/cloud/agent/api/CheckVolumeCommand.java | 1 -
.../com/cloud/agent/api/CopyRemoteVolumeAnswer.java | 1 -
.../cloud/agent/api/CopyRemoteVolumeCommand.java | 2 +-
.../com/cloud/agent/api/GetRemoteVmsAnswer.java | 2 +-
.../com/cloud/agent/api/GetRemoteVmsCommand.java | 2 +-
.../agent/api/GetUnmanagedInstancesAnswer.java | 2 +-
.../agent/api/GetUnmanagedInstancesCommand.java | 2 +-
.../kvm/resource/LibvirtComputingResource.java | 12 ++++++------
.../wrapper/LibvirtGetRemoteVmsCommandWrapper.java | 21 +++++++++++----------
.../LibvirtGetUnmanagedInstancesCommandWrapper.java | 2 +-
.../cloudstack/vm/UnmanagedVMsManagerImpl.java | 6 +++---
13 files changed, 30 insertions(+), 32 deletions(-)
diff --git
a/api/src/main/java/org/apache/cloudstack/api/command/admin/vm/ImportUnmanagedInstanceCmd.java
b/api/src/main/java/org/apache/cloudstack/api/command/admin/vm/ImportUnmanagedInstanceCmd.java
index d632c786a16..3d8b23318dd 100644
---
a/api/src/main/java/org/apache/cloudstack/api/command/admin/vm/ImportUnmanagedInstanceCmd.java
+++
b/api/src/main/java/org/apache/cloudstack/api/command/admin/vm/ImportUnmanagedInstanceCmd.java
@@ -203,8 +203,8 @@ public class ImportUnmanagedInstanceCmd extends
BaseAsyncCmd {
for (Map<String, String> entry : (Collection<Map<String,
String>>)nicNetworkList.values()) {
String nic = entry.get(VmDetailConstants.NIC);
String networkUuid = entry.get(VmDetailConstants.NETWORK);
- if (LOGGER.isTraceEnabled()) {
- LOGGER.trace(String.format("nic, '%s', goes on net, '%s'",
nic, networkUuid));
+ if (LOGGER.isDebugEnabled()) {
+ LOGGER.debug(String.format("nic, '%s', goes on net, '%s'",
nic, networkUuid));
}
if (StringUtils.isAnyEmpty(nic, networkUuid) ||
_entityMgr.findByUuid(Network.class, networkUuid) == null) {
throw new
InvalidParameterValueException(String.format("Network ID: %s for NIC ID: %s is
invalid", networkUuid, nic));
@@ -221,8 +221,8 @@ public class ImportUnmanagedInstanceCmd extends
BaseAsyncCmd {
for (Map<String, String> entry : (Collection<Map<String,
String>>)nicIpAddressList.values()) {
String nic = entry.get(VmDetailConstants.NIC);
String ipAddress =
StringUtils.defaultIfEmpty(entry.get(VmDetailConstants.IP4_ADDRESS), null);
- if (LOGGER.isTraceEnabled()) {
- LOGGER.trace(String.format("nic, '%s', gets ip, '%s'",
nic, ipAddress));
+ if (LOGGER.isDebugEnabled()) {
+ LOGGER.debug(String.format("nic, '%s', gets ip, '%s'",
nic, ipAddress));
}
if (StringUtils.isEmpty(nic)) {
throw new
InvalidParameterValueException(String.format("NIC ID: '%s' is invalid for IP
address mapping", nic));
diff --git a/core/src/main/java/com/cloud/agent/api/CheckVolumeAnswer.java
b/core/src/main/java/com/cloud/agent/api/CheckVolumeAnswer.java
index dd136d8642f..5a32ab59a7a 100644
--- a/core/src/main/java/com/cloud/agent/api/CheckVolumeAnswer.java
+++ b/core/src/main/java/com/cloud/agent/api/CheckVolumeAnswer.java
@@ -17,7 +17,6 @@
package com.cloud.agent.api;
-@LogLevel(LogLevel.Log4jLevel.Trace)
public class CheckVolumeAnswer extends Answer {
private long size;
diff --git a/core/src/main/java/com/cloud/agent/api/CheckVolumeCommand.java
b/core/src/main/java/com/cloud/agent/api/CheckVolumeCommand.java
index b4036bebf3a..bd44b35c895 100644
--- a/core/src/main/java/com/cloud/agent/api/CheckVolumeCommand.java
+++ b/core/src/main/java/com/cloud/agent/api/CheckVolumeCommand.java
@@ -21,7 +21,6 @@ package com.cloud.agent.api;
import com.cloud.agent.api.to.StorageFilerTO;
-@LogLevel(LogLevel.Log4jLevel.Trace)
public class CheckVolumeCommand extends Command {
String srcFile;
diff --git a/core/src/main/java/com/cloud/agent/api/CopyRemoteVolumeAnswer.java
b/core/src/main/java/com/cloud/agent/api/CopyRemoteVolumeAnswer.java
index f6d7cab4596..e79005be71b 100644
--- a/core/src/main/java/com/cloud/agent/api/CopyRemoteVolumeAnswer.java
+++ b/core/src/main/java/com/cloud/agent/api/CopyRemoteVolumeAnswer.java
@@ -17,7 +17,6 @@
package com.cloud.agent.api;
-@LogLevel(LogLevel.Log4jLevel.Trace)
public class CopyRemoteVolumeAnswer extends Answer {
private String remoteIp;
diff --git
a/core/src/main/java/com/cloud/agent/api/CopyRemoteVolumeCommand.java
b/core/src/main/java/com/cloud/agent/api/CopyRemoteVolumeCommand.java
index 88e5669f3b1..798336b0e72 100644
--- a/core/src/main/java/com/cloud/agent/api/CopyRemoteVolumeCommand.java
+++ b/core/src/main/java/com/cloud/agent/api/CopyRemoteVolumeCommand.java
@@ -21,10 +21,10 @@ package com.cloud.agent.api;
import com.cloud.agent.api.to.StorageFilerTO;
-@LogLevel(LogLevel.Log4jLevel.Trace)
public class CopyRemoteVolumeCommand extends Command {
String remoteIp;
String username;
+ @LogLevel(LogLevel.Log4jLevel.Off)
String password;
String srcFile;
String tmpPath;
diff --git a/core/src/main/java/com/cloud/agent/api/GetRemoteVmsAnswer.java
b/core/src/main/java/com/cloud/agent/api/GetRemoteVmsAnswer.java
index 8cd072f1da1..c4e590591d0 100644
--- a/core/src/main/java/com/cloud/agent/api/GetRemoteVmsAnswer.java
+++ b/core/src/main/java/com/cloud/agent/api/GetRemoteVmsAnswer.java
@@ -22,10 +22,10 @@ import org.apache.cloudstack.vm.UnmanagedInstanceTO;
import java.util.HashMap;
import java.util.List;
-@LogLevel(LogLevel.Log4jLevel.Trace)
public class GetRemoteVmsAnswer extends Answer {
private String remoteIp;
+ @LogLevel(LogLevel.Log4jLevel.Trace)
private HashMap<String, UnmanagedInstanceTO> unmanagedInstances;
List<String> vmNames;
diff --git a/core/src/main/java/com/cloud/agent/api/GetRemoteVmsCommand.java
b/core/src/main/java/com/cloud/agent/api/GetRemoteVmsCommand.java
index 5c71d12dbd0..5b6b9bdd360 100644
--- a/core/src/main/java/com/cloud/agent/api/GetRemoteVmsCommand.java
+++ b/core/src/main/java/com/cloud/agent/api/GetRemoteVmsCommand.java
@@ -19,11 +19,11 @@
package com.cloud.agent.api;
-@LogLevel(LogLevel.Log4jLevel.Trace)
public class GetRemoteVmsCommand extends Command {
String remoteIp;
String username;
+ @LogLevel(LogLevel.Log4jLevel.Off)
String password;
public GetRemoteVmsCommand(String remoteIp, String username, String
password) {
diff --git
a/core/src/main/java/com/cloud/agent/api/GetUnmanagedInstancesAnswer.java
b/core/src/main/java/com/cloud/agent/api/GetUnmanagedInstancesAnswer.java
index 771d472be2a..950930ec614 100644
--- a/core/src/main/java/com/cloud/agent/api/GetUnmanagedInstancesAnswer.java
+++ b/core/src/main/java/com/cloud/agent/api/GetUnmanagedInstancesAnswer.java
@@ -21,10 +21,10 @@ import java.util.HashMap;
import org.apache.cloudstack.vm.UnmanagedInstanceTO;
-@LogLevel(LogLevel.Log4jLevel.Trace)
public class GetUnmanagedInstancesAnswer extends Answer {
private String instanceName;
+ @LogLevel(LogLevel.Log4jLevel.Trace)
private HashMap<String, UnmanagedInstanceTO> unmanagedInstances;
GetUnmanagedInstancesAnswer() {
diff --git
a/core/src/main/java/com/cloud/agent/api/GetUnmanagedInstancesCommand.java
b/core/src/main/java/com/cloud/agent/api/GetUnmanagedInstancesCommand.java
index 2cd80aebea1..c0b8987e152 100644
--- a/core/src/main/java/com/cloud/agent/api/GetUnmanagedInstancesCommand.java
+++ b/core/src/main/java/com/cloud/agent/api/GetUnmanagedInstancesCommand.java
@@ -28,10 +28,10 @@ import org.apache.commons.collections.CollectionUtils;
* All managed instances will be filtered while trying to find unmanaged
instances.
*/
-@LogLevel(LogLevel.Log4jLevel.Trace)
public class GetUnmanagedInstancesCommand extends Command {
String instanceName;
+ @LogLevel(LogLevel.Log4jLevel.Trace)
List<String> managedInstancesNames;
public GetUnmanagedInstancesCommand() {
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 76e4efdfd7f..86ece3c8c66 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
@@ -3771,14 +3771,14 @@ public class LibvirtComputingResource extends
ServerResourceBase implements Serv
}
public List<String> getAllVmNames(final Connect conn) {
- final ArrayList<String> la = new ArrayList<String>();
+ final ArrayList<String> domainNames = new ArrayList<String>();
try {
final String names[] = conn.listDefinedDomains();
for (int i = 0; i < names.length; i++) {
- la.add(names[i]);
+ domainNames.add(names[i]);
}
} catch (final LibvirtException e) {
- s_logger.warn("Failed to list Defined domains", e);
+ s_logger.warn("Failed to list defined domains", e);
}
int[] ids = null;
@@ -3786,14 +3786,14 @@ public class LibvirtComputingResource extends
ServerResourceBase implements Serv
ids = conn.listDomains();
} catch (final LibvirtException e) {
s_logger.warn("Failed to list domains", e);
- return la;
+ return domainNames;
}
Domain dm = null;
for (int i = 0; i < ids.length; i++) {
try {
dm = conn.domainLookupByID(ids[i]);
- la.add(dm.getName());
+ domainNames.add(dm.getName());
} catch (final LibvirtException e) {
s_logger.warn("Unable to get vms", e);
} finally {
@@ -3807,7 +3807,7 @@ public class LibvirtComputingResource extends
ServerResourceBase implements Serv
}
}
- return la;
+ return domainNames;
}
private HashMap<String, HostVmStateReportEntry> getHostVmStateReport() {
diff --git
a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtGetRemoteVmsCommandWrapper.java
b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtGetRemoteVmsCommandWrapper.java
index 69802bb845f..942a68b8074 100644
---
a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtGetRemoteVmsCommandWrapper.java
+++
b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtGetRemoteVmsCommandWrapper.java
@@ -50,36 +50,37 @@ public final class LibvirtGetRemoteVmsCommandWrapper
extends CommandWrapper<GetR
@Override
public Answer execute(final GetRemoteVmsCommand command, final
LibvirtComputingResource libvirtComputingResource) {
- String hypervisorURI = "qemu+tcp://" + command.getRemoteIp() +
"/system";
+ String remoteIp = command.getRemoteIp();
+ String hypervisorURI = "qemu+tcp://" + remoteIp + "/system";
HashMap<String, UnmanagedInstanceTO> unmanagedInstances = new
HashMap<>();
try {
Connect conn = LibvirtConnection.getConnection(hypervisorURI);
final List<String> allVmNames =
libvirtComputingResource.getAllVmNames(conn);
+ s_logger.info(String.format("Found %d VMs on the remote host %s",
allVmNames.size(), remoteIp));
for (String name : allVmNames) {
final Domain domain = libvirtComputingResource.getDomain(conn,
name);
-
final DomainInfo.DomainState ps = domain.getInfo().state;
final VirtualMachine.PowerState state =
libvirtComputingResource.convertToPowerState(ps);
- s_logger.debug("VM " + domain.getName() + " - powerstate: " +
ps + ", state: " + state.toString());
+ s_logger.debug(String.format("Remote VM %s - powerstate: %s,
state: %s", domain.getName(), ps.toString(), state.toString()));
if (state == VirtualMachine.PowerState.PowerOff) {
try {
UnmanagedInstanceTO instance =
getUnmanagedInstance(libvirtComputingResource, domain, conn);
unmanagedInstances.put(instance.getName(), instance);
} catch (Exception e) {
- s_logger.error("Couldn't fetch VM " + domain.getName()
+ " details, due to: " + e.getMessage(), e);
+ s_logger.error("Couldn't fetch remote VM " +
domain.getName() + " details, due to: " + e.getMessage(), e);
}
}
domain.free();
}
- s_logger.debug("Found " + unmanagedInstances.size() + " stopped
VMs on host " + command.getRemoteIp());
+ s_logger.debug("Found " + unmanagedInstances.size() + " stopped
VMs on remote host " + remoteIp);
return new GetRemoteVmsAnswer(command, "", unmanagedInstances);
} catch (final LibvirtException e) {
- s_logger.error("Failed to list stopped VMs on remote host " +
command.getRemoteIp() + ", due to: " + e.getMessage(), e);
+ s_logger.error("Failed to list stopped VMs on remote host " +
remoteIp + ", due to: " + e.getMessage(), e);
if (e.getMessage().toLowerCase().contains("connection refused")) {
- return new Answer(command, false, "Unable to connect to remote
host " + command.getRemoteIp() + ", please check the libvirtd tcp connectivity
and retry");
+ return new Answer(command, false, "Unable to connect to remote
host " + remoteIp + ", please check the libvirtd tcp connectivity and retry");
}
- return new Answer(command, false, "Unable to list stopped VMs on
remote host " + command.getRemoteIp() + ", due to: " + e.getMessage());
+ return new Answer(command, false, "Unable to list stopped VMs on
remote host " + remoteIp + ", due to: " + e.getMessage());
}
}
@@ -105,8 +106,8 @@ public final class LibvirtGetRemoteVmsCommandWrapper
extends CommandWrapper<GetR
return instance;
} catch (Exception e) {
- s_logger.debug("Unable to retrieve unmanaged instance info, due
to: " + e.getMessage(), e);
- throw new CloudRuntimeException("Unable to retrieve unmanaged
instance info, due to: " + e.getMessage());
+ s_logger.debug("Unable to retrieve remote unmanaged instance info,
due to: " + e.getMessage(), e);
+ throw new CloudRuntimeException("Unable to retrieve remote
unmanaged instance info, due to: " + e.getMessage());
}
}
diff --git
a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtGetUnmanagedInstancesCommandWrapper.java
b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtGetUnmanagedInstancesCommandWrapper.java
index 65de4f6d310..d7818f7f5f3 100644
---
a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtGetUnmanagedInstancesCommandWrapper.java
+++
b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtGetUnmanagedInstancesCommandWrapper.java
@@ -48,7 +48,7 @@ public final class LibvirtGetUnmanagedInstancesCommandWrapper
extends CommandWra
@Override
public GetUnmanagedInstancesAnswer execute(GetUnmanagedInstancesCommand
command, LibvirtComputingResource libvirtComputingResource) {
- LOGGER.info("Fetching unmanaged instance on host");
+ LOGGER.info("Fetching unmanaged instances on host");
HashMap<String, UnmanagedInstanceTO> unmanagedInstances = new
HashMap<>();
try {
diff --git
a/server/src/main/java/org/apache/cloudstack/vm/UnmanagedVMsManagerImpl.java
b/server/src/main/java/org/apache/cloudstack/vm/UnmanagedVMsManagerImpl.java
index 6e7c0245ebc..2ff3bf2ca21 100644
--- a/server/src/main/java/org/apache/cloudstack/vm/UnmanagedVMsManagerImpl.java
+++ b/server/src/main/java/org/apache/cloudstack/vm/UnmanagedVMsManagerImpl.java
@@ -800,6 +800,7 @@ public class UnmanagedVMsManagerImpl implements
UnmanagedVMsManager {
}
int copyTimeoutInSecs = copyTimeout * 60;
copyRemoteVolumeCommand.setWait(copyTimeoutInSecs);
+ LOGGER.error(String.format("Initiating copy remote volume %s from %s,
timeout %d secs", path, remoteUrl, copyTimeoutInSecs));
Answer answer = agentManager.easySend(dest.getHost().getId(),
copyRemoteVolumeCommand);
if (!(answer instanceof CopyRemoteVolumeAnswer)) {
throw new CloudRuntimeException("Error while copying volume of
remote instance: " + answer.getDetails());
@@ -2434,7 +2435,6 @@ public class UnmanagedVMsManagerImpl implements
UnmanagedVMsManager {
return defaultNetwork;
}
- //generate unit test
public ListResponse<UnmanagedInstanceResponse>
listVmsForImport(ListVmsForImportCmd cmd) {
final Account caller = CallContext.current().getCallingAccount();
if (caller.getType() != Account.Type.ADMIN) {
@@ -2474,8 +2474,8 @@ public class UnmanagedVMsManagerImpl implements
UnmanagedVMsManager {
private HashMap<String, UnmanagedInstanceTO> getRemoteVmsOnKVMHost(long
zoneId, String remoteHostUrl, String username, String password) {
//ToDo: add option to list one Vm by name
List<HostVO> hosts =
resourceManager.listAllUpAndEnabledHostsInOneZoneByHypervisor(Hypervisor.HypervisorType.KVM,
zoneId);
- if(hosts.size() < 1) {
- throw new CloudRuntimeException("No hosts available for VM
import");
+ if (hosts.size() < 1) {
+ throw new CloudRuntimeException("No hosts available to list VMs on
remote host " + remoteHostUrl);
}
HostVO host = hosts.get(0);
GetRemoteVmsCommand getRemoteVmsCommand = new
GetRemoteVmsCommand(remoteHostUrl, username, password);