From 4c2d8514863ab3606fe8c9a31ef4167789c78e08 Mon Sep 17 00:00:00 2001 From: Slair1 Date: Wed, 12 Apr 2017 10:17:16 -0500 Subject: [PATCH 1/5] VR related periodic jobs are scheduled twice and run twice on management servers --- .../router/VpcVirtualNetworkApplianceManagerImpl.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java index 228a4def216..3a50009bfbd 100644 --- a/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java +++ b/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java @@ -606,6 +606,11 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian } } + @Override + public boolean start() { + return true; + } + @Override public boolean startSite2SiteVpn(final Site2SiteVpnConnection conn, final VirtualRouter router) throws ResourceUnavailableException { if (router.getState() != State.Running) { From 27b0c6590972a06147d2eeb2e9a24e742dacba4e Mon Sep 17 00:00:00 2001 From: Slair1 Date: Wed, 12 Apr 2017 09:58:56 -0500 Subject: [PATCH 2/5] Gather all S2S vpn statuses before outputting --- .../patches/debian/config/opt/cloud/bin/checkbatchs2svpn.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/systemvm/patches/debian/config/opt/cloud/bin/checkbatchs2svpn.sh b/systemvm/patches/debian/config/opt/cloud/bin/checkbatchs2svpn.sh index 80e3213753b..ff977f5a2cb 100755 --- a/systemvm/patches/debian/config/opt/cloud/bin/checkbatchs2svpn.sh +++ b/systemvm/patches/debian/config/opt/cloud/bin/checkbatchs2svpn.sh @@ -20,6 +20,6 @@ for i in $* do info=`/opt/cloud/bin/checks2svpn.sh $i` ret=$? - echo -n "$i:$ret:$info&" + batchInfo+="$i:$ret:$info&" done - +echo -n $batchInfo From d216345af7cd6fb842af224ef4b6ad834198a2a6 Mon Sep 17 00:00:00 2001 From: Wei Zhou Date: Thu, 10 Dec 2015 14:25:22 +0100 Subject: [PATCH 3/5] CLOUDSTACK-9136: remove ssh keypairs along with removing account We also allow ROOT Admin to remove remained ssh keypairs of removed account --- .../src/com/cloud/server/ManagementServerImpl.java | 12 +++++++++++- server/src/com/cloud/user/AccountManagerImpl.java | 9 +++++++++ .../test/com/cloud/user/AccountManagerImplTest.java | 9 +++++++++ .../com/cloud/user/AccountManagetImplTestBase.java | 4 +++- 4 files changed, 32 insertions(+), 2 deletions(-) diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java index 60b44d74c28..15abae020c1 100644 --- a/server/src/com/cloud/server/ManagementServerImpl.java +++ b/server/src/com/cloud/server/ManagementServerImpl.java @@ -3600,7 +3600,17 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe final Long domainId = cmd.getDomainId(); final Long projectId = cmd.getProjectId(); - final Account owner = _accountMgr.finalizeOwner(caller, accountName, domainId, projectId); + Account owner = null; + try { + owner = _accountMgr.finalizeOwner(caller, accountName, domainId, projectId); + } catch (InvalidParameterValueException ex) { + if (caller.getType() == Account.ACCOUNT_TYPE_ADMIN && accountName != null && domainId != null) { + owner = _accountDao.findAccountIncludingRemoved(accountName, domainId); + } + if (owner == null) { + throw ex; + } + } final SSHKeyPairVO s = _sshKeyPairDao.findByName(owner.getAccountId(), owner.getDomainId(), cmd.getName()); if (s == null) { diff --git a/server/src/com/cloud/user/AccountManagerImpl.java b/server/src/com/cloud/user/AccountManagerImpl.java index c601e109ded..bc1113e36a0 100644 --- a/server/src/com/cloud/user/AccountManagerImpl.java +++ b/server/src/com/cloud/user/AccountManagerImpl.java @@ -133,6 +133,7 @@ import com.cloud.template.TemplateManager; import com.cloud.template.VirtualMachineTemplate; import com.cloud.user.Account.State; import com.cloud.user.dao.AccountDao; +import com.cloud.user.dao.SSHKeyPairDao; import com.cloud.user.dao.UserAccountDao; import com.cloud.user.dao.UserDao; import com.cloud.utils.ConstantTimeComparator; @@ -262,6 +263,8 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M private DedicatedResourceDao _dedicatedDao; @Inject private GlobalLoadBalancerRuleDao _gslbRuleDao; + @Inject + private SSHKeyPairDao _sshKeyPairDao; List _querySelectors; @@ -923,6 +926,12 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M // Delete resource count and resource limits entries set for this account (if there are any). _resourceCountDao.removeEntriesByOwner(accountId, ResourceOwnerType.Account); _resourceLimitDao.removeEntriesByOwner(accountId, ResourceOwnerType.Account); + + // Delete ssh keypairs + List sshkeypairs = _sshKeyPairDao.listKeyPairs(accountId, account.getDomainId()); + for (SSHKeyPairVO keypair: sshkeypairs) { + _sshKeyPairDao.remove(keypair.getId()); + } return true; } catch (Exception ex) { s_logger.warn("Failed to cleanup account " + account + " due to ", ex); diff --git a/server/test/com/cloud/user/AccountManagerImplTest.java b/server/test/com/cloud/user/AccountManagerImplTest.java index 278804962f8..9d32e19e44c 100644 --- a/server/test/com/cloud/user/AccountManagerImplTest.java +++ b/server/test/com/cloud/user/AccountManagerImplTest.java @@ -20,6 +20,8 @@ import java.net.InetAddress; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.Arrays; +import java.util.List; + import com.cloud.server.auth.UserAuthenticator; import com.cloud.utils.Pair; @@ -100,6 +102,13 @@ public class AccountManagerImplTest extends AccountManagetImplTestBase { .thenReturn(true); Mockito.when(_vmSnapshotDao.listByAccountId(Mockito.anyLong())).thenReturn(new ArrayList()); + List sshkeyList = new ArrayList(); + SSHKeyPairVO sshkey = new SSHKeyPairVO(); + sshkey.setId(1l); + sshkeyList.add(sshkey); + Mockito.when(_sshKeyPairDao.listKeyPairs(Mockito.anyLong(), Mockito.anyLong())).thenReturn(sshkeyList); + Mockito.when(_sshKeyPairDao.remove(Mockito.anyLong())).thenReturn(true); + Assert.assertTrue(accountManager.deleteUserAccount(42)); // assert that this was a clean delete Mockito.verify(_accountDao, Mockito.never()).markForCleanup( diff --git a/server/test/com/cloud/user/AccountManagetImplTestBase.java b/server/test/com/cloud/user/AccountManagetImplTestBase.java index 5f1e8417c2b..53b781a5868 100644 --- a/server/test/com/cloud/user/AccountManagetImplTestBase.java +++ b/server/test/com/cloud/user/AccountManagetImplTestBase.java @@ -69,6 +69,7 @@ import com.cloud.storage.dao.VolumeDao; import com.cloud.storage.snapshot.SnapshotManager; import com.cloud.template.TemplateManager; import com.cloud.user.dao.AccountDao; +import com.cloud.user.dao.SSHKeyPairDao; import com.cloud.user.dao.UserAccountDao; import com.cloud.user.dao.UserDao; import com.cloud.vm.VirtualMachineManager; @@ -189,7 +190,8 @@ public class AccountManagetImplTestBase { ServiceOfferingDao _offeringDao; @Mock OrchestrationService _orchSrvc; - + @Mock + SSHKeyPairDao _sshKeyPairDao; AccountManagerImpl accountManager; From 970746c6d60c47a0708811c1c2533baf626d3e5b Mon Sep 17 00:00:00 2001 From: Sudhansu Date: Wed, 21 Dec 2016 14:07:47 +0530 Subject: [PATCH 4/5] CLOUDSTACK-9668 : disksizeallocated of PrimaryStorage is different from the total size of a volume update capacity if current allocated is different from used bytes in DB. --- server/src/com/cloud/storage/StorageManagerImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/com/cloud/storage/StorageManagerImpl.java b/server/src/com/cloud/storage/StorageManagerImpl.java index a5ffbb0b3b7..c0afa32f16f 100644 --- a/server/src/com/cloud/storage/StorageManagerImpl.java +++ b/server/src/com/cloud/storage/StorageManagerImpl.java @@ -1005,7 +1005,7 @@ public class StorageManagerImpl extends ManagerBase implements StorageManager, C _capacityDao.persist(capacity); } else { CapacityVO capacity = capacities.get(0); - if (capacity.getTotalCapacity() != totalOverProvCapacity || allocated != 0L || capacity.getCapacityState() != capacityState) { + if (capacity.getTotalCapacity() != totalOverProvCapacity || allocated != capacity.getUsedCapacity() || capacity.getCapacityState() != capacityState) { capacity.setTotalCapacity(totalOverProvCapacity); capacity.setUsedCapacity(allocated); capacity.setCapacityState(capacityState); From c566aba83839f08f03ccb845e1da28e47981937f Mon Sep 17 00:00:00 2001 From: Will Stevens Date: Tue, 25 Apr 2017 07:48:47 -0400 Subject: [PATCH 5/5] we should not need to take down the service every time an IP is configured --- systemvm/patches/debian/config/opt/cloud/bin/configure.py | 1 - 1 file changed, 1 deletion(-) diff --git a/systemvm/patches/debian/config/opt/cloud/bin/configure.py b/systemvm/patches/debian/config/opt/cloud/bin/configure.py index 82244e43c6b..0b8caa50a2c 100755 --- a/systemvm/patches/debian/config/opt/cloud/bin/configure.py +++ b/systemvm/patches/debian/config/opt/cloud/bin/configure.py @@ -629,7 +629,6 @@ class CsRemoteAccessVpn(CsDataBag): self.remoteaccessvpn_iptables(public_ip, self.dbag[public_ip]) CsHelper.execute("ipsec auto --rereadall") - CsHelper.execute("service xl2tpd stop") CsHelper.execute("service xl2tpd start") CsHelper.execute("ipsec auto --rereadsecrets") CsHelper.execute("ipsec auto --replace L2TP-PSK")