[#1] init sdk example
This commit is contained in:
commit
8404943e0f
15 changed files with 403 additions and 0 deletions
39
.gitignore
vendored
Normal file
39
.gitignore
vendored
Normal file
|
@ -0,0 +1,39 @@
|
|||
target/
|
||||
!.mvn/wrapper/maven-wrapper.jar
|
||||
!**/src/main/**/target/
|
||||
!**/src/test/**/target/
|
||||
|
||||
### IntelliJ IDEA ###
|
||||
.idea/modules.xml
|
||||
.idea
|
||||
.idea/jarRepositories.xml
|
||||
.idea/compiler.xml
|
||||
.idea/libraries/
|
||||
*.iws
|
||||
*.iml
|
||||
*.ipr
|
||||
|
||||
### Eclipse ###
|
||||
.apt_generated
|
||||
.classpath
|
||||
.factorypath
|
||||
.project
|
||||
.settings
|
||||
.springBeans
|
||||
.sts4-cache
|
||||
|
||||
### NetBeans ###
|
||||
/nbproject/private/
|
||||
/nbbuild/
|
||||
/dist/
|
||||
/nbdist/
|
||||
/.nb-gradle/
|
||||
build/
|
||||
!**/src/main/**/build/
|
||||
!**/src/test/**/build/
|
||||
|
||||
### VS Code ###
|
||||
.vscode/
|
||||
|
||||
### Mac OS ###
|
||||
.DS_Store
|
30
pom.xml
Normal file
30
pom.xml
Normal file
|
@ -0,0 +1,30 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-parent</artifactId>
|
||||
<version>2.3.4.RELEASE</version>
|
||||
<relativePath/>
|
||||
</parent>
|
||||
|
||||
<groupId>info.frostfs.sdk</groupId>
|
||||
<artifactId>frostfs-sdk-java-example</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
|
||||
<properties>
|
||||
<maven.compiler.source>11</maven.compiler.source>
|
||||
<maven.compiler.target>11</maven.compiler.target>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>info.frostfs.sdk</groupId>
|
||||
<artifactId>client</artifactId>
|
||||
<version>0.2.0</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
30
src/main/java/info/frostfs/sdk/Main.java
Normal file
30
src/main/java/info/frostfs/sdk/Main.java
Normal file
|
@ -0,0 +1,30 @@
|
|||
package info.frostfs.sdk;
|
||||
|
||||
import info.frostfs.sdk.examples.ContainerExample;
|
||||
import info.frostfs.sdk.examples.NetmapExample;
|
||||
import info.frostfs.sdk.examples.ObjectExample;
|
||||
import info.frostfs.sdk.examples.PoolExample;
|
||||
import info.frostfs.sdk.jdo.ClientSettings;
|
||||
|
||||
public class Main {
|
||||
public static void main(String[] args) {
|
||||
//INIT
|
||||
ClientSettings clientSettings = new ClientSettings(
|
||||
"KwHDAJ66o8FoLBjVbjP2sWBmgBMGjt7Vv4boA7xQrBoAYBE397Aq",
|
||||
"http://localhost:8080"
|
||||
);
|
||||
FrostFSClient frostFSClient = new FrostFSClient(clientSettings);
|
||||
|
||||
//NETMAP
|
||||
NetmapExample.testNetmap(frostFSClient);
|
||||
|
||||
//CONTAINER
|
||||
ContainerExample.testContainer(frostFSClient);
|
||||
|
||||
//OBJECT
|
||||
ObjectExample.testObject(frostFSClient);
|
||||
|
||||
//POOL
|
||||
PoolExample.testPool();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
package info.frostfs.sdk.examples;
|
||||
|
||||
import info.frostfs.sdk.FrostFSClient;
|
||||
import info.frostfs.sdk.dto.container.Container;
|
||||
import info.frostfs.sdk.dto.container.ContainerId;
|
||||
import info.frostfs.sdk.dto.netmap.PlacementPolicy;
|
||||
import info.frostfs.sdk.dto.netmap.Replica;
|
||||
import info.frostfs.sdk.enums.BasicAcl;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class ContainerExample {
|
||||
|
||||
public static void testContainer(FrostFSClient frostFSClient) {
|
||||
//LIST
|
||||
List<ContainerId> containerIds = frostFSClient.listContainers();
|
||||
|
||||
//CREATE
|
||||
var placementPolicy = new PlacementPolicy(new Replica[]{new Replica(1)}, true);
|
||||
var containerId = frostFSClient.createContainer(new Container(BasicAcl.PUBLIC_RW, placementPolicy));
|
||||
|
||||
//GET
|
||||
var container = frostFSClient.getContainer(containerId);
|
||||
List<ContainerId> updateContainerIds = frostFSClient.listContainers();
|
||||
|
||||
//DELETE
|
||||
frostFSClient.deleteContainer(containerId);
|
||||
|
||||
List<ContainerId> updateContainerIds2 = frostFSClient.listContainers();
|
||||
}
|
||||
}
|
26
src/main/java/info/frostfs/sdk/examples/NetmapExample.java
Normal file
26
src/main/java/info/frostfs/sdk/examples/NetmapExample.java
Normal file
|
@ -0,0 +1,26 @@
|
|||
package info.frostfs.sdk.examples;
|
||||
|
||||
import info.frostfs.sdk.FrostFSClient;
|
||||
import info.frostfs.sdk.Helper;
|
||||
|
||||
public class NetmapExample {
|
||||
|
||||
public static void testNetmap(FrostFSClient frostFSClient) {
|
||||
var netmap = frostFSClient.getNetmapSnapshot();
|
||||
System.out.printf("Epoch: %s%n", netmap.getEpoch());
|
||||
System.out.println("Nodes:");
|
||||
var i = 0;
|
||||
for (var nodeInfo : netmap.getNodeInfoCollection()) {
|
||||
System.out.printf(" Node %s:%n", i++);
|
||||
System.out.printf(" Version: %s%n", nodeInfo.getVersion());
|
||||
System.out.printf(" State: %s%n", nodeInfo.getState());
|
||||
System.out.printf(" PublicKey: %s%n", Helper.getHexString(nodeInfo.getPublicKey()));
|
||||
System.out.printf(" Address: %s%n", nodeInfo.getAddresses().get(0));
|
||||
System.out.println(" Attributes:");
|
||||
|
||||
for (var attr : nodeInfo.getAttributes().entrySet()) {
|
||||
System.out.printf(" %s: %s%n", attr.getKey(), attr.getValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
79
src/main/java/info/frostfs/sdk/examples/ObjectExample.java
Normal file
79
src/main/java/info/frostfs/sdk/examples/ObjectExample.java
Normal file
|
@ -0,0 +1,79 @@
|
|||
package info.frostfs.sdk.examples;
|
||||
|
||||
import info.frostfs.sdk.ArrayHelper;
|
||||
import info.frostfs.sdk.FrostFSClient;
|
||||
import info.frostfs.sdk.dto.container.Container;
|
||||
import info.frostfs.sdk.dto.netmap.PlacementPolicy;
|
||||
import info.frostfs.sdk.dto.netmap.Replica;
|
||||
import info.frostfs.sdk.dto.object.ObjectAttribute;
|
||||
import info.frostfs.sdk.dto.object.ObjectFrostFS;
|
||||
import info.frostfs.sdk.dto.object.ObjectHeader;
|
||||
import info.frostfs.sdk.dto.object.ObjectId;
|
||||
import info.frostfs.sdk.enums.BasicAcl;
|
||||
import info.frostfs.sdk.enums.ObjectType;
|
||||
import info.frostfs.sdk.exceptions.ResponseFrostFSException;
|
||||
import info.frostfs.sdk.jdo.PutObjectParameters;
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
|
||||
import static java.util.Objects.isNull;
|
||||
|
||||
public class ObjectExample {
|
||||
|
||||
public static void testObject(FrostFSClient frostFSClient) {
|
||||
var placementPolicy = new PlacementPolicy(new Replica[]{new Replica(1)}, true);
|
||||
var containerId = frostFSClient.createContainer(new Container(BasicAcl.PUBLIC_RW, placementPolicy));
|
||||
|
||||
//SEARCH
|
||||
var objects = frostFSClient.searchObjects(containerId);
|
||||
|
||||
//CREATE
|
||||
ObjectId oid;
|
||||
try (FileInputStream file = new FileInputStream("/home/ori/Desktop/DemoExample/cat.jpg")) {
|
||||
var attribute = new ObjectAttribute("Filename", "cat.jpg");
|
||||
var cat = new ObjectHeader(containerId, ObjectType.REGULAR, attribute);
|
||||
var params = new PutObjectParameters(cat, file, false, 1024);
|
||||
|
||||
oid = frostFSClient.putObject(params);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
//GET
|
||||
var newObjects = frostFSClient.searchObjects(containerId);
|
||||
ObjectFrostFS object = frostFSClient.getObject(containerId, oid);
|
||||
|
||||
var reader = object.getObjectReader();
|
||||
var chunk = reader.readChunk();
|
||||
var length = chunk.length;
|
||||
byte[] buffer = null;
|
||||
while (length > 0) {
|
||||
buffer = isNull(buffer) ? chunk : ArrayHelper.concat(buffer, chunk);
|
||||
|
||||
chunk = object.getObjectReader().readChunk();
|
||||
length = ArrayUtils.isEmpty(chunk) ? 0 : chunk.length;
|
||||
}
|
||||
|
||||
try (FileOutputStream fos = new FileOutputStream("/home/ori/Desktop/DemoExample/newCat.jpg")) {
|
||||
fos.write(buffer);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
|
||||
//DELETE
|
||||
newObjects = frostFSClient.searchObjects(containerId);
|
||||
ObjectFrostFS object3 = frostFSClient.getObject(containerId, newObjects.iterator().next());
|
||||
|
||||
|
||||
try {
|
||||
ObjectFrostFS object2 = frostFSClient.getObject(containerId, oid);
|
||||
} catch (ResponseFrostFSException exp) {
|
||||
System.out.println(exp.getMessage());
|
||||
}
|
||||
|
||||
|
||||
frostFSClient.deleteContainer(containerId);
|
||||
}
|
||||
}
|
38
src/main/java/info/frostfs/sdk/examples/PoolExample.java
Normal file
38
src/main/java/info/frostfs/sdk/examples/PoolExample.java
Normal file
|
@ -0,0 +1,38 @@
|
|||
package info.frostfs.sdk.examples;
|
||||
|
||||
import info.frostfs.sdk.dto.container.Container;
|
||||
import info.frostfs.sdk.dto.netmap.PlacementPolicy;
|
||||
import info.frostfs.sdk.dto.netmap.Replica;
|
||||
import info.frostfs.sdk.enums.BasicAcl;
|
||||
import info.frostfs.sdk.jdo.ECDsa;
|
||||
import info.frostfs.sdk.jdo.pool.NodeParameters;
|
||||
import info.frostfs.sdk.jdo.pool.PoolInitParameters;
|
||||
import info.frostfs.sdk.pool.Pool;
|
||||
|
||||
public class PoolExample {
|
||||
|
||||
public static void testPool() {
|
||||
//Init
|
||||
var nodeParam1 = new NodeParameters(1, "http://ip1:8080", 1);
|
||||
var nodeParam2 = new NodeParameters(1, "http://ip2:8080", 1);
|
||||
var nodeParam3 = new NodeParameters(1, "http://ip3:8080", 1);
|
||||
var nodeParam4 = new NodeParameters(1, "http://ip4:8080", 1);
|
||||
|
||||
PoolInitParameters initParameters = new PoolInitParameters();
|
||||
initParameters.setKey(new ECDsa("KwHDAJ66o8FoLBjVbjP2sWBmgBMGjt7Vv4boA7xQrBoAYBE397Aq"));
|
||||
initParameters.setNodeParams(new NodeParameters[]{nodeParam1, nodeParam2, nodeParam3, nodeParam4});
|
||||
|
||||
|
||||
Pool pool = new Pool(initParameters);
|
||||
|
||||
//Dial (Required!)
|
||||
pool.dial();
|
||||
|
||||
//Operations
|
||||
var netmap = pool.getNetmapSnapshot();
|
||||
|
||||
var placementPolicy = new PlacementPolicy(new Replica[]{new Replica(4)}, true);
|
||||
var containerId = pool.createContainer(new Container(BasicAcl.PUBLIC_RW, placementPolicy));
|
||||
//ETC
|
||||
}
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
package info.frostfs.sdk.examples.container;
|
||||
|
||||
import info.frostfs.sdk.FrostFSClient;
|
||||
import info.frostfs.sdk.dto.container.Container;
|
||||
import info.frostfs.sdk.dto.netmap.PlacementPolicy;
|
||||
import info.frostfs.sdk.dto.netmap.Replica;
|
||||
import info.frostfs.sdk.enums.BasicAcl;
|
||||
|
||||
public class ContainerCreate {
|
||||
|
||||
public static void example(FrostFSClient frostFSClient) {
|
||||
var placementPolicy = new PlacementPolicy(new Replica[]{new Replica(1)}, true);
|
||||
var containerId = frostFSClient.createContainer(new Container(BasicAcl.PUBLIC_RW, placementPolicy));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
package info.frostfs.sdk.examples.container;
|
||||
|
||||
import info.frostfs.sdk.FrostFSClient;
|
||||
import info.frostfs.sdk.dto.container.ContainerId;
|
||||
|
||||
public class ContainerDelete {
|
||||
|
||||
public static void example(FrostFSClient frostFSClient, ContainerId containerId) {
|
||||
frostFSClient.deleteContainer(containerId);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
package info.frostfs.sdk.examples.container;
|
||||
|
||||
import info.frostfs.sdk.FrostFSClient;
|
||||
import info.frostfs.sdk.dto.container.ContainerId;
|
||||
|
||||
public class ContainerGet {
|
||||
|
||||
public static void example(FrostFSClient frostFSClient, ContainerId containerId) {
|
||||
var container = frostFSClient.getContainer(containerId);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
package info.frostfs.sdk.examples.container;
|
||||
|
||||
import info.frostfs.sdk.FrostFSClient;
|
||||
import info.frostfs.sdk.dto.container.ContainerId;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class ContainerList {
|
||||
|
||||
public static void example(FrostFSClient frostFSClient) {
|
||||
List<ContainerId> containerIds = frostFSClient.listContainers();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
package info.frostfs.sdk.examples.object;
|
||||
|
||||
import info.frostfs.sdk.FrostFSClient;
|
||||
import info.frostfs.sdk.dto.container.ContainerId;
|
||||
import info.frostfs.sdk.dto.object.ObjectAttribute;
|
||||
import info.frostfs.sdk.dto.object.ObjectHeader;
|
||||
import info.frostfs.sdk.dto.object.ObjectId;
|
||||
import info.frostfs.sdk.enums.ObjectType;
|
||||
import info.frostfs.sdk.jdo.PutObjectParameters;
|
||||
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
|
||||
public class ObjectCreate {
|
||||
|
||||
public static void exampleStream(FrostFSClient frostFSClient, ContainerId containerId) {
|
||||
try (FileInputStream file = new FileInputStream("/home/ori/Desktop/DemoExample/cat.jpg")) {
|
||||
var attribute = new ObjectAttribute("Filename", "cat.jpg");
|
||||
var cat = new ObjectHeader(containerId, ObjectType.REGULAR, attribute);
|
||||
var params = new PutObjectParameters(cat, file, false, 1024);
|
||||
|
||||
ObjectId objectId = frostFSClient.putObject(params);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
package info.frostfs.sdk.examples.object;
|
||||
|
||||
import info.frostfs.sdk.FrostFSClient;
|
||||
import info.frostfs.sdk.dto.container.ContainerId;
|
||||
import info.frostfs.sdk.dto.object.ObjectId;
|
||||
|
||||
public class ObjectDelete {
|
||||
|
||||
public static void example(FrostFSClient frostFSClient, ContainerId containerId, ObjectId objectId) {
|
||||
frostFSClient.deleteObject(containerId, objectId);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
package info.frostfs.sdk.examples.object;
|
||||
|
||||
import info.frostfs.sdk.ArrayHelper;
|
||||
import info.frostfs.sdk.FrostFSClient;
|
||||
import info.frostfs.sdk.dto.container.ContainerId;
|
||||
import info.frostfs.sdk.dto.object.ObjectFrostFS;
|
||||
import info.frostfs.sdk.dto.object.ObjectId;
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
|
||||
import static java.util.Objects.isNull;
|
||||
|
||||
public class ObjectGet {
|
||||
|
||||
public static void exampleStream(FrostFSClient frostFSClient, ContainerId containerId, ObjectId objectId) {
|
||||
ObjectFrostFS object = frostFSClient.getObject(containerId, objectId);
|
||||
|
||||
var reader = object.getObjectReader();
|
||||
var chunk = reader.readChunk();
|
||||
var length = chunk.length;
|
||||
byte[] buffer = null;
|
||||
while (length > 0) {
|
||||
buffer = isNull(buffer) ? chunk : ArrayHelper.concat(buffer, chunk);
|
||||
|
||||
chunk = object.getObjectReader().readChunk();
|
||||
length = ArrayUtils.isEmpty(chunk) ? 0 : chunk.length;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
package info.frostfs.sdk.examples.object;
|
||||
|
||||
import info.frostfs.sdk.FrostFSClient;
|
||||
import info.frostfs.sdk.dto.container.ContainerId;
|
||||
import info.frostfs.sdk.dto.object.ObjectId;
|
||||
|
||||
public class ObjectSearch {
|
||||
|
||||
public static void example(FrostFSClient frostFSClient, ContainerId containerId) {
|
||||
Iterable<ObjectId> objects = frostFSClient.searchObjects(containerId);
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue