Ver a proveniência

require email cloud. fix relative path for LocalStorage. add a BlankDevServerTest that preserves DB

tags/v0.1.6
Jonathan Cobb há 4 anos
ascendente
cometimento
644e91afeb
7 ficheiros alterados com 72 adições e 24 eliminações
  1. +13
    -1
      bubble-server/src/main/java/bubble/cloud/storage/local/LocalStorageDriver.java
  2. +8
    -3
      bubble-server/src/main/java/bubble/service/backup/BackupService.java
  3. +16
    -5
      bubble-server/src/main/java/bubble/service/boot/ActivationService.java
  4. +1
    -0
      bubble-server/src/main/resources/message_templates/en_US/server/pre_auth/ResourceMessages.properties
  5. +5
    -13
      bubble-server/src/test/java/bubble/test/dev/BlankDevServerTest.java
  6. +0
    -2
      bubble-server/src/test/java/bubble/test/dev/DevServerTest.java
  7. +29
    -0
      bubble-server/src/test/java/bubble/test/dev/NewBlankDevServerTest.java

+ 13
- 1
bubble-server/src/main/java/bubble/cloud/storage/local/LocalStorageDriver.java Ver ficheiro

@@ -47,7 +47,11 @@ public class LocalStorageDriver extends CloudServiceDriverBase<LocalStorageConfi

@Getter(lazy=true) private final String baseDir = initBaseDir();
public String initBaseDir() {
if (!empty(config.getBaseDir())) return config.getBaseDir();
if (!empty(config.getBaseDir())) {
final File base = new File(config.getBaseDir());
if (base.isAbsolute()) return base.getAbsolutePath();
return new File(System.getProperty("user.home")+"/"+config.getBaseDir()).getAbsolutePath();
}

final File standardBaseDir = new File(LOCAL_STORAGE_STANDARD_BASE_DIR);
if ((standardBaseDir.exists() || standardBaseDir.mkdirs()) && standardBaseDir.canRead() && standardBaseDir.canWrite()) {
@@ -163,6 +167,14 @@ public class LocalStorageDriver extends CloudServiceDriverBase<LocalStorageConfi
} catch (IOException e) {
return die("delete: forceDelete("+abs(file)+") failed: "+shortError(e));
}
final File metaFile = metaFile(file);
if (metaFile.exists()) {
try {
FileUtils.forceDelete(metaFile);
} catch (IOException e) {
log.warn("delete: forceDelete of meta file (" + abs(metaFile) + ") failed: " + shortError(e));
}
}
return true;
}



+ 8
- 3
bubble-server/src/main/java/bubble/service/backup/BackupService.java Ver ficheiro

