refactored out private module of JobServServer into its own module. got ssl code building
This commit is contained in:
parent
c855151af8
commit
f45a96c1e0
3 changed files with 79 additions and 65 deletions
|
|
@ -41,7 +41,7 @@ dependencies {
|
||||||
compile 'org.glassfish:javax.annotation:10.0-b28'
|
compile 'org.glassfish:javax.annotation:10.0-b28'
|
||||||
|
|
||||||
// grpc stuff
|
// grpc stuff
|
||||||
compile "io.grpc:grpc-netty-shaded:${grpcVersion}"
|
compile "io.grpc:grpc-netty:${grpcVersion}"
|
||||||
compile "io.grpc:grpc-protobuf:${grpcVersion}"
|
compile "io.grpc:grpc-protobuf:${grpcVersion}"
|
||||||
compile "io.grpc:grpc-stub:${grpcVersion}"
|
compile "io.grpc:grpc-stub:${grpcVersion}"
|
||||||
compile 'io.netty:netty-tcnative-boringssl-static:2.0.22.Final'
|
compile 'io.netty:netty-tcnative-boringssl-static:2.0.22.Final'
|
||||||
|
|
|
||||||
|
|
@ -10,13 +10,13 @@ package JobServ;
|
||||||
|
|
||||||
import io.grpc.Server;
|
import io.grpc.Server;
|
||||||
import io.grpc.ServerBuilder;
|
import io.grpc.ServerBuilder;
|
||||||
import io.grpc.stub.StreamObserver;
|
|
||||||
import io.grpc.netty.GrpcSslContexts;
|
import io.grpc.netty.GrpcSslContexts;
|
||||||
import io.grpc.netty.NettyServerBuilder;
|
import io.grpc.netty.NettyServerBuilder;
|
||||||
import io.netty.handler.ssl.ClientAuth;
|
import io.netty.handler.ssl.ClientAuth;
|
||||||
import io.netty.handler.ssl.SslContextBuilder;
|
import io.netty.handler.ssl.SslContextBuilder;
|
||||||
import io.netty.handler.ssl.SslProvider;
|
import io.netty.handler.ssl.SslProvider;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
|
|
@ -53,12 +53,13 @@ public class JobServServer {
|
||||||
sslClientContextBuilder.clientAuth(ClientAuth.REQUIRE);
|
sslClientContextBuilder.clientAuth(ClientAuth.REQUIRE);
|
||||||
|
|
||||||
return GrpcSslContexts.configure(sslClientContextBuilder);
|
return GrpcSslContexts.configure(sslClientContextBuilder);
|
||||||
|
}
|
||||||
|
|
||||||
// starts the GRPC API Server
|
// starts the GRPC API Server
|
||||||
private void start() throws IOException {
|
private void start() throws IOException {
|
||||||
// TODO: this should be passed in from a configuration manager
|
// TODO: this should be passed in from a configuration manager
|
||||||
server = ServerBuilder.forPort(this.port)
|
server = NettyServerBuilder.forPort(port)
|
||||||
.addService(new ShellServerImpl())
|
.addService(new ShellServerService())
|
||||||
.sslContext(getSslContextBuilder().build())
|
.sslContext(getSslContextBuilder().build())
|
||||||
.build()
|
.build()
|
||||||
.start();
|
.start();
|
||||||
|
|
@ -90,7 +91,7 @@ public class JobServServer {
|
||||||
|
|
||||||
// Main function. starts GRPC server and spins until server is shutdown
|
// Main function. starts GRPC server and spins until server is shutdown
|
||||||
public static void main(String[] args) throws IOException, InterruptedException {
|
public static void main(String[] args) throws IOException, InterruptedException {
|
||||||
int port = 8448; // TODO: port and key/cert files should be handled by a config manager
|
int port = 8448; // TODO: port and key/cert files should be handled by a config manager
|
||||||
|
|
||||||
if(args.length < 3) {
|
if(args.length < 3) {
|
||||||
System.out.println("Usage: ./jobserv-server certchain privatekey truststore");
|
System.out.println("Usage: ./jobserv-server certchain privatekey truststore");
|
||||||
|
|
@ -101,64 +102,4 @@ public class JobServServer {
|
||||||
server.start();
|
server.start();
|
||||||
server.blockUntilShutdown();
|
server.blockUntilShutdown();
|
||||||
}
|
}
|
||||||
|
|
||||||
// wrap around stub code generated by GRPC
|
|
||||||
static class ShellServerImpl extends ShellServerGrpc.ShellServerImplBase {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void getStatus(PIDMessage request,
|
|
||||||
StreamObserver<StatusMessage> responder) {
|
|
||||||
// TODO: Implement job controller, check request type, do the thing
|
|
||||||
StatusMessage reply = StatusMessage.newBuilder()
|
|
||||||
.setIsRunning(true)
|
|
||||||
.build();
|
|
||||||
responder.onNext(reply);
|
|
||||||
responder.onCompleted();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void getOutput(PIDMessage request,
|
|
||||||
StreamObserver<OutputMessage> responder) {
|
|
||||||
// TODO: Implement job controller, get output, do the thing
|
|
||||||
OutputMessage reply = OutputMessage.newBuilder()
|
|
||||||
.setOutput("test data")
|
|
||||||
.build();
|
|
||||||
responder.onNext(reply);
|
|
||||||
responder.onCompleted();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void newJob(NewJobMessage request,
|
|
||||||
StreamObserver<PIDMessage> responder) {
|
|
||||||
// TODO: Implement job controller, Start Job, do the thing
|
|
||||||
PIDMessage reply = PIDMessage.newBuilder()
|
|
||||||
.setPid(-1)
|
|
||||||
.build();
|
|
||||||
responder.onNext(reply);
|
|
||||||
responder.onCompleted();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void getReturn(PIDMessage request,
|
|
||||||
StreamObserver<ReturnMessage> responder) {
|
|
||||||
// TODO: Implement job controller, get return code
|
|
||||||
ReturnMessage reply = ReturnMessage.newBuilder()
|
|
||||||
.setProcessReturnCode(277)
|
|
||||||
.build();
|
|
||||||
responder.onNext(reply);
|
|
||||||
responder.onCompleted();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void killJob(PIDMessage request,
|
|
||||||
StreamObserver<StatusMessage> responder) {
|
|
||||||
// TODO: implement job controller, do the thing
|
|
||||||
// TODO: kill job here
|
|
||||||
StatusMessage reply = StatusMessage.newBuilder()
|
|
||||||
.setIsRunning(false)
|
|
||||||
.build();
|
|
||||||
responder.onNext(reply);
|
|
||||||
responder.onCompleted();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
73
src/main/java/JobServ/ShellServerService.java
Normal file
73
src/main/java/JobServ/ShellServerService.java
Normal file
|
|
@ -0,0 +1,73 @@
|
||||||
|
/*
|
||||||
|
* ShellServerService
|
||||||
|
*
|
||||||
|
* v1.0
|
||||||
|
*
|
||||||
|
* May 18, 2019
|
||||||
|
*/
|
||||||
|
|
||||||
|
package JobServ;
|
||||||
|
import io.grpc.stub.StreamObserver;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The ShellServerService wraps around the protobuf API
|
||||||
|
* Implements API endpoints
|
||||||
|
*/
|
||||||
|
class ShellServerService extends ShellServerGrpc.ShellServerImplBase {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getStatus(PIDMessage request,
|
||||||
|
StreamObserver<StatusMessage> responder) {
|
||||||
|
// TODO: Implement job controller, check request type, do the thing
|
||||||
|
StatusMessage reply = StatusMessage.newBuilder()
|
||||||
|
.setIsRunning(true)
|
||||||
|
.build();
|
||||||
|
responder.onNext(reply);
|
||||||
|
responder.onCompleted();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getOutput(PIDMessage request,
|
||||||
|
StreamObserver<OutputMessage> responder) {
|
||||||
|
// TODO: Implement job controller, get output, do the thing
|
||||||
|
OutputMessage reply = OutputMessage.newBuilder()
|
||||||
|
.setOutput("test data")
|
||||||
|
.build();
|
||||||
|
responder.onNext(reply);
|
||||||
|
responder.onCompleted();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void newJob(NewJobMessage request,
|
||||||
|
StreamObserver<PIDMessage> responder) {
|
||||||
|
// TODO: Implement job controller, Start Job, do the thing
|
||||||
|
PIDMessage reply = PIDMessage.newBuilder()
|
||||||
|
.setPid(-1)
|
||||||
|
.build();
|
||||||
|
responder.onNext(reply);
|
||||||
|
responder.onCompleted();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getReturn(PIDMessage request,
|
||||||
|
StreamObserver<ReturnMessage> responder) {
|
||||||
|
// TODO: Implement job controller, get return code
|
||||||
|
ReturnMessage reply = ReturnMessage.newBuilder()
|
||||||
|
.setProcessReturnCode(277)
|
||||||
|
.build();
|
||||||
|
responder.onNext(reply);
|
||||||
|
responder.onCompleted();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void killJob(PIDMessage request,
|
||||||
|
StreamObserver<StatusMessage> responder) {
|
||||||
|
// TODO: implement job controller, do the thing
|
||||||
|
// TODO: kill job here
|
||||||
|
StatusMessage reply = StatusMessage.newBuilder()
|
||||||
|
.setIsRunning(false)
|
||||||
|
.build();
|
||||||
|
responder.onNext(reply);
|
||||||
|
responder.onCompleted();
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue