From 99d19db4a72668edd73b7c62ce3e2d321e86c75e Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Wed, 7 Aug 2019 15:53:07 +0530 Subject: [PATCH 1/7] systemvm: add enable statement Signed-off-by: Rohit Yadav --- systemvm/debian/opt/cloud/bin/setup/bootstrap.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/systemvm/debian/opt/cloud/bin/setup/bootstrap.sh b/systemvm/debian/opt/cloud/bin/setup/bootstrap.sh index 6bb8b3f00b6e..0fb317b32035 100755 --- a/systemvm/debian/opt/cloud/bin/setup/bootstrap.sh +++ b/systemvm/debian/opt/cloud/bin/setup/bootstrap.sh @@ -68,6 +68,7 @@ config_guest() { xen-pv|xen-domU) systemctl stop ntpd systemctl disable ntpd + systemctl enable xe-daemon systemctl start xe-daemon cat /proc/cmdline > $CMDLINE @@ -76,6 +77,7 @@ config_guest() { xen-hvm) systemctl stop ntpd systemctl disable ntpd + systemctl enable xe-daemon systemctl start xe-daemon if [ ! -f /usr/bin/xenstore-read ]; then @@ -114,12 +116,14 @@ config_guest() { # system time sync'd with host via vmware tools systemctl stop ntpd systemctl disable ntpd + systemctl enable open-vm-tools systemctl start open-vm-tools vmtoolsd --cmd 'machine.id.get' > $CMDLINE ;; virtualpc|hyperv) # Hyper-V is recognized as virtualpc hypervisor type. Boot args are passed using KVP Daemon + systemctl enable hyperv-daemons.hv-fcopy-daemon.service hyperv-daemons.hv-kvp-daemon.service hyperv-daemons.hv-vss-daemon.service systemctl start hyperv-daemons.hv-fcopy-daemon.service hyperv-daemons.hv-kvp-daemon.service hyperv-daemons.hv-vss-daemon.service sleep 5 cp -f /var/opt/hyperv/.kvp_pool_0 $CMDLINE From 05900abcfbbb6ac7392bf0b85a93d282a9c9b7c8 Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Fri, 9 Aug 2019 15:50:13 +0530 Subject: [PATCH 2/7] defensive fixes Signed-off-by: Rohit Yadav --- .../main/java/com/cloud/network/router/CommandSetupHelper.java | 2 +- server/src/main/java/com/cloud/vm/UserVmManagerImpl.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/server/src/main/java/com/cloud/network/router/CommandSetupHelper.java b/server/src/main/java/com/cloud/network/router/CommandSetupHelper.java index 9ea2b9842649..f9ffeb99d67c 100644 --- a/server/src/main/java/com/cloud/network/router/CommandSetupHelper.java +++ b/server/src/main/java/com/cloud/network/router/CommandSetupHelper.java @@ -1062,7 +1062,7 @@ private NicVO findDefaultDnsIp(final long userVmId) { final NicVO defaultNic = _nicDao.findDefaultNicForVM(userVmId); // check if DNS provider is the domR - if (!_networkModel.isProviderSupportServiceInNetwork(defaultNic.getNetworkId(), Service.Dns, Provider.VirtualRouter)) { + if (defaultNic == null || !_networkModel.isProviderSupportServiceInNetwork(defaultNic.getNetworkId(), Service.Dns, Provider.VirtualRouter)) { return null; } diff --git a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java index 1e47e5a90af9..6f8912314269 100644 --- a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java +++ b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java @@ -1473,7 +1473,7 @@ public UserVm updateDefaultNicForVirtualMachine(UpdateDefaultNicForVMCmd cmd) th UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NETWORK_OFFERING_ASSIGN, vmInstance.getAccountId(), vmInstance.getDataCenterId(), vmInstance.getId(), oldNicIdString, oldNetworkOfferingId, null, 0L, VirtualMachine.class.getName(), vmInstance.getUuid(), vmInstance.isDisplay()); - if (vmInstance.getState() != State.Stopped) { + if (vmInstance.getState() == State.Running) { try { VirtualMachineProfile vmProfile = new VirtualMachineProfileImpl(vmInstance); User callerUser = _accountMgr.getActiveUser(CallContext.current().getCallingUserId()); From 4184e051705d8cc10ddd658e5676d5f90870aaae Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Fri, 9 Aug 2019 16:23:41 +0530 Subject: [PATCH 3/7] fix another potential NPE Signed-off-by: Rohit Yadav --- server/src/main/java/com/cloud/vm/UserVmManagerImpl.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java index 6f8912314269..a8ca6d689416 100644 --- a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java +++ b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java @@ -4761,7 +4761,10 @@ public void collectVmDiskStatistics(final UserVm userVm) { if (!(userVm.getHypervisorType().equals(HypervisorType.KVM) || userVm.getHypervisorType().equals(HypervisorType.VMware))) { return; } - s_logger.debug("Collect vm disk statistics from host before stopping Vm"); + s_logger.debug("Collect vm disk statistics from host before stopping VM"); + if (userVm.getHostId() == null) { + s_logger.error("Unable to collect vm disk statistics for VM as the host is null, skipping VM disk statistics collection"); + } long hostId = userVm.getHostId(); List vmNames = new ArrayList(); vmNames.add(userVm.getInstanceName()); From f2f1ce358ffffa4dff30a283fadab65ecc335617 Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Mon, 12 Aug 2019 14:08:32 +0530 Subject: [PATCH 4/7] fix npe Signed-off-by: Rohit Yadav --- server/src/main/java/com/cloud/vm/UserVmManagerImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java index a8ca6d689416..216dad0121b0 100644 --- a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java +++ b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java @@ -4764,6 +4764,7 @@ public void collectVmDiskStatistics(final UserVm userVm) { s_logger.debug("Collect vm disk statistics from host before stopping VM"); if (userVm.getHostId() == null) { s_logger.error("Unable to collect vm disk statistics for VM as the host is null, skipping VM disk statistics collection"); + return; } long hostId = userVm.getHostId(); List vmNames = new ArrayList(); From 06a1821dc09b95bb2662b2c79920e2890dfd3693 Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Mon, 12 Aug 2019 14:47:50 +0530 Subject: [PATCH 5/7] fix another npe Signed-off-by: Rohit Yadav --- .../cloudstack/storage/snapshot/CephSnapshotStrategy.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/engine/storage/snapshot/src/main/java/org/apache/cloudstack/storage/snapshot/CephSnapshotStrategy.java b/engine/storage/snapshot/src/main/java/org/apache/cloudstack/storage/snapshot/CephSnapshotStrategy.java index 6fbb15c7f58b..ee8a7761f308 100644 --- a/engine/storage/snapshot/src/main/java/org/apache/cloudstack/storage/snapshot/CephSnapshotStrategy.java +++ b/engine/storage/snapshot/src/main/java/org/apache/cloudstack/storage/snapshot/CephSnapshotStrategy.java @@ -78,6 +78,9 @@ public boolean revertSnapshot(SnapshotInfo snapshotInfo) { protected boolean isSnapshotStoredOnRbdStoragePool(Snapshot snapshot) { SnapshotDataStoreVO snapshotStore = snapshotStoreDao.findBySnapshot(snapshot.getId(), DataStoreRole.Primary); + if (snapshotStore == null) { + return false; + } long snapshotStoragePoolId = snapshotStore.getDataStoreId(); StoragePoolVO storagePoolVO = primaryDataStoreDao.findById(snapshotStoragePoolId); return storagePoolVO.getPoolType() == StoragePoolType.RBD; From 0fac5be43ff4774e60f7763b9b8ba26fd63420e8 Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Mon, 12 Aug 2019 14:49:25 +0530 Subject: [PATCH 6/7] npe fix improvement Signed-off-by: Rohit Yadav --- .../cloudstack/storage/snapshot/CephSnapshotStrategy.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/engine/storage/snapshot/src/main/java/org/apache/cloudstack/storage/snapshot/CephSnapshotStrategy.java b/engine/storage/snapshot/src/main/java/org/apache/cloudstack/storage/snapshot/CephSnapshotStrategy.java index ee8a7761f308..59ce3eca741f 100644 --- a/engine/storage/snapshot/src/main/java/org/apache/cloudstack/storage/snapshot/CephSnapshotStrategy.java +++ b/engine/storage/snapshot/src/main/java/org/apache/cloudstack/storage/snapshot/CephSnapshotStrategy.java @@ -81,8 +81,7 @@ protected boolean isSnapshotStoredOnRbdStoragePool(Snapshot snapshot) { if (snapshotStore == null) { return false; } - long snapshotStoragePoolId = snapshotStore.getDataStoreId(); - StoragePoolVO storagePoolVO = primaryDataStoreDao.findById(snapshotStoragePoolId); - return storagePoolVO.getPoolType() == StoragePoolType.RBD; + StoragePoolVO storagePoolVO = primaryDataStoreDao.findById(snapshotStore.getDataStoreId()); + return storagePoolVO != null && storagePoolVO.getPoolType() == StoragePoolType.RBD; } } \ No newline at end of file From 1e56b9567199f5b5e66aa5b5169cb78c9d9af83e Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Mon, 12 Aug 2019 16:18:42 +0530 Subject: [PATCH 7/7] fix valueerror issue when 0bytes sized config are processed by VR scripts Signed-off-by: Rohit Yadav --- systemvm/debian/opt/cloud/bin/merge.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/systemvm/debian/opt/cloud/bin/merge.py b/systemvm/debian/opt/cloud/bin/merge.py index eccb194d9e25..54d86c5e8bb2 100755 --- a/systemvm/debian/opt/cloud/bin/merge.py +++ b/systemvm/debian/opt/cloud/bin/merge.py @@ -56,8 +56,8 @@ def load(self): with open(self.fpath, 'r') as _fh: logging.debug("Loading data bag type %s", self.key) data = json.load(_fh) - except IOError: - logging.debug("Creating data bag type %s", self.key) + except (IOError, ValueError): + logging.debug("Caught load error, creating empty data bag type %s", self.key) data.update({"id": self.key}) finally: self.dbag = data