https://github.com/gluster/glusterfs-java-filesystem
GlusterFS for Java
https://github.com/gluster/glusterfs-java-filesystem
filesystem glusterfs java nio storage storage-provider
Last synced: 8 months ago
JSON representation
GlusterFS for Java
- Host: GitHub
- URL: https://github.com/gluster/glusterfs-java-filesystem
- Owner: gluster
- License: bsd-3-clause
- Created: 2013-06-30T17:35:25.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2017-02-12T07:59:34.000Z (over 8 years ago)
- Last Synced: 2023-12-18T16:33:29.435Z (almost 2 years ago)
- Topics: filesystem, glusterfs, java, nio, storage, storage-provider
- Language: Java
- Size: 387 KB
- Stars: 57
- Watchers: 14
- Forks: 44
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# glusterfs-java-filesystem
This project aims to be a complete implementation of a Java7/NIO.2 File System Provider backed by
[GlusterFS](http://www.gluster.org/) via [libgfapi-jni](https://github.com/semiosis/libgfapi-jni)[](https://travis-ci.org/semiosis/glusterfs-java-filesystem)
[](http://sonar.peircean.com/dashboard/index/com.peircean.glusterfs:glusterfs-java-filesystem)
[Test Coverage & Code Quality](http://sonar.peircean.com/dashboard/index/com.peircean.glusterfs:glusterfs-java-filesystem)
Please let me know if you use this project, even if you're just checking it out, I'd like to hear from you.
I prefer to be contacted on IRC, Twitter, or a Github issue. You can find me, semiosis, in #gluster on Freenode IRC. My twitter handle is @pragmaticism.
Thanks!
# Use
## Adding to your maven project
com.peircean.glusterfs
glusterfs-java-filesystem
1.0.4
## Adding to your non-maven project
The maven shade plugin can build a unified (shaded) JAR suitable for dropping in to the classpath of any JVM application.
You can build a "shaded" JAR by cloning the project and running the following command in the glusterfs-java-filesystem subdirectory:
cd glusterfs-java-filesystem
mvn package shade:shadeMaven will report the path of this shaded JAR. You can run `export CLASSPATH=` in a terminal before running your other application.
Contact me (on IRC, Twitter, or in a Github issue) if you need help obtaining a JAR, if you can't, or don't want to, build it with maven yourself.
## Access GlusterFS volumes with the NIO.2 API
Once this library is in your classpath all you need to do in your code is access a GlusterFS URI, for example
gluster://server:volume/path
## Example usage
A Vagrantfile in the root of this repository sets up a VM with a volume called *foo* at IP address *172.31.31.31* on a
private network.The [Example.java](glusterfs-java-filesystem-example/src/main/java/com/peircean/glusterfs/example/Example.java) file in
the glusterfs-java-filesystem-example project provides a demonstration of the capabilities of this project from a high
level consumer's point of view, it connects to the volume on the vagrant VM.To run:
cd glusterfs-java-filesystem-example
vagrant up
mvn exec:exec# Roadmap
### TODO:
- Replace Example program with formal integration test suite
- Align project versions with glusterfs (this project & libgfapi-jni)
- Update watch service to use [libgfchangelog](https://github.com/gluster/glusterfs/blob/master/xlators/features/changelog/lib/examples/c/get-changes.c) (instead of polling)
- Finish attribute support
Owner/group names & ability to change
More ways to set permissions
- Finish integration testing for advanced synchronous file IO (reading/writing portion of file)
- Asychronous file I/O
- Better error reporting & handling (utilize UtilJNI.strerror() as part of IOException throws)
- Finish readSymbolicLink unit tests
- Publish test coverage report to Coveralls.io
[Blocked](https://github.com/trautonen/coveralls-maven-plugin/issues/36) due to use of Atlassian Clover
- Create hard links### Completed:
- Connect to a GlusterFS volume using the NIO.2 API
- Basic synchronous file I/O
Read the contents of a file all at once
Write a chunk of bytes to a file all at once
- File attributes
See owner/group id, size, permissions, and last modified timestamp on files and directories
Set permissions
- Filesystem/volume stats
See the total, free, and usable bytes in a volume
- Directory listing (with filtering)
- Move/rename files
- Watch files for changes
Complete except for GlusterWatchKeyTest, in progress
- Create & Read symlinks (read tests incomplete)
- Publish test coverage & code quality reports to [SonarQube](http://sonar.peircean.com/dashboard/index/com.peircean.glusterfs:glusterfs-java-filesystem)
- Delete files
- Copy files
- Advanced synchronous file IO# Contributing/Development
I'd appreciate your help with this project. If you have any feedback at all please get in touch. I'm interested in everything from gripes to pull requests.
# Project License
Until further notice (made here and in LICENSE.txt) this project is licensed under the terms of the
3-clause BSD license, as written in LICENSE.txt.The licensing is likely to change in the near future as the project matures.
# Acknowledgements
- May G. & Ian H. for their hard work & dedication to improving this project.
- Atlassian for providing a free license for their most excellent Java code quality analyzer, [Clover](https://www.atlassian.com/software/clover/overview).
- All the open source projects we depend on: [GlusterFS](http://gluster.org/), [HawtJNI](https://github.com/fusesource/hawtjni), [Lombok](http://projectlombok.org/), [JUnit](http://junit.org/), [Mockito](https://code.google.com/p/mockito/), [PowerMock](https://code.google.com/p/powermock/), [TestNG](http://testng.org/doc/index.html), [sonarqube](http://www.sonarqube.org/), [Hadoop](http://hadoop.apache.org/) (whose Glob to Regex converter we borrowed), [Maven](http://maven.apache.org/) and all the Maven plugins, and of course [Java](https://www.java.com/).