[#1] init sdk example

This commit is contained in:
Ori Bruk 2025-01-20 17:30:18 +03:00
commit 8404943e0f
15 changed files with 403 additions and 0 deletions

39
.gitignore vendored Normal file
View 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
View 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>

View 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();
}
}

View file

@ -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();
}
}

View 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());
}
}
}
}

View 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);
}
}

View 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
}
}

View file

@ -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));
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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();
}
}

View file

@ -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);
}
}
}

View file

@ -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);
}
}

View file

@ -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;
}
}
}

View file

@ -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);
}
}