Переглянути джерело

when removing account ssh key, update account plan and network to null key

tags/v1.2.1
Jonathan Cobb 4 роки тому
джерело
коміт
4f0e797896
3 змінених файлів з 27 додано та 0 видалено
  1. +19
    -0
      bubble-server/src/main/java/bubble/dao/account/AccountSshKeyDAO.java
  2. +4
    -0
      bubble-server/src/main/java/bubble/dao/bill/AccountPlanDAO.java
  3. +4
    -0
      bubble-server/src/main/java/bubble/dao/cloud/BubbleNetworkDAO.java

+ 19
- 0
bubble-server/src/main/java/bubble/dao/account/AccountSshKeyDAO.java Переглянути файл

@@ -4,8 +4,11 @@
*/ */
package bubble.dao.account; package bubble.dao.account;


import bubble.dao.bill.AccountPlanDAO;
import bubble.dao.cloud.BubbleNetworkDAO;
import bubble.model.account.Account; import bubble.model.account.Account;
import bubble.model.account.AccountSshKey; import bubble.model.account.AccountSshKey;
import bubble.model.bill.AccountPlan;
import bubble.model.cloud.AnsibleInstallType; import bubble.model.cloud.AnsibleInstallType;
import bubble.model.cloud.BubbleNetwork; import bubble.model.cloud.BubbleNetwork;
import bubble.server.BubbleConfiguration; import bubble.server.BubbleConfiguration;
@@ -14,6 +17,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;


import java.io.File; import java.io.File;
import java.util.List;


import static bubble.ApiConstants.HOME_DIR; import static bubble.ApiConstants.HOME_DIR;
import static org.cobbzilla.util.io.FileUtil.touch; import static org.cobbzilla.util.io.FileUtil.touch;
@@ -25,6 +29,8 @@ import static org.cobbzilla.wizard.resources.ResourceUtil.invalidEx;
public class AccountSshKeyDAO extends AccountOwnedEntityDAO<AccountSshKey> { public class AccountSshKeyDAO extends AccountOwnedEntityDAO<AccountSshKey> {


@Autowired private AccountDAO accountDAO; @Autowired private AccountDAO accountDAO;
@Autowired private AccountPlanDAO accountPlanDAO;
@Autowired private BubbleNetworkDAO networkDAO;
@Autowired private BubbleConfiguration configuration; @Autowired private BubbleConfiguration configuration;


public AccountSshKey findByAccountAndHash(String accountUuid, String hash) { public AccountSshKey findByAccountAndHash(String accountUuid, String hash) {
@@ -90,6 +96,19 @@ public class AccountSshKeyDAO extends AccountOwnedEntityDAO<AccountSshKey> {


@Override public void delete(String uuid) { @Override public void delete(String uuid) {
final AccountSshKey key = findByUuid(uuid); final AccountSshKey key = findByUuid(uuid);

// remove from any AccountPlans that reference it
final List<AccountPlan> accountPlans = accountPlanDAO.findByAccountAndSshKey(key.getAccount(), key.getUuid());
for (AccountPlan plan : accountPlans) {
accountPlanDAO.update(plan.setSshKey(null));
}

// remove from any BubbleNetworks that reference it
final List<BubbleNetwork> bubbleNetworks = networkDAO.findByAccountAndSshKey(key.getAccount(), key.getUuid());
for (BubbleNetwork network : bubbleNetworks) {
networkDAO.update(network.setSshKey(null));
}

super.delete(uuid); super.delete(uuid);
if (key.installSshKey()) refreshInstalledKeys(); if (key.installSshKey()) refreshInstalledKeys();
} }


+ 4
- 0
bubble-server/src/main/java/bubble/dao/bill/AccountPlanDAO.java Переглянути файл

@@ -63,6 +63,10 @@ public class AccountPlanDAO extends AccountOwnedEntityDAO<AccountPlan> {


public AccountPlan findByNetwork(String networkUuid) { return findByUniqueField("network", networkUuid); } public AccountPlan findByNetwork(String networkUuid) { return findByUniqueField("network", networkUuid); }


public List<AccountPlan> findByAccountAndSshKey(String account, String keyUuid) {
return findByFields("account", account, "sshKey", keyUuid);
}

public List<AccountPlan> findByAccountAndNotDeleted(String account) { public List<AccountPlan> findByAccountAndNotDeleted(String account) {
return findByFields("account", account, "deleting", false, "deleted", null); return findByFields("account", account, "deleting", false, "deleted", null);
} }


+ 4
- 0
bubble-server/src/main/java/bubble/dao/cloud/BubbleNetworkDAO.java Переглянути файл

@@ -92,6 +92,10 @@ public class BubbleNetworkDAO extends AccountOwnedEntityDAO<BubbleNetwork> {
return findByUniqueFields("name", name, "domain", domainUuid); return findByUniqueFields("name", name, "domain", domainUuid);
} }


public List<BubbleNetwork> findByAccountAndSshKey(String account, String keyUuid) {
return findByFields("account", account, "sshKey", keyUuid);
}

@Override public void delete(String uuid) { @Override public void delete(String uuid) {
final BubbleNetwork network = findByUuid(uuid); final BubbleNetwork network = findByUuid(uuid);
if (network == null) return; if (network == null) return;


Завантаження…
Відмінити
Зберегти