@@ -138,9 +138,14 @@ public class BackupService extends SimpleDaemon {

@Cleanup final TempDir temp = new TempDir();

// 1 backup ansible snapshot (check sha256 first, we only need to do this once, it never changes)
log.info("backup: backing up ansible archive");
backupFile(ansiblePath, new File(home, "ansible.tgz"));
// 1 backup ansible snapshot -- todo: check sha256
final File ansibleTgz = new File(home, "ansible.tgz");
if (ansibleTgz.exists()) {
log.info("backup: backing up ansible archive");
backupFile(ansiblePath, ansibleTgz);
} else {
log.warn("backup: ansible archive not found, not backing up: "+abs(ansibleTgz));
}

// 2 dump database to storage
log.info("backup: backing up DB");


+ 16
- 5
bubble-server/src/main/java/bubble/service/boot/ActivationService.java Ver ficheiro

@@ -81,6 +81,7 @@ public class ActivationService {
CloudService publicDns = null;
CloudService localStorage = null;
CloudService networkStorage = null;
CloudService email = null;
CloudService compute = null;
for (Map.Entry<String, CloudServiceConfig> requestedCloud : requestConfigs.entrySet()) {
final String name = requestedCloud.getKey();
@@ -92,17 +93,27 @@ public class ActivationService {
} else if (errors.isValid()) {
final CloudService cloud = new CloudService(defaultCloud).configure(config, errors);
toCreate.add(cloud);
if (defaultCloud.getType() == CloudServiceType.dns && defaultCloud.getName().equals(request.getDomain().getPublicDns()) && publicDns == null) publicDns = cloud;
if (defaultCloud.getType() == CloudServiceType.storage) {
if (localStorage == null && defaultCloud.isLocalStorage()) localStorage = cloud;
if (networkStorage == null && defaultCloud.isNotLocalStorage()) networkStorage = cloud;
switch (defaultCloud.getType()) {
case dns:
if (defaultCloud.getName().equals(request.getDomain().getPublicDns()) && publicDns == null) publicDns = cloud;
break;
case storage:
if (localStorage == null && defaultCloud.isLocalStorage()) localStorage = cloud;
if (networkStorage == null && defaultCloud.isNotLocalStorage()) networkStorage = cloud;
break;
case compute:
if (compute == null) compute = cloud;
break;
case email:
if (email == null) email = cloud;
break;
}
if (defaultCloud.getType() == CloudServiceType.compute && compute == null) compute = cloud;
}
}
if (publicDns == null) errors.addViolation("err.publicDns.noneSpecified");
if (networkStorage == null) errors.addViolation("err.storage.noneSpecified");
if (compute == null && !configuration.testMode()) errors.addViolation("err.compute.noneSpecified");
if (email == null && !configuration.testMode()) errors.addViolation("err.email.noneSpecified");
if (errors.isInvalid()) throw invalidEx(errors);

// create local storage if it was not provided


+ 1
- 0
bubble-server/src/main/resources/message_templates/en_US/server/pre_auth/ResourceMessages.properties Ver ficheiro

@@ -147,6 +147,7 @@ err.cloud.notFound=No cloud exists with this name
err.publicDns.noneSpecified=No DNS service was configured
err.storage.noneSpecified=No Storage service was configured
err.compute.noneSpecified=No Compute service was configured
err.email.noneSpecified=No Email service was configured
err.cloud.localStorageIsReservedName=LocalStorage is a reserved name

# Storage driver errors


+ 5
- 13
bubble-server/src/test/java/bubble/test/dev/BlankDevServerTest.java Ver ficheiro

@@ -1,26 +1,18 @@
package bubble.test.dev;

import bubble.resources.EntityConfigsResource;
import bubble.server.BubbleConfiguration;
import bubble.test.BubbleModelTestBase;
import lombok.extern.slf4j.Slf4j;
import org.cobbzilla.wizard.server.RestServer;
import org.junit.Test;

import static java.util.concurrent.TimeUnit.DAYS;
import static org.cobbzilla.util.system.Sleep.sleep;

@Slf4j
public class BlankDevServerTest extends BubbleModelTestBase {
public class BlankDevServerTest extends NewBlankDevServerTest {

@Override protected String getManifest() { return "manifest-empty"; }

@Override protected boolean useMocks() { return false; }

@Override public void onStart(RestServer<BubbleConfiguration> server) {
getConfiguration().getBean(EntityConfigsResource.class).getAllowPublic().set(true);
super.onStart(server);
}
@Override protected String getDatabaseNameSuffix() { return "test"; }
@Override protected boolean dropPreExistingDatabase() { return false; }
@Override protected boolean allowPreExistingDatabase() { return true; }
@Override public boolean doTruncateDb() { return false; }

@Test public void runBlankServer () throws Exception {
log.info("runBlankServer: Bubble API server started and model initialized. You may now begin testing.");


+ 0
- 2
bubble-server/src/test/java/bubble/test/dev/DevServerTest.java Ver ficheiro

@@ -14,9 +14,7 @@ import static org.cobbzilla.util.system.Sleep.sleep;
public class DevServerTest extends ActivatedBubbleModelTestBase {

@Override protected String getManifest() { return "manifest-dev"; }

@Override protected boolean useMocks() { return false; }

@Override protected String getDatabaseNameSuffix() { return "dev"; }
@Override protected boolean dropPreExistingDatabase() { return false; }
@Override protected boolean allowPreExistingDatabase() { return true; }


+ 29
- 0
bubble-server/src/test/java/bubble/test/dev/NewBlankDevServerTest.java Ver ficheiro

@@ -0,0 +1,29 @@
package bubble.test.dev;

import bubble.resources.EntityConfigsResource;
import bubble.server.BubbleConfiguration;
import bubble.test.BubbleModelTestBase;
import lombok.extern.slf4j.Slf4j;
import org.cobbzilla.wizard.server.RestServer;
import org.junit.Test;

import static java.util.concurrent.TimeUnit.DAYS;
import static org.cobbzilla.util.system.Sleep.sleep;

@Slf4j
public class NewBlankDevServerTest extends BubbleModelTestBase {

@Override protected String getManifest() { return "manifest-empty"; }
@Override protected boolean useMocks() { return false; }

@Override public void onStart(RestServer<BubbleConfiguration> server) {
getConfiguration().getBean(EntityConfigsResource.class).getAllowPublic().set(true);
super.onStart(server);
}

@Test public void runBlankServer () throws Exception {
log.info("runBlankServer: Bubble API server started and model initialized. You may now begin testing.");
sleep(DAYS.toMillis(30), "running dev server");
}

}

Carregando…
Cancelar
Guardar