Proxy management improved

This commit is contained in:
Lucio Lelii 2022-06-24 15:45:43 +02:00
parent 08781a5f3a
commit 710e8ef242
5 changed files with 65 additions and 13 deletions

View File

@ -2,6 +2,7 @@ package org.gcube.smartgears.configuration.application;
import java.util.Set; import java.util.Set;
import org.gcube.smartgears.configuration.ProxyAddress;
import org.gcube.smartgears.persistence.PersistenceWriter; import org.gcube.smartgears.persistence.PersistenceWriter;
/** /**
@ -19,7 +20,11 @@ public interface ApplicationConfiguration {
*/ */
String context(); String context();
boolean proxied(); boolean proxable();
ProxyAddress proxyAddress();
ApplicationConfiguration proxyAddress(ProxyAddress proxy);
/** /**
* Sets the context path of the application * Sets the context path of the application

View File

@ -1,8 +1,11 @@
package org.gcube.smartgears.configuration.application; package org.gcube.smartgears.configuration.application;
import java.io.File;
import java.util.Set; import java.util.Set;
import org.gcube.smartgears.configuration.ProxyAddress;
import org.gcube.smartgears.configuration.container.ContainerConfiguration; import org.gcube.smartgears.configuration.container.ContainerConfiguration;
import org.gcube.smartgears.persistence.LocalPersistence;
import org.gcube.smartgears.persistence.PersistenceWriter; import org.gcube.smartgears.persistence.PersistenceWriter;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -25,11 +28,20 @@ public class BridgedApplicationConfiguration implements ApplicationConfiguration
if (application.persistence()==null) { if (application.persistence()==null) {
application.persistence(container.persistence()); String location = container.persistence().getLocation()+"/"+application.name();
File dir = new File(location);
if (!dir.exists())
dir.mkdirs();
application.persistence(new LocalPersistence(location));
log.trace("setting persistence location for {} @ {}",application.name(), dir.getAbsolutePath());
log.trace("setting persistence location for {} the same as the container persistence",application.name());
} }
if (application.proxable() && container.proxy()!=null)
application.proxyAddress(container.proxy());
} }
public ApplicationConfiguration inner() { public ApplicationConfiguration inner() {
@ -110,8 +122,8 @@ public class BridgedApplicationConfiguration implements ApplicationConfiguration
@Override @Override
public boolean proxied() { public boolean proxable() {
return application.proxied(); return application.proxable();
} }
@Override @Override
@ -124,4 +136,14 @@ public class BridgedApplicationConfiguration implements ApplicationConfiguration
return application.includes(includes); return application.includes(includes);
} }
@Override
public ProxyAddress proxyAddress() {
return application.proxyAddress();
}
@Override
public ApplicationConfiguration proxyAddress(ProxyAddress proxy) {
return proxyAddress(proxy);
}
} }

View File

@ -18,6 +18,7 @@ import org.gcube.common.validator.ValidatorFactory;
import org.gcube.common.validator.annotations.IsValid; import org.gcube.common.validator.annotations.IsValid;
import org.gcube.common.validator.annotations.NotNull; import org.gcube.common.validator.annotations.NotNull;
import org.gcube.smartgears.configuration.ProxyAddress; import org.gcube.smartgears.configuration.ProxyAddress;
import org.gcube.smartgears.persistence.LocalPersistence;
import org.gcube.smartgears.persistence.PersistenceWriter; import org.gcube.smartgears.persistence.PersistenceWriter;
/** /**
@ -34,8 +35,8 @@ public class DefaultApplicationConfiguration implements ApplicationConfiguration
String context; String context;
@XmlAttribute(name = "proxied") @XmlAttribute(name = "proxable")
private boolean proxied = true; private boolean proxable = true;
@XmlElement(name="name" , required=true) @XmlElement(name="name" , required=true)
@NotNull @NotNull
@ -58,9 +59,13 @@ public class DefaultApplicationConfiguration implements ApplicationConfiguration
@XmlElementRef @XmlElementRef
Set<Include> includes= new LinkedHashSet<Include>(); Set<Include> includes= new LinkedHashSet<Include>();
@XmlElementRef(type=LocalPersistence.class)
@NotNull @IsValid @NotNull @IsValid
private PersistenceWriter persistenceManager; private PersistenceWriter persistenceManager;
@IsValid
ProxyAddress proxyAddress;
@Override @Override
public Set<Exclude> excludes() { public Set<Exclude> excludes() {
return excludes; return excludes;
@ -144,10 +149,21 @@ public class DefaultApplicationConfiguration implements ApplicationConfiguration
} }
@Override @Override
public boolean proxied() { public boolean proxable() {
return proxied; return proxable;
} }
public ProxyAddress proxyAddress() {
return proxyAddress;
}
public ApplicationConfiguration proxyAddress(ProxyAddress proxyAddress) {
this.proxyAddress = proxyAddress;
return this;
}
@Override @Override
public PersistenceWriter persistence() { public PersistenceWriter persistence() {
return persistenceManager; return persistenceManager;

View File

@ -207,8 +207,10 @@ public class ApplicationProfileManager extends ApplicationLifecycleHandler {
context.events().fire(context,changed); context.events().fire(context,changed);
} }
}; };
periodicUpdates = Utils.scheduledServicePool.scheduleAtFixedRate(updateTask, Constants.application_republish_frequency_in_minutes, Constants.application_republish_frequency_in_minutes , TimeUnit.MINUTES); periodicUpdates = Utils.scheduledServicePool.scheduleAtFixedRate(updateTask,
Constants.application_republish_frequency_in_minutes,
Constants.application_republish_frequency_in_minutes , TimeUnit.MINUTES);
} }

View File

@ -8,12 +8,19 @@ import java.io.File;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Paths; import java.nio.file.Paths;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;
import org.gcube.common.validator.annotations.NotEmpty; import org.gcube.common.validator.annotations.NotEmpty;
import org.gcube.common.validator.annotations.NotNull; import org.gcube.common.validator.annotations.NotNull;
@XmlRootElement(name="persistence")
@XmlAccessorType(XmlAccessType.FIELD)
public class LocalPersistence implements PersistenceWriter { public class LocalPersistence implements PersistenceWriter {
@NotNull @NotEmpty @XmlAttribute(name="location") @NotNull @NotEmpty
private String location; private String location;
protected LocalPersistence() {} protected LocalPersistence() {}