Skip to content
Snippets Groups Projects

Lambda Priming

1 file
+ 63
5
Compare changes
  • Side-by-side
  • Inline
package gov.usgs.earthquake.nshmp.www;
package gov.usgs.earthquake.nshmp.www;
import java.nio.file.Path;
import java.nio.file.Path;
 
import java.util.List;
 
import java.util.Optional;
import org.crac.Context;
import org.crac.Context;
import org.crac.Resource;
import org.crac.Resource;
@@ -12,8 +14,13 @@ import software.amazon.awssdk.services.ssm.model.SsmException;
@@ -12,8 +14,13 @@ import software.amazon.awssdk.services.ssm.model.SsmException;
import com.amazonaws.serverless.proxy.internal.testutils.MockLambdaContext;
import com.amazonaws.serverless.proxy.internal.testutils.MockLambdaContext;
import com.amazonaws.serverless.proxy.model.AwsProxyRequest;
import com.amazonaws.serverless.proxy.model.AwsProxyRequest;
 
import com.amazonaws.serverless.proxy.model.MultiValuedTreeMap;
 
import gov.usgs.earthquake.nshmp.NamedLocation;
 
import gov.usgs.earthquake.nshmp.geo.Regions;
import gov.usgs.earthquake.nshmp.gmm.Gmm;
import gov.usgs.earthquake.nshmp.gmm.Gmm;
 
import gov.usgs.earthquake.nshmp.gmm.Imt;
 
import gov.usgs.earthquake.nshmp.site.NshmpSite;
import io.micronaut.context.annotation.Value;
import io.micronaut.context.annotation.Value;
import io.micronaut.crac.OrderedResource;
import io.micronaut.crac.OrderedResource;
@@ -26,18 +33,60 @@ import jakarta.inject.Singleton;
@@ -26,18 +33,60 @@ import jakarta.inject.Singleton;
@Singleton
@Singleton
public class PrimingResource implements OrderedResource {
public class PrimingResource implements OrderedResource {
 
/* Test sites */
 
private static final List<NamedLocation> LOCATIONS = List.of(
 
NshmpSite.LOS_ANGELES_CA,
 
NshmpSite.SAN_FRANCISCO_CA,
 
NshmpSite.SEATTLE_WA,
 
NshmpSite.SALT_LAKE_CITY_UT,
 
NshmpSite.RENO_NV,
 
NshmpSite.NEW_MADRID_MO,
 
NshmpSite.BOSTON_MA,
 
NshmpSite.NEW_YORK_NY,
 
NshmpSite.CHICAGO_IL,
 
NshmpSite.ANCHORAGE_AK,
 
NshmpSite.FAIRBANKS_AK,
 
NshmpSite.JUNEAU_AK,
 
NshmpSite.KODIAK_AK,
 
NshmpSite.VALDEZ_AK,
 
NshmpSite.HILO_HI,
 
NshmpSite.HONOLULU_HI,
 
NshmpSite.KAILUA_KONA_HI,
 
NshmpSite.SAN_JUAN_PR);
 
@Value("${nshmp-haz.model-path}")
@Value("${nshmp-haz.model-path}")
private Path modelPath;
private Path modelPath;
@Override
@Override
public void beforeCheckpoint(Context<? extends Resource> context) throws Exception {
public void beforeCheckpoint(Context<? extends Resource> context) throws Exception {
ServletUtil.model(ServletUtil.loadModel(modelPath));
var model = ServletUtil.loadModel(modelPath);
 
ServletUtil.model(model);
updateParameter();
updateParameter();
 
var region = Regions.createRectangular("Bounds", model.bounds().min, model.bounds().max);
 
try (MicronautLambdaHandler handler = new MicronautLambdaHandler()) {
try (MicronautLambdaHandler handler = new MicronautLambdaHandler()) {
handler.handleRequest(
var paths = List.of("/hazard", "/disagg");
getAwsProxyRequest("/hazard"),
new MockLambdaContext());
paths.forEach(path -> {
 
handler.handleRequest(
 
getAwsProxyRequest(path, Optional.empty()),
 
new MockLambdaContext());
 
});
 
 
paths.forEach(path -> {
 
LOCATIONS.forEach(namedLocation -> {
 
var location = namedLocation.location();
 
 
if (region.contains(location)) {
 
handler.handleRequest(
 
getAwsProxyRequest(
 
String.format("%s/%f/%f/760", path, location.longitude, location.latitude),
 
Optional.of(Imt.PGA)),
 
new MockLambdaContext());
 
}
 
});
 
});
}
}
}
}
@@ -47,10 +96,19 @@ public class PrimingResource implements OrderedResource {
@@ -47,10 +96,19 @@ public class PrimingResource implements OrderedResource {
ServletUtil.resetExecutors();
ServletUtil.resetExecutors();
}
}
private static AwsProxyRequest getAwsProxyRequest(String path) {
private static AwsProxyRequest getAwsProxyRequest(String path, Optional<Imt> imt) {
final AwsProxyRequest awsProxyRequest = new AwsProxyRequest();
final AwsProxyRequest awsProxyRequest = new AwsProxyRequest();
awsProxyRequest.setHttpMethod("GET");
awsProxyRequest.setHttpMethod("GET");
awsProxyRequest.setPath(path);
awsProxyRequest.setPath(path);
 
 
if (imt.isPresent()) {
 
var parameters = new MultiValuedTreeMap<String, String>();
 
parameters.add("imt", imt.get().name());
 
 
awsProxyRequest.setMultiValueQueryStringParameters(
 
parameters);
 
}
 
return awsProxyRequest;
return awsProxyRequest;
}
}
Loading