Hi Andrew,

thanks for your fast response!


    On Thu, Aug 16, 2018 at 10:38:15AM +0000, Meyer, Carsten wrote:
    > We are trying to extend the Blob Store "filesystem" in such a way that 
Container are tied to a filesystem location instead of being placed a subdir of 
the basedir.
    > 
    > Our first approach was based on symbolic links. Here, each container is a 
symblic link pointing from the basedir subdirectory to the intended target. The 
advantage of this approach is that it is transparent to jclouds. Unfortunately, 
it is rather tricky to administer in Windows OS (the unix approach of symbolic 
links is straight-fowrward). Since we are running under Windows as well as 
Unix, this approach is not feasible.
    
    I have little background in Windows but does `mklink /d src dst` solve
    this?

We can create symbolic links in this way, that works fine. Our problem is that 
symbolic links in Windows have a complexity that is higher than in Unix 
systems. Windows requires certain rights foe users to be able to create 
symbolic links. There is also a difference between remote and local links. 
Since our application is running on premise at the customer, administration of 
this complexity is not feasible. Also, there are still JDK bugs concering 
symbolic links under Windows but we were able to work around them.
    
    > Our alternative right implements the handling of the container/filesystem 
relationship.
    > 
    > We extended "FilesystemStorageStrategyImpl" by overriding the method 
"buildPathStartingFromBaseDir" in such a way that that path is built with the 
right container integration. The methods "deleteContainer" and 
"createContainer" are not needed in our use case.
    
    I wonder if creating a filesystem BlobStore per container could also
    address your use case?  These instances have little overhead and may
    give you the control you want.
    
We created that blob store and it basically works fine.

    > The implementation is provided by our own "BlobStoreContextModul" so that 
within our application we only need to change the Provider ID.
    > 
    > BlobStoreContext context = 
ContextBuilder.newBuilder("containerperfilesystem")
    >         .overrides(properties)
    >         .buildView(BlobStoreContext.class);
    > 
    > Unfortunately we do not have experience with Guice, our application is 
Spring-based, and we have two questions:
    > 
    > 1) Can the binding that is defined in the BlobStoreContextModul be 
overriden with our own strategy implementation, e.g. through the ContextBuilder?
    
    With the caveat that these are not public or stable interfaces, you
    should be able to extend FilesystemBlobStoreContextModule with a
    configure method which stubs in your strategy class.  Then override the
    builder via:
    
        ContextBuilder.newBuilder("filesystem")
            .defaultModule(CustomStrategy.class)
            .build();
    
So every Java class can be inserted via ."defaultModule()" - or maybe even 
instances?
Currently (2.1.0) I cannot see this method in the ContextBuilder.
Or am I misunderstanding something?

    > 2) Since our application is spring-based we are looking for a clean way 
to inject our own Container-Filesystem-Configuration from our application into 
the Guice binding or have the Guice object accessible from our application. Is 
this possible?
    
    Sorry I cannot help with Spring issues.
    
Sorry, but the question was misleading.
Since our application is non-guice-based we are looking for a clean way to 
inject our own Container Configuration from our application into the Guice 
binding or have the Guice object accessible from our application. Is this 
possible?

Thanks again and best regards,
Carsten


Reply via email to