catch grpc runtime exceptions and throw as expected ioexceptions

This commit is contained in:
Blake J. Harnden 2019-05-28 12:10:24 -07:00
parent 7da09a0dd9
commit 09a681dab6

View file

@ -7,6 +7,7 @@ import com.core.data.*;
import com.google.protobuf.ByteString;
import io.grpc.ManagedChannel;
import io.grpc.ManagedChannelBuilder;
import io.grpc.StatusRuntimeException;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@ -189,23 +190,32 @@ public class CoreGrpcClient implements ICoreClient {
@Override
public SessionOverview createSession() throws IOException {
CoreProto.CreateSessionRequest request = CoreProto.CreateSessionRequest.newBuilder().build();
try {
CoreProto.CreateSessionResponse response = blockingStub.createSession(request);
SessionOverview overview = new SessionOverview();
overview.setId(response.getId());
overview.setState(response.getStateValue());
overview.setNodes(0);
return overview;
} catch (StatusRuntimeException ex) {
throw new IOException(ex);
}
}
@Override
public boolean deleteSession(Integer sessionId) throws IOException {
CoreProto.DeleteSessionRequest request = CoreProto.DeleteSessionRequest.newBuilder().setId(sessionId).build();
try {
return blockingStub.deleteSession(request).getResult();
} catch (StatusRuntimeException ex) {
throw new IOException(ex);
}
}
@Override
public List<SessionOverview> getSessions() throws IOException {
CoreProto.GetSessionsRequest request = CoreProto.GetSessionsRequest.newBuilder().build();
try {
CoreProto.GetSessionsResponse response = blockingStub.getSessions(request);
List<SessionOverview> sessions = new ArrayList<>();
for (CoreProto.SessionSummary summary : response.getSessionsList()) {
@ -216,12 +226,16 @@ public class CoreGrpcClient implements ICoreClient {
sessions.add(overview);
}
return sessions;
} catch (StatusRuntimeException ex) {
throw new IOException(ex);
}
}
@Override
public Session getSession(Integer sessionId) throws IOException {
logger.info("getting session: {}", sessionId);
CoreProto.GetSessionRequest request = CoreProto.GetSessionRequest.newBuilder().setId(sessionId).build();
try {
CoreProto.GetSessionResponse response = blockingStub.getSession(request);
Session session = new Session();
for (CoreProto.Node protoNode : response.getSession().getNodesList()) {
@ -288,6 +302,9 @@ public class CoreGrpcClient implements ICoreClient {
}
session.setState(response.getSession().getStateValue());
return session;
} catch (StatusRuntimeException ex) {
throw new IOException(ex);
}
}
@Override
@ -340,13 +357,18 @@ public class CoreGrpcClient implements ICoreClient {
.setId(sessionId)
.setStateValue(state.getValue())
.build();
try {
CoreProto.SetSessionStateResponse response = blockingStub.setSessionState(request);
return response.getResult();
} catch (StatusRuntimeException ex) {
throw new IOException(ex);
}
}
@Override
public Map<String, List<String>> getServices() throws IOException {
CoreProto.GetServicesRequest request = CoreProto.GetServicesRequest.newBuilder().build();
try {
CoreProto.GetServicesResponse response = blockingStub.getServices(request);
Map<String, List<String>> servicesMap = new HashMap<>();
for (CoreProto.Service protoService : response.getServicesList()) {
@ -354,17 +376,24 @@ public class CoreGrpcClient implements ICoreClient {
services.add(protoService.getName());
}
return servicesMap;
} catch (StatusRuntimeException ex) {
throw new IOException(ex);
}
}
@Override
public Map<String, List<String>> getDefaultServices() throws IOException {
CoreProto.GetServiceDefaultsRequest request = CoreProto.GetServiceDefaultsRequest.newBuilder().build();
try {
CoreProto.GetServiceDefaultsResponse response = blockingStub.getServiceDefaults(request);
Map<String, List<String>> servicesMap = new HashMap<>();
for (CoreProto.ServiceDefaults serviceDefaults : response.getDefaultsList()) {
servicesMap.put(serviceDefaults.getNodeType(), serviceDefaults.getServicesList());
}
return servicesMap;
} catch (StatusRuntimeException ex) {
throw new IOException(ex);
}
}
@Override
@ -379,18 +408,22 @@ public class CoreGrpcClient implements ICoreClient {
.build();
allDefaults.add(serviceDefaults);
}
CoreProto.SetServiceDefaultsRequest request = CoreProto.SetServiceDefaultsRequest.newBuilder()
.setSession(sessionId)
.addAllDefaults(allDefaults)
.build();
try {
CoreProto.SetServiceDefaultsResponse response = blockingStub.setServiceDefaults(request);
return response.getResult();
} catch (StatusRuntimeException ex) {
throw new IOException(ex);
}
}
@Override
public CoreService getService(CoreNode node, String serviceName) throws IOException {
CoreProto.GetNodeServiceRequest request = CoreProto.GetNodeServiceRequest.newBuilder().build();
try {
CoreProto.GetNodeServiceResponse response = blockingStub.getNodeService(request);
CoreProto.NodeServiceData nodeServiceData = response.getService();
CoreService service = new CoreService();
@ -405,6 +438,9 @@ public class CoreGrpcClient implements ICoreClient {
service.setValidationMode(nodeServiceData.getValidationMode().name());
service.setValidationTimer(Integer.toString(nodeServiceData.getValidationTimer()));
return service;
} catch (StatusRuntimeException ex) {
throw new IOException(ex);
}
}
@Override
@ -417,7 +453,11 @@ public class CoreGrpcClient implements ICoreClient {
request.getShutdownList().addAll(service.getShutdown());
request.getValidateList().addAll(service.getValidate());
request.getStartupList().addAll(service.getStartup());
try {
return blockingStub.setNodeService(request).getResult();
} catch (StatusRuntimeException ex) {
throw new IOException(ex);
}
}
@Override
@ -427,8 +467,12 @@ public class CoreGrpcClient implements ICoreClient {
.setId(node.getId())
.setService(serviceName)
.build();
try {
CoreProto.GetNodeServiceFileResponse response = blockingStub.getNodeServiceFile(request);
return response.getData().toStringUtf8();
} catch (StatusRuntimeException ex) {
throw new IOException(ex);
}
}
@Override
@ -439,7 +483,11 @@ public class CoreGrpcClient implements ICoreClient {
.setService(serviceName)
.setAction(CoreProto.ServiceAction.SERVICE_START)
.build();
try {
return blockingStub.serviceAction(request).getResult();
} catch (StatusRuntimeException ex) {
throw new IOException(ex);
}
}
@Override
@ -450,7 +498,11 @@ public class CoreGrpcClient implements ICoreClient {
.setService(serviceName)
.setAction(CoreProto.ServiceAction.SERVICE_STOP)
.build();
try {
return blockingStub.serviceAction(request).getResult();
} catch (StatusRuntimeException ex) {
throw new IOException(ex);
}
}
@Override
@ -461,7 +513,11 @@ public class CoreGrpcClient implements ICoreClient {
.setService(serviceName)
.setAction(CoreProto.ServiceAction.SERVICE_RESTART)
.build();
try {
return blockingStub.serviceAction(request).getResult();
} catch (StatusRuntimeException ex) {
throw new IOException(ex);
}
}
@Override
@ -472,7 +528,11 @@ public class CoreGrpcClient implements ICoreClient {
.setService(serviceName)
.setAction(CoreProto.ServiceAction.SERVICE_VALIDATE)
.build();
try {
return blockingStub.serviceAction(request).getResult();
} catch (StatusRuntimeException ex) {
throw new IOException(ex);
}
}
@Override
@ -484,8 +544,12 @@ public class CoreGrpcClient implements ICoreClient {
.setFile(serviceFile.getName())
.setData(ByteString.copyFromUtf8(serviceFile.getData()))
.build();
try {
CoreProto.SetNodeServiceFileResponse response = blockingStub.setNodeServiceFile(request);
return response.getResult();
} catch (StatusRuntimeException ex) {
throw new IOException(ex);
}
}
@Override
@ -493,8 +557,12 @@ public class CoreGrpcClient implements ICoreClient {
CoreProto.GetEmaneConfigRequest request = CoreProto.GetEmaneConfigRequest.newBuilder()
.setSession(sessionId)
.build();
try {
CoreProto.GetEmaneConfigResponse response = blockingStub.getEmaneConfig(request);
return protoToConfigGroups(response.getGroupsList());
} catch (StatusRuntimeException ex) {
throw new IOException(ex);
}
}
@Override
@ -502,8 +570,12 @@ public class CoreGrpcClient implements ICoreClient {
CoreProto.GetEmaneModelsRequest request = CoreProto.GetEmaneModelsRequest.newBuilder()
.setSession(sessionId)
.build();
try {
CoreProto.GetEmaneModelsResponse response = blockingStub.getEmaneModels(request);
return new ArrayList<>(response.getModelsList());
} catch (StatusRuntimeException ex) {
throw new IOException(ex);
}
}
@Override
@ -513,8 +585,12 @@ public class CoreGrpcClient implements ICoreClient {
.setSession(sessionId)
.putAllConfig(config)
.build();
try {
CoreProto.SetEmaneConfigResponse response = blockingStub.setEmaneConfig(request);
return response.getResult();
} catch (StatusRuntimeException ex) {
throw new IOException(ex);
}
}
@Override
@ -524,8 +600,12 @@ public class CoreGrpcClient implements ICoreClient {
.setId(id)
.setModel(model)
.build();
try {
CoreProto.GetEmaneModelConfigResponse response = blockingStub.getEmaneModelConfig(request);
return protoToConfigGroups(response.getGroupsList());
} catch (StatusRuntimeException ex) {
throw new IOException(ex);
}
}
@Override
@ -537,8 +617,12 @@ public class CoreGrpcClient implements ICoreClient {
.setModel(model)
.putAllConfig(config)
.build();
try {
CoreProto.SetEmaneModelConfigResponse response = blockingStub.setEmaneModelConfig(request);
return response.getResult();
} catch (StatusRuntimeException ex) {
throw new IOException(ex);
}
}
@Override
@ -551,10 +635,14 @@ public class CoreGrpcClient implements ICoreClient {
CoreProto.SaveXmlRequest request = CoreProto.SaveXmlRequest.newBuilder()
.setSession(sessionId)
.build();
try {
CoreProto.SaveXmlResponse response = blockingStub.saveXml(request);
try (PrintWriter writer = new PrintWriter(file)) {
writer.print(response.getData().toStringUtf8());
}
} catch (StatusRuntimeException ex) {
throw new IOException(ex);
}
}
@Override
@ -563,10 +651,14 @@ public class CoreGrpcClient implements ICoreClient {
CoreProto.OpenXmlRequest request = CoreProto.OpenXmlRequest.newBuilder()
.setData(data)
.build();
try {
CoreProto.OpenXmlResponse response = blockingStub.openXml(request);
SessionOverview sessionOverview = new SessionOverview();
sessionOverview.setId(response.getSession());
return sessionOverview;
} catch (StatusRuntimeException ex) {
throw new IOException(ex);
}
}
@Override
@ -574,8 +666,12 @@ public class CoreGrpcClient implements ICoreClient {
CoreProto.GetSessionOptionsRequest request = CoreProto.GetSessionOptionsRequest.newBuilder()
.setId(sessionId)
.build();
try {
CoreProto.GetSessionOptionsResponse response = blockingStub.getSessionOptions(request);
return protoToConfigGroups(response.getGroupsList());
} catch (StatusRuntimeException ex) {
throw new IOException(ex);
}
}
@Override
@ -585,8 +681,12 @@ public class CoreGrpcClient implements ICoreClient {
.setId(sessionId)
.putAllConfig(config)
.build();
try {
CoreProto.SetSessionOptionsResponse response = blockingStub.setSessionOptions(request);
return response.getResult();
} catch (StatusRuntimeException ex) {
throw new IOException(ex);
}
}
@Override
@ -596,8 +696,12 @@ public class CoreGrpcClient implements ICoreClient {
.setSession(sessionId)
.setNode(protoNode)
.build();
try {
blockingStub.addNode(request);
return true;
} catch (StatusRuntimeException ex) {
throw new IOException(ex);
}
}
@Override
@ -617,16 +721,24 @@ public class CoreGrpcClient implements ICoreClient {
.setId(node.getId())
.setPosition(position)
.build();
try {
CoreProto.EditNodeResponse response = blockingStub.editNode(request);
return response.getResult();
} catch (StatusRuntimeException ex) {
throw new IOException(ex);
}
}
@Override
public boolean deleteNode(CoreNode node) throws IOException {
CoreProto.DeleteNodeRequest request = CoreProto.DeleteNodeRequest.newBuilder()
.build();
try {
CoreProto.DeleteNodeResponse response = blockingStub.deleteNode(request);
return response.getResult();
} catch (StatusRuntimeException ex) {
throw new IOException(ex);
}
}
@Override
@ -653,8 +765,12 @@ public class CoreGrpcClient implements ICoreClient {
.setSession(sessionId)
.setLink(protoLink)
.build();
try {
CoreProto.AddLinkResponse response = blockingStub.addLink(request);
return response.getResult();
} catch (StatusRuntimeException ex) {
throw new IOException(ex);
}
}
@Override
@ -678,8 +794,12 @@ public class CoreGrpcClient implements ICoreClient {
builder.setOptions(protoOptions);
}
CoreProto.EditLinkRequest request = builder.build();
try {
CoreProto.EditLinkResponse response = blockingStub.editLink(request);
return response.getResult();
} catch (StatusRuntimeException ex) {
throw new IOException(ex);
}
}
@Override
@ -692,13 +812,18 @@ public class CoreGrpcClient implements ICoreClient {
CoreProto.AddHookRequest request = CoreProto.AddHookRequest.newBuilder()
.setHook(hookProto)
.build();
try {
CoreProto.AddHookResponse response = blockingStub.addHook(request);
return response.getResult();
} catch (StatusRuntimeException ex) {
throw new IOException(ex);
}
}
@Override
public List<Hook> getHooks() throws IOException {
CoreProto.GetHooksRequest request = CoreProto.GetHooksRequest.newBuilder().setSession(sessionId).build();
try {
CoreProto.GetHooksResponse response = blockingStub.getHooks(request);
List<Hook> hooks = new ArrayList<>();
for (CoreProto.Hook protoHook : response.getHooksList()) {
@ -709,6 +834,9 @@ public class CoreGrpcClient implements ICoreClient {
hooks.add(hook);
}
return hooks;
} catch (StatusRuntimeException ex) {
throw new IOException(ex);
}
}
@Override
@ -717,6 +845,7 @@ public class CoreGrpcClient implements ICoreClient {
.setSession(sessionId)
.setId(node.getId())
.build();
try {
CoreProto.GetWlanConfigResponse response = blockingStub.getWlanConfig(request);
Map<String, String> protoConfig = new HashMap<>();
for (CoreProto.ConfigGroup group : response.getGroupsList()) {
@ -731,6 +860,9 @@ public class CoreGrpcClient implements ICoreClient {
config.setJitter(protoConfig.get("jitter"));
config.setRange(protoConfig.get("range"));
return config;
} catch (StatusRuntimeException ex) {
throw new IOException(ex);
}
}
@Override
@ -746,8 +878,12 @@ public class CoreGrpcClient implements ICoreClient {
.setId(node.getId())
.putAllConfig(protoConfig)
.build();
try {
CoreProto.SetWlanConfigResponse response = blockingStub.setWlanConfig(request);
return response.getResult();
} catch (StatusRuntimeException ex) {
throw new IOException(ex);
}
}
@Override
@ -760,6 +896,7 @@ public class CoreGrpcClient implements ICoreClient {
public Map<Integer, MobilityConfig> getMobilityConfigs() throws IOException {
CoreProto.GetMobilityConfigsRequest request = CoreProto.GetMobilityConfigsRequest.newBuilder()
.setSession(sessionId).build();
try {
CoreProto.GetMobilityConfigsResponse response = blockingStub.getMobilityConfigs(request);
Map<Integer, MobilityConfig> mobilityConfigs = new HashMap<>();
@ -784,6 +921,9 @@ public class CoreGrpcClient implements ICoreClient {
mobilityConfigs.put(nodeId, mobilityConfig);
}
return mobilityConfigs;
} catch (StatusRuntimeException ex) {
throw new IOException(ex);
}
}
@Override
@ -804,8 +944,12 @@ public class CoreGrpcClient implements ICoreClient {
.setId(node.getId())
.putAllConfig(protoConfig)
.build();
try {
CoreProto.SetMobilityConfigResponse response = blockingStub.setMobilityConfig(request);
return response.getResult();
} catch (StatusRuntimeException ex) {
throw new IOException(ex);
}
}
@Override
@ -814,6 +958,7 @@ public class CoreGrpcClient implements ICoreClient {
.setSession(sessionId)
.setId(node.getId())
.build();
try {
CoreProto.GetMobilityConfigResponse response = blockingStub.getMobilityConfig(request);
Map<String, String> protoConfig = new HashMap<>();
for (CoreProto.ConfigGroup group : response.getGroupsList()) {
@ -831,6 +976,9 @@ public class CoreGrpcClient implements ICoreClient {
config.setStopScript(protoConfig.get("script_stop"));
config.setMap(protoConfig.get("map"));
return config;
} catch (StatusRuntimeException ex) {
throw new IOException(ex);
}
}
@Override
@ -840,8 +988,12 @@ public class CoreGrpcClient implements ICoreClient {
.setId(node.getId())
.setAction(CoreProto.MobilityAction.valueOf(action))
.build();
try {
CoreProto.MobilityActionResponse response = blockingStub.mobilityAction(request);
return response.getResult();
} catch (StatusRuntimeException ex) {
throw new IOException(ex);
}
}
@Override
@ -849,6 +1001,7 @@ public class CoreGrpcClient implements ICoreClient {
CoreProto.GetSessionLocationRequest request = CoreProto.GetSessionLocationRequest.newBuilder()
.setId(sessionId)
.build();
try {
CoreProto.GetSessionLocationResponse response = blockingStub.getSessionLocation(request);
LocationConfig config = new LocationConfig();
config.setScale((double) response.getScale());
@ -859,6 +1012,9 @@ public class CoreGrpcClient implements ICoreClient {
config.getLocation().setLongitude((double) response.getPosition().getLon());
config.getLocation().setAltitude((double) response.getPosition().getAlt());
return config;
} catch (StatusRuntimeException ex) {
throw new IOException(ex);
}
}
@Override
@ -887,7 +1043,11 @@ public class CoreGrpcClient implements ICoreClient {
if (config.getLocation().getAltitude() != null) {
positionBuilder.setAlt(config.getLocation().getAltitude().floatValue());
}
try {
CoreProto.SetSessionLocationResponse response = blockingStub.setSessionLocation(builder.build());
return response.getResult();
} catch (StatusRuntimeException ex) {
throw new IOException(ex);
}
}
}