forked from TrueCloudLab/frostfs-sdk-java
[#1] Define SDK structure, add operations with container and object
Signed-off-by: Ori Bruk <o.bruk@yadro.com>
This commit is contained in:
parent
04bf8249c2
commit
2481774545
80 changed files with 6315 additions and 0 deletions
89
client/src/main/java/info/FrostFS/sdk/GrpcClient.java
Normal file
89
client/src/main/java/info/FrostFS/sdk/GrpcClient.java
Normal file
|
@ -0,0 +1,89 @@
|
|||
package info.FrostFS.sdk;
|
||||
|
||||
import frostFS.container.ContainerServiceGrpc;
|
||||
import frostFS.netmap.NetmapServiceGrpc;
|
||||
import frostFS.object.ObjectServiceGrpc;
|
||||
import frostFS.session.SessionServiceGrpc;
|
||||
import io.grpc.Channel;
|
||||
import io.grpc.netty.GrpcSslContexts;
|
||||
import io.grpc.netty.NettyChannelBuilder;
|
||||
import io.netty.handler.ssl.util.InsecureTrustManagerFactory;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import javax.net.ssl.SSLException;
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
|
||||
public class GrpcClient {
|
||||
private static final Logger log = LoggerFactory.getLogger(GrpcClient.class);
|
||||
|
||||
private final ContainerServiceGrpc.ContainerServiceBlockingStub containerServiceBlockingClient;
|
||||
private final NetmapServiceGrpc.NetmapServiceBlockingStub netmapServiceBlockingClient;
|
||||
private final ObjectServiceGrpc.ObjectServiceBlockingStub objectServiceBlockingClient;
|
||||
private final ObjectServiceGrpc.ObjectServiceStub objectServiceClient;
|
||||
private final SessionServiceGrpc.SessionServiceBlockingStub sessionServiceBlockingClient;
|
||||
|
||||
public GrpcClient(String host) {
|
||||
Channel channel = initGrpcChannel(host);
|
||||
this.containerServiceBlockingClient = ContainerServiceGrpc.newBlockingStub(channel);
|
||||
this.netmapServiceBlockingClient = NetmapServiceGrpc.newBlockingStub(channel);
|
||||
this.objectServiceBlockingClient = ObjectServiceGrpc.newBlockingStub(channel);
|
||||
this.objectServiceClient = ObjectServiceGrpc.newStub(channel);
|
||||
this.sessionServiceBlockingClient = SessionServiceGrpc.newBlockingStub(channel);
|
||||
}
|
||||
|
||||
public static Channel initGrpcChannel(String host) {
|
||||
URI uri;
|
||||
try {
|
||||
uri = new URI(host);
|
||||
} catch (URISyntaxException exp) {
|
||||
var message = String.format("Host %s has invalid format. Error: %s", host, exp.getMessage());
|
||||
log.error(message);
|
||||
throw new IllegalArgumentException(message);
|
||||
}
|
||||
|
||||
var channelBuilder = NettyChannelBuilder.forAddress(uri.getHost(), uri.getPort())
|
||||
.usePlaintext();
|
||||
|
||||
switch (uri.getScheme()) {
|
||||
case "https":
|
||||
try {
|
||||
channelBuilder.sslContext(
|
||||
GrpcSslContexts.forClient().trustManager(InsecureTrustManagerFactory.INSTANCE).build()
|
||||
);
|
||||
} catch (SSLException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
break;
|
||||
case "http":
|
||||
break;
|
||||
default:
|
||||
var message = String.format("Host %s has invalid URI scheme: %s", host, uri.getScheme());
|
||||
log.error(message);
|
||||
throw new IllegalArgumentException(message);
|
||||
}
|
||||
|
||||
return channelBuilder.build();
|
||||
}
|
||||
|
||||
public ContainerServiceGrpc.ContainerServiceBlockingStub getContainerServiceBlockingClient() {
|
||||
return containerServiceBlockingClient;
|
||||
}
|
||||
|
||||
public NetmapServiceGrpc.NetmapServiceBlockingStub getNetmapServiceBlockingClient() {
|
||||
return netmapServiceBlockingClient;
|
||||
}
|
||||
|
||||
public ObjectServiceGrpc.ObjectServiceBlockingStub getObjectServiceBlockingClient() {
|
||||
return objectServiceBlockingClient;
|
||||
}
|
||||
|
||||
public ObjectServiceGrpc.ObjectServiceStub getObjectServiceClient() {
|
||||
return objectServiceClient;
|
||||
}
|
||||
|
||||
public SessionServiceGrpc.SessionServiceBlockingStub getSessionServiceBlockingClient() {
|
||||
return sessionServiceBlockingClient;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue