Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IGDD-1848 enable direct access to ndlp storage #19

Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import gov.cdc.izgateway.logging.markers.Markers2;
import gov.cdc.izgateway.soap.fault.Fault;
import gov.cdc.izgateway.soap.fault.FaultSupport;
import gov.cdc.izgateway.soap.fault.HubClientFault;
import gov.cdc.izgateway.soap.fault.UnexpectedExceptionFault;
import gov.cdc.izgateway.soap.fault.UnsupportedOperationFault;
import gov.cdc.izgateway.logging.info.SourceInfo;
Expand Down Expand Up @@ -665,6 +666,9 @@ public void setProcessError(Exception fault) {
s = f;
} else if (fault instanceof Fault f) {
s = f;
if (f instanceof HubClientFault hcf && hcf.getOriginalBody() != null) {
this.setResponse(hcf.getOriginalBody());
}
} else {
s = new UnexpectedExceptionFault(fault, null);
}
Expand Down
56 changes: 48 additions & 8 deletions src/main/java/gov/cdc/izgateway/model/IDestination.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,36 @@

import java.util.Date;

import org.apache.commons.lang3.StringUtils;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonFormat.Shape;

import gov.cdc.izgateway.common.Constants;
import gov.cdc.izgateway.common.HasDestinationUri;
import io.swagger.v3.oas.annotations.media.Schema;

public interface IDestination extends IEndpoint, HasDestinationUri {
@SuppressWarnings("serial")
static class Map extends MappableEntity<IDestination> {}
static String ID_PATTERN = "^[-_\\p{Alnum}]+$";

/** Version value for IIS endpoints using CDC Schema */
public static final String IZGW_2011 = "2011";
/** Version value for IIS endpoints using 2014 Schema (subset of HUB Schema w/o HubHeader) */
public static final String IZGW_2014 = "2014";
/** Version value for IIS endpoints using IZGW Hub Schema */
public static final String IZGW_HUB = "HUB";
/** Version value for ADS endpoints using DEX 1.0 Schema */
public static final String IZGW_ADS_VERSION1 = "DEX1.0";
/** Version value for ADS endpoints using DEX 2.0 Schema */
public static final String IZGW_ADS_VERSION2 = "DEX2.0";
/** Version value for ADS endpoints using NDLP 1.0 Schema (Azure with v1 Folder Structure) */
public static final String IZGW_AZURE_VERSION1 = "V2022-12-31";
/** Version value for ADS endpoints using NDLP 2.0 Schema (Azure with v2 Folder Structure) */
public static final String IZGW_AZURE_VERSION2 = "V2022-12-31";

String getFacilityId();

IDestinationId getId();
Expand Down Expand Up @@ -84,16 +102,38 @@ static class Map extends MappableEntity<IDestination> {}

IDestination safeCopy();

boolean is2011();

boolean is2014();

boolean isHub();
@JsonIgnore
@Schema(description = "True if this destination supports the original CDC 2011 Protocol", hidden=true)
default boolean is2011() {
return IZGW_2011.equals(getDestVersion());
}

boolean isDex();
@JsonIgnore
@Schema(description = "True if this destination supports the IZ Gateway 2014 Protocol", hidden=true)
default boolean is2014() {
String destVersion = getDestVersion();
return StringUtils.isEmpty(destVersion) || IZGW_2014.equals(destVersion);
}

@JsonIgnore
@Schema(description = "True if this destination supports the IZ Gateway Hub Protocol", hidden=true)
default boolean isHub() {
return IZGW_HUB.equalsIgnoreCase(getDestVersion());
}

@JsonIgnore
@Schema(description = "True if this destination supports the CDC DEX Protocol", hidden=true)
default boolean isDex() {
String destVersion = getDestVersion();
return IZGW_ADS_VERSION1.equals(destVersion) || IZGW_ADS_VERSION2.equals(destVersion);
}

@JsonIgnore
@Schema(description = "True if this destination supports the Azure Blob Storage Protocol", hidden=true)
default boolean isAzure() {
return IZGW_AZURE_VERSION1.equals(getDestVersion());
}

boolean isAzure();

String getDestinationUri();

}
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,14 @@ public class DestinationConnectionFault extends Fault implements HasDestinationU
"There was an error establishing a trusted connection between IZ Gateway and the destination endpoint. The destination endpoint does not trust IZ Gateway. This can result from a problem with the destination's"
+ "acceptance of the IZ Gateway trust parameters including supported protocol versions, encryption suites or the destination certificate.",
RetryStrategy.CONTACT_SUPPORT
),
new MessageSupport(
FAULT_NAME,
"24",
"IO Error At Destination", "Error communicating from/to destination",
"There was an IO Error accessing the destination endpoint. This may indicate a problem with the networking infrastructure between"
+ "IZ Gateway and the endpoint.",
RetryStrategy.NORMAL
)
};
static {
Expand Down Expand Up @@ -227,6 +235,9 @@ public static DestinationConnectionFault readError(IDestination routing, IOExcep
}
return new DestinationConnectionFault(11, routing, ex.getMessage(), ex);
}
public static DestinationConnectionFault ioError(IDestination routing, IOException ex) {
return new DestinationConnectionFault(14, routing, ex.getMessage(), ex);
}

public static DestinationConnectionFault tlsErrorAtDestination(IDestination routing, TlsFatalAlertReceived tlsErr, long elapsedTimeIIS) {
return new DestinationConnectionFault(13, routing, tlsErr.getMessage(), tlsErr);
Expand Down
Loading