Shawn, thank you. This was exactly what I was looking for. 

I am already using SolrJ, so the follow two lines did the job:

ZkConfigManager configManager = new 
ZkConfigManager(cloudSolrClient.getZkStateReader().getZkClient());
configManager.uploadConfigDir(Paths.get(configPath), configName);

Thanks


Bosco





On 4/6/16, 5:02 PM, "Shawn Heisey" <apa...@elyograg.org> wrote:

>On 4/6/2016 3:26 PM, Don Bosco Durai wrote:
>> I want to automate the entire process from my Java process which is not 
>> running on any of the servers were SolrCloud is running. In short, I don’t 
>> have access to bin/solr or server/scripts/cloud-scripts, etc from my 
>> application. So I was wondering if there were any way, like uploading a zip 
>> with the configs (schema.xml, solrconfig.xml, etc.). One workaround I can 
>> thinking is of making direct zookeeper calls.
>
>If you're using a dependency management system like maven or ivy, you
>could probably request solr-core, which would let you use ZkCLI or
>ZkConfigManager directly in your own code.  That would be a VERY
>significant increase in the size of your app, in the form of dependent
>jars.  Although this might work, it's a sledgehammer approach.  There
>are 72 direct dependencies for 5.5.0, and some of those have further
>dependencies.  Some of solr-core's dependencies are quite large.
>
>http://mvnrepository.com/artifact/org.apache.solr/solr-core
>
>You could look at the code for ZkConfigManager and the classes it uses,
>see how they use zookeeper to send configs, and directly implement the
>zookeeper calls required.  Solr implements a wrapper around the
>zookeeper client called SolrZkClient, a wrapping that you might want to
>strip away, so you don't need the solr-core jar and its dependencies. 
>This approach requires the most work.
>
>The way the class inheritance is arranged is terrible for user code that
>wants to do SolrCloud config manipulation.  I'll see if I can come up
>with something to fix that, but it's not going to happen immediately.
>
>An option that approaches the problem from another direction: Copy
>WEB-INF/lib and other things (like log4j.properties and the logging jars
>in server/lib/ext) to somewhere on your client system and run ZkCLI
>directly as an external process from your own code, just like the zkcli
>script does ... or possibly even using a modified zkcli script.  This is
>not as clean as a code-based solution, but it would be relatively easy
>to implement.
>
>Thanks,
>Shawn
>

Reply via email to