http://git-wip-us.apache.org/repos/asf/ambari/blob/8842be0c/ambari-infra/pom.xml ---------------------------------------------------------------------- diff --git a/ambari-infra/pom.xml b/ambari-infra/pom.xml new file mode 100644 index 0000000..a6a6961 --- /dev/null +++ b/ambari-infra/pom.xml @@ -0,0 +1,187 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<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"> + <parent> + <groupId>org.apache.ambari</groupId> + <artifactId>ambari-project</artifactId> + <version>2.0.0.0-SNAPSHOT</version> + <relativePath>../ambari-project</relativePath> + </parent> + <groupId>org.apache.ambari</groupId> + <modelVersion>4.0.0</modelVersion> + <artifactId>ambari-infra</artifactId> + <version>2.0.0.0-SNAPSHOT</version> + <packaging>pom</packaging> + + <properties> + <jdk.version>1.7</jdk.version> + <solr.version>5.5.2</solr.version> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <python.ver>python >= 2.6</python.ver> + <deb.python.ver>python (>= 2.6)</deb.python.ver> + <deb.architecture>amd64</deb.architecture> + <deb.dependency.list>${deb.python.ver}</deb.dependency.list> + </properties> + + <modules> + <module>ambari-infra-assembly</module> + <module>ambari-infra-solr-client</module> + <module>ambari-infra-solr-plugin</module> + </modules> + + <build> + <plugins> + <plugin> + <inherited>false</inherited> + <artifactId>maven-assembly-plugin</artifactId> + <configuration> + <descriptors> + <descriptor>../ambari-project/src/main/assemblies/empty.xml</descriptor> + </descriptors> + </configuration> + <executions> + <execution> + <id>build-tarball</id> + <phase>none</phase> + <goals> + <goal>single</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <configuration> + <skip>${skipSurefireTests}</skip> + <groups>${testcase.groups}</groups> + </configuration> + </plugin> + <plugin> + <artifactId>maven-compiler-plugin</artifactId> + <version>3.2</version> + <configuration> + <source>${jdk.version}</source> + <target>${jdk.version}</target> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-clean-plugin</artifactId> + <configuration> + <filesets> + <fileset> + <directory>${basedir}</directory> + <followSymlinks>false</followSymlinks> + <includes> + <include>**/*.pyc</include> + </includes> + </fileset> + </filesets> + </configuration> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>build-helper-maven-plugin</artifactId> + <version>1.8</version> + <executions> + <execution> + <id>parse-version</id> + <phase>validate</phase> + <goals> + <goal>parse-version</goal> + </goals> + </execution> + <execution> + <id>regex-property</id> + <goals> + <goal>regex-property</goal> + </goals> + <configuration> + <name>ambariVersion</name> + <value>${project.version}</value> + <regex>^([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)(\.|-).*</regex> + <replacement>$1.$2.$3.$4</replacement> + <failIfNoMatch>false</failIfNoMatch> + </configuration> + </execution> + <execution> + <id>parse-package-version</id> + <goals> + <goal>regex-property</goal> + </goals> + <configuration> + <name>package-version</name> + <value>${project.version}</value> + <regex>^([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)(\.|-).*</regex> + <replacement>$1.$2.$3.$4</replacement> + <failIfNoMatch>true</failIfNoMatch> + </configuration> + </execution> + <execution> + <id>parse-package-release</id> + <goals> + <goal>regex-property</goal> + </goals> + <configuration> + <name>package-release</name> + <value>${project.version}</value> + <regex> + ^([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)(\.|-)((([a-zA-Z]+)?([0-9]+))|(SNAPSHOT)).* + </regex> + <replacement>$6</replacement> + <failIfNoMatch>true</failIfNoMatch> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.rat</groupId> + <artifactId>apache-rat-plugin</artifactId> + <configuration> + <excludes> + <exclude>README.md</exclude> + <exclude>**/*.json</exclude> + <exclude>**/*.log</exclude> + <exclude>**/*.txt</exclude> + </excludes> + </configuration> + <executions> + <execution> + <phase>test</phase> + <goals> + <goal>check</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + + <dependencies> + <!-- Dependency in order to annotate unit tests with a category. --> + <dependency> + <groupId>utility</groupId> + <artifactId>utility</artifactId> + <version>1.0.0.0-SNAPSHOT</version> + <scope>test</scope> + </dependency> + </dependencies> + +</project>
http://git-wip-us.apache.org/repos/asf/ambari/blob/8842be0c/ambari-logsearch/ambari-infra-solr-client/build.xml ---------------------------------------------------------------------- diff --git a/ambari-logsearch/ambari-infra-solr-client/build.xml b/ambari-logsearch/ambari-infra-solr-client/build.xml deleted file mode 100644 index a54e336..0000000 --- a/ambari-logsearch/ambari-infra-solr-client/build.xml +++ /dev/null @@ -1,56 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> -<project basedir="." default="build" name="logsearch"> - <property environment="env"/> - <property name="debuglevel" value="source,lines,vars"/> - <dirname property="builddir" file="build.xml"/> - <property name="target" value="1.7"/> - <property name="source" value="1.7"/> - <target name="init"> - </target> - <target name="build"/> - - <target name="package"> - <delete dir="target/package"/> - <copy todir="target/package/libs" includeEmptyDirs="no"> - <fileset dir="target/libs"/> - </copy> - <copy todir="target/package/libs" includeEmptyDirs="no"> - <fileset file="target/*.jar"/> - </copy> - <copy todir="target/package" includeEmptyDirs="no"> - <fileset file="src/main/resources/solrCloudCli.sh"/> - </copy> - <copy todir="target/package" includeEmptyDirs="no"> - <fileset file="src/main/resources/log4j.properties"/> - </copy> - <chmod file="target/package/*.sh" perm="755"/> - <tar compression="gzip" destfile="target/ambari-infra-solr-client.tar.gz"> - <tarfileset mode="755" dir="target/package"> - <include name="*.sh"/> - </tarfileset> - <tarfileset mode="664" dir="target/package"> - <exclude name="*.sh"/> - </tarfileset> - </tar> - - </target> - - <target description="Build all projects which reference this project. Useful to propagate changes." - name="build-refprojects"/> -</project> http://git-wip-us.apache.org/repos/asf/ambari/blob/8842be0c/ambari-logsearch/ambari-infra-solr-client/pom.xml ---------------------------------------------------------------------- diff --git a/ambari-logsearch/ambari-infra-solr-client/pom.xml b/ambari-logsearch/ambari-infra-solr-client/pom.xml deleted file mode 100644 index 228d969..0000000 --- a/ambari-logsearch/ambari-infra-solr-client/pom.xml +++ /dev/null @@ -1,125 +0,0 @@ -<?xml version="1.0"?> -<!-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> -<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"> - <parent> - <artifactId>ambari-logsearch</artifactId> - <groupId>org.apache.ambari</groupId> - <version>2.0.0.0-SNAPSHOT</version> - </parent> - <modelVersion>4.0.0</modelVersion> - <url>http://maven.apache.org</url> - <name>Ambari Infra Solr Client</name> - - <artifactId>ambari-infra-solr-client</artifactId> - - <dependencies> - <dependency> - <groupId>org.apache.solr</groupId> - <artifactId>solr-solrj</artifactId> - <version>${solr.version}</version> - </dependency> - <dependency> - <groupId>commons-cli</groupId> - <artifactId>commons-cli</artifactId> - <version>1.3.1</version> - </dependency> - <dependency> - <groupId>org.codehaus.jackson</groupId> - <artifactId>jackson-mapper-asl</artifactId> - </dependency> - <dependency> - <groupId>commons-codec</groupId> - <artifactId>commons-codec</artifactId> - </dependency> - <dependency> - <groupId>commons-lang</groupId> - <artifactId>commons-lang</artifactId> - </dependency> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-api</artifactId> - </dependency> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-log4j12</artifactId> - </dependency> - <dependency> - <groupId>log4j</groupId> - <artifactId>log4j</artifactId> - </dependency> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.easymock</groupId> - <artifactId>easymock</artifactId> - <version>3.4</version> - <scope>test</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-dependency-plugin</artifactId> - <version>2.8</version> - <executions> - <execution> - <id>copy-dependencies</id> - <phase>package</phase> - <goals> - <goal>copy-dependencies</goal> - </goals> - <configuration> - <outputAbsoluteArtifactFilename>true</outputAbsoluteArtifactFilename> - <outputDirectory>${basedir}/target/libs</outputDirectory> - <overWriteReleases>false</overWriteReleases> - <overWriteSnapshots>false</overWriteSnapshots> - <overWriteIfNewer>true</overWriteIfNewer> - </configuration> - </execution> - </executions> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-antrun-plugin</artifactId> - <version>1.7</version> - <executions> - <execution> - <phase>package</phase> - <configuration> - <target> - <ant antfile="build.xml"> - <target name="package"/> - </ant> - </target> - </configuration> - <goals> - <goal>run</goal> - </goals> - </execution> - </executions> - </plugin> - </plugins> - </build> -</project> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/8842be0c/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/AmbariSolrCloudCLI.java ---------------------------------------------------------------------- diff --git a/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/AmbariSolrCloudCLI.java b/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/AmbariSolrCloudCLI.java deleted file mode 100644 index 5cde9ea..0000000 --- a/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/AmbariSolrCloudCLI.java +++ /dev/null @@ -1,565 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.ambari.infra.solr; - -import org.apache.commons.cli.CommandLine; -import org.apache.commons.cli.CommandLineParser; -import org.apache.commons.cli.DefaultParser; -import org.apache.commons.cli.HelpFormatter; -import org.apache.commons.cli.Option; -import org.apache.commons.cli.Options; -import org.apache.commons.lang.StringUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -public class AmbariSolrCloudCLI { - - private static final Logger LOG = LoggerFactory.getLogger(AmbariSolrCloudCLI.class); - - private static final int ZK_CLIENT_TIMEOUT = 15000; - private static final int ZK_CLIENT_CONNECT_TIMEOUT = 15000; - private static final String CREATE_COLLECTION_COMMAND = "create-collection"; - private static final String UPLOAD_CONFIG_COMMAND = "upload-config"; - private static final String DOWNLOAD_CONFIG_COMMAND = "download-config"; - private static final String CONFIG_CHECK_COMMAND = "check-config"; - private static final String CREATE_SHARD_COMMAND = "create-shard"; - private static final String CREATE_ZNODE = "create-znode"; - private static final String SET_CLUSTER_PROP = "cluster-prop"; - private static final String SETUP_KERBEROS_PLUGIN = "setup-kerberos-plugin"; - private static final String CHECK_ZNODE = "check-znode"; - private static final String SECURE_ZNODE_COMMAND = "secure-znode"; - private static final String SECURE_SOLR_ZNODE_COMMAND = "secure-solr-znode"; - private static final String SECURITY_JSON_LOCATION = "security-json-location"; - private static final String CMD_LINE_SYNTAX = - "\n./solrCloudCli.sh --create-collection -z host1:2181,host2:2181/ambari-solr -c collection -cs conf_set" - + "\n./solrCloudCli.sh --upload-config -z host1:2181,host2:2181/ambari-solr -d /tmp/myconfig_dir -cs config_set" - + "\n./solrCloudCli.sh --download-config -z host1:2181,host2:2181/ambari-solr -cs config_set -d /tmp/myonfig_dir" - + "\n./solrCloudCli.sh --check-config -z host1:2181,host2:2181/ambari-solr -cs config_set" - + "\n./solrCloudCli.sh --create-shard -z host1:2181,host2:2181/ambari-solr -c collection -sn myshard" - + "\n./solrCloudCli.sh --create-znode -z host1:2181,host2:2181 -zn /ambari-solr" - + "\n./solrCloudCli.sh --check-znode -z host1:2181,host2:2181 -zn /ambari-solr" - + "\n./solrCloudCli.sh --cluster-prop -z host1:2181,host2:2181/ambari-solr -cpn urlScheme -cpn http" - + "\n./solrCloudCli.sh --secure-znode -z host1:2181,host2:2181 -zn /ambari-solr -su logsearch,atlas,ranger --jaas-file /etc/myconf/jaas_file" - + "\n./solrCloudCli.sh --secure-solr-znode -z host1:2181,host2:2181 -zn /ambari-solr -su logsearch,atlas,ranger --jaas-file /etc/myconf/jaas_file" - + "\n./solrCloudCli.sh --setup-kerberos-plugin -z host1:2181,host2:2181 -zn /ambari-solr --security-json-location /etc/infra-solr/conf/security.json\n"; - - public static void main(String[] args) { - Options options = new Options(); - HelpFormatter helpFormatter = new HelpFormatter(); - helpFormatter.setDescPadding(10); - helpFormatter.setWidth(200); - - final Option helpOption = Option.builder("h") - .longOpt("help") - .desc("Print commands") - .build(); - - final Option createCollectionOption = Option.builder("cc") - .longOpt(CREATE_COLLECTION_COMMAND) - .desc("Create collection in Solr (command)") - .build(); - - final Option uploadConfigurationOption = Option.builder("uc") - .longOpt(UPLOAD_CONFIG_COMMAND) - .desc("Upload configuration set to Zookeeper (command)") - .build(); - - final Option downloadConfigOption = Option.builder("dc") - .longOpt(DOWNLOAD_CONFIG_COMMAND) - .desc("Download configuration set from Zookeeper (command)") - .build(); - - final Option checkConfigOption = Option.builder("chc") - .longOpt(CONFIG_CHECK_COMMAND) - .desc("Check configuration exists in Zookeeper (command)") - .build(); - - final Option checkZnodeOption = Option.builder("chz") - .longOpt(CHECK_ZNODE) - .desc("Check znode exists in Zookeeper (command)") - .build(); - - final Option createShardOption = Option.builder("csh") - .longOpt(CREATE_SHARD_COMMAND) - .desc("Create shard in Solr (command)") - .build(); - - final Option setClusterPropOption = Option.builder("cp") - .longOpt(SET_CLUSTER_PROP) - .desc("Set cluster property (command)") - .build(); - - final Option createZnodeOption = Option.builder("cz") - .longOpt(CREATE_ZNODE) - .desc("Create Znode (command)") - .build(); - - final Option setupKerberosPluginOption = Option.builder("skp") - .longOpt(SETUP_KERBEROS_PLUGIN) - .desc("Setup kerberos plugin in security.json (command)") - .build(); - - final Option secureSolrZnodeOption = Option.builder("ssz") - .longOpt(SECURE_SOLR_ZNODE_COMMAND) - .desc("Set acls for solr znode") - .build(); - - final Option secureZnodeOption = Option.builder("sz") - .longOpt(SECURE_ZNODE_COMMAND) - .desc("Set acls for znode") - .build(); - - final Option shardNameOption = Option.builder("sn") - .longOpt("shard-name") - .desc("Name of the shard for create-shard command") - .numberOfArgs(1) - .argName("my_new_shard") - .build(); - - final Option disableShardingOption = Option.builder("ns") - .longOpt("no-sharding") - .desc("Sharding not used when creating collection") - .build(); - - final Option zkConnectStringOption = Option.builder("z") - .longOpt("zookeeper-connect-string") - .desc("Zookeeper quorum [and Znode (optional)]") - .numberOfArgs(1) - .argName("host:port,host:port[/ambari-solr]") - .build(); - - final Option znodeOption = Option.builder("zn") - .longOpt("znode") - .desc("Zookeeper ZNode") - .numberOfArgs(1) - .argName("/ambari-solr") - .build(); - - final Option collectionOption = Option.builder("c") - .longOpt("collection") - .desc("Collection name") - .numberOfArgs(1) - .argName("collection name") - .build(); - - final Option configSetOption = Option.builder("cs") - .longOpt("config-set") - .desc("Configuration set") - .numberOfArgs(1) - .argName("config_set") - .build(); - - final Option configDirOption = Option.builder("d") - .longOpt("config-dir") - .desc("Configuration directory") - .numberOfArgs(1) - .argName("config_dir") - .build(); - - final Option shardsOption = Option.builder("s") - .longOpt("shards") - .desc("Number of shards") - .numberOfArgs(1) - .argName("shard number") - .type(Integer.class) - .build(); - - final Option replicationOption = Option.builder("r") - .longOpt("replication") - .desc("Replication factor") - .numberOfArgs(1) - .argName("replication factor") - .type(Integer.class) - .build(); - - final Option retryOption = Option.builder("rt") - .longOpt("retry") - .desc("Number of retries for access Solr [default:10]") - .numberOfArgs(1) - .argName("number of retries") - .type(Integer.class) - .build(); - - final Option intervalOption = Option.builder("i") - .longOpt("interval") - .desc("Interval for retry logic in sec [default:5]") - .numberOfArgs(1) - .argName("interval") - .type(Integer.class) - .build(); - - final Option maxShardsOption = Option.builder("m") - .longOpt("max-shards") - .desc("Max number of shards per node (default: replication * shards)") - .numberOfArgs(1) - .argName("max number of shards") - .build(); - - final Option routerNameOption = Option.builder("rn") - .longOpt("router-name") - .desc("Router name for collection [default:implicit]") - .numberOfArgs(1) - .argName("router_name") - .build(); - - final Option routerFieldOption = Option.builder("rf") - .longOpt("router-field") - .desc("Router field for collection [default:_router_field_]") - .numberOfArgs(1) - .argName("router_field") - .build(); - - final Option jaasFileOption = Option.builder("jf") - .longOpt("jaas-file") - .desc("Location of the jaas-file to communicate with kerberized Solr") - .numberOfArgs(1) - .argName("jaas_file") - .build(); - - final Option keyStoreLocationOption = Option.builder("ksl") - .longOpt("key-store-location") - .desc("Location of the key store used to communicate with Solr using SSL") - .numberOfArgs(1) - .argName("key store location") - .build(); - - final Option keyStorePasswordOption = Option.builder("ksp") - .longOpt("key-store-password") - .desc("Key store password used to communicate with Solr using SSL") - .numberOfArgs(1) - .argName("key store password") - .build(); - - final Option keyStoreTypeOption = Option.builder("kst") - .longOpt("key-store-type") - .desc("Type of the key store used to communicate with Solr using SSL") - .numberOfArgs(1) - .argName("key store type") - .build(); - - final Option trustStoreLocationOption = Option.builder("tsl") - .longOpt("trust-store-location") - .desc("Location of the trust store used to communicate with Solr using SSL") - .numberOfArgs(1) - .argName("trust store location") - .build(); - - final Option trustStorePasswordOption = Option.builder("tsp") - .longOpt("trust-store-password") - .desc("Trust store password used to communicate with Solr using SSL") - .numberOfArgs(1) - .argName("trust store password") - .build(); - - final Option trustStoreTypeOption = Option.builder("tst") - .longOpt("trust-store-type") - .desc("Type of the trust store used to communicate with Solr using SSL") - .numberOfArgs(1) - .argName("trust store type") - .build(); - - final Option propNameOption = Option.builder("cpn") - .longOpt("property-name") - .desc("Cluster property name") - .numberOfArgs(1) - .argName("cluster prop name") - .build(); - - final Option propValueOption = Option.builder("cpv") - .longOpt("property-value") - .desc("Cluster property value") - .numberOfArgs(1) - .argName("cluster prop value") - .build(); - - final Option copyFromZnodeOption = Option.builder("cfz") - .longOpt("copy-from-znode") - .desc("Copy-from-znode") - .numberOfArgs(1) - .argName("/ambari-solr-secure") - .build(); - - final Option saslUsersOption = Option.builder("su") - .longOpt("sasl-users") - .desc("Sasl users (comma separated list)") - .numberOfArgs(1) - .argName("atlas,ranger,logsearch-solr") - .build(); - - final Option securityJsonLocationOption = Option.builder("sjl") - .longOpt(SECURITY_JSON_LOCATION) - .desc("Local security.json path") - .numberOfArgs(1) - .argName("security.json location") - .build(); - - final Option secureOption = Option.builder("sec") - .longOpt("secure") - .desc("Flag for enable/disable kerberos (with --setup-kerberos or --setup-kerberos-plugin)") - .build(); - - options.addOption(helpOption); - options.addOption(retryOption); - options.addOption(intervalOption); - options.addOption(zkConnectStringOption); - options.addOption(configSetOption); - options.addOption(configDirOption); - options.addOption(collectionOption); - options.addOption(secureZnodeOption); - options.addOption(secureSolrZnodeOption); - options.addOption(shardsOption); - options.addOption(replicationOption); - options.addOption(maxShardsOption); - options.addOption(routerNameOption); - options.addOption(routerFieldOption); - options.addOption(shardNameOption); - options.addOption(disableShardingOption); - options.addOption(createCollectionOption); - options.addOption(downloadConfigOption); - options.addOption(uploadConfigurationOption); - options.addOption(checkConfigOption); - options.addOption(createShardOption); - options.addOption(jaasFileOption); - options.addOption(keyStoreLocationOption); - options.addOption(keyStorePasswordOption); - options.addOption(keyStoreTypeOption); - options.addOption(trustStoreLocationOption); - options.addOption(trustStorePasswordOption); - options.addOption(trustStoreTypeOption); - options.addOption(setClusterPropOption); - options.addOption(propNameOption); - options.addOption(propValueOption); - options.addOption(createZnodeOption); - options.addOption(znodeOption); - options.addOption(secureOption); - options.addOption(copyFromZnodeOption); - options.addOption(saslUsersOption); - options.addOption(checkZnodeOption); - options.addOption(setupKerberosPluginOption); - options.addOption(securityJsonLocationOption); - - AmbariSolrCloudClient solrCloudClient = null; - - try { - CommandLineParser cmdLineParser = new DefaultParser(); - CommandLine cli = cmdLineParser.parse(options, args); - - if(cli.hasOption('h')) { - helpFormatter.printHelp("sample", options); - exit(0, null); - } - String command = ""; - if (cli.hasOption("cc")) { - command = CREATE_COLLECTION_COMMAND; - validateRequiredOptions(cli, command, zkConnectStringOption, collectionOption, configSetOption); - } else if (cli.hasOption("uc")) { - command = UPLOAD_CONFIG_COMMAND; - validateRequiredOptions(cli, command, zkConnectStringOption, configSetOption, configDirOption); - } else if (cli.hasOption("dc")) { - command = DOWNLOAD_CONFIG_COMMAND; - validateRequiredOptions(cli, command, zkConnectStringOption, configSetOption, configDirOption); - } else if (cli.hasOption("csh")) { - command = CREATE_SHARD_COMMAND; - validateRequiredOptions(cli, command, zkConnectStringOption, collectionOption, shardNameOption); - } else if (cli.hasOption("chc")) { - command = CONFIG_CHECK_COMMAND; - validateRequiredOptions(cli, command, zkConnectStringOption, configSetOption); - } else if (cli.hasOption("cp")) { - command = SET_CLUSTER_PROP; - validateRequiredOptions(cli, command, zkConnectStringOption, propNameOption, propValueOption); - } else if (cli.hasOption("cz")) { - command = CREATE_ZNODE; - validateRequiredOptions(cli, command, zkConnectStringOption, znodeOption); - } else if (cli.hasOption("chz")){ - command = CHECK_ZNODE; - validateRequiredOptions(cli, command, zkConnectStringOption, znodeOption); - } else if (cli.hasOption("skp")) { - command = SETUP_KERBEROS_PLUGIN; - validateRequiredOptions(cli, command, zkConnectStringOption, znodeOption); - } else if (cli.hasOption("sz")) { - command = SECURE_ZNODE_COMMAND; - validateRequiredOptions(cli, command, zkConnectStringOption, znodeOption, jaasFileOption, saslUsersOption); - } else if (cli.hasOption("ssz")) { - command = SECURE_SOLR_ZNODE_COMMAND; - validateRequiredOptions(cli, command, zkConnectStringOption, znodeOption, jaasFileOption, saslUsersOption); - } else { - List<String> commands = Arrays.asList(CREATE_COLLECTION_COMMAND, CREATE_SHARD_COMMAND, UPLOAD_CONFIG_COMMAND, - DOWNLOAD_CONFIG_COMMAND, CONFIG_CHECK_COMMAND, SET_CLUSTER_PROP, CREATE_ZNODE, SECURE_ZNODE_COMMAND, - SECURE_SOLR_ZNODE_COMMAND, CHECK_ZNODE, SETUP_KERBEROS_PLUGIN); - helpFormatter.printHelp(CMD_LINE_SYNTAX, options); - exit(1, String.format("One of the supported commands is required (%s)", StringUtils.join(commands, "|"))); - } - - String zkConnectString = cli.getOptionValue('z'); - String collection = cli.getOptionValue('c'); - String configSet = cli.getOptionValue("cs"); - String configDir = cli.getOptionValue("d"); - int shards = cli.hasOption('s') ? Integer.parseInt(cli.getOptionValue('s')) : 1; - int replication = cli.hasOption('r') ? Integer.parseInt(cli.getOptionValue('r')) : 1; - int retry = cli.hasOption("rt") ? Integer.parseInt(cli.getOptionValue("rt")) : 5; - int interval = cli.hasOption('i') ? Integer.parseInt(cli.getOptionValue('i')) : 10; - int maxShards = cli.hasOption('m') ? Integer.parseInt(cli.getOptionValue('m')) : shards * replication; - String routerName = cli.hasOption("rn") ? cli.getOptionValue("rn") : null; - String routerField = cli.hasOption("rf") ? cli.getOptionValue("rf") : null; - String shardName = cli.hasOption("sn") ? cli.getOptionValue("sn") : null; - boolean isSplitting = !cli.hasOption("ns"); - String jaasFile = cli.hasOption("jf") ? cli.getOptionValue("jf") : null; - String keyStoreLocation = cli.hasOption("ksl") ? cli.getOptionValue("ksl") : null; - String keyStorePassword = cli.hasOption("ksp") ? cli.getOptionValue("ksp") : null; - String keyStoreType = cli.hasOption("kst") ? cli.getOptionValue("kst") : null; - String trustStoreLocation = cli.hasOption("tsl") ? cli.getOptionValue("tsl") : null; - String trustStorePassword = cli.hasOption("tsp") ? cli.getOptionValue("tsp") : null; - String trustStoreType = cli.hasOption("tst") ? cli.getOptionValue("tst") : null; - String clusterPropName = cli.hasOption("cpn") ? cli.getOptionValue("cpn") : null; - String clusterPropValue = cli.hasOption("cpv") ? cli.getOptionValue("cpv") : null; - String znode = cli.hasOption("zn") ? cli.getOptionValue("zn") : null; - boolean isSecure = cli.hasOption("sec"); - String saslUsers = cli.hasOption("su") ? cli.getOptionValue("su") : ""; - String securityJsonLocation = cli.hasOption("sjl") ? cli.getOptionValue("sjl") : ""; - - AmbariSolrCloudClientBuilder clientBuilder = new AmbariSolrCloudClientBuilder() - .withZkConnectString(zkConnectString) - .withCollection(collection) - .withConfigSet(configSet) - .withShards(shards) - .withReplication(replication) - .withMaxShardsPerNode(maxShards) - .withRetry(retry) - .withInterval(interval) - .withRouterName(routerName) - .withRouterField(routerField) - .withJaasFile(jaasFile) // call before creating SolrClient - .withSplitting(isSplitting) - .withSolrZkClient(ZK_CLIENT_TIMEOUT, ZK_CLIENT_CONNECT_TIMEOUT) - .withKeyStoreLocation(keyStoreLocation) - .withKeyStorePassword(keyStorePassword) - .withKeyStoreType(keyStoreType) - .withTrustStoreLocation(trustStoreLocation) - .withTrustStorePassword(trustStorePassword) - .withTrustStoreType(trustStoreType) - .withClusterPropName(clusterPropName) - .withClusterPropValue(clusterPropValue) - .withSecurityJsonLocation(securityJsonLocation) - .withZnode(znode) - .withSecure(isSecure) - .withSaslUsers(saslUsers); - - switch (command) { - case CREATE_COLLECTION_COMMAND: - solrCloudClient = clientBuilder - .withSolrCloudClient() - .build(); - solrCloudClient.createCollection(); - break; - case UPLOAD_CONFIG_COMMAND: - solrCloudClient = clientBuilder - .withConfigDir(configDir) - .build(); - solrCloudClient.uploadConfiguration(); - break; - case DOWNLOAD_CONFIG_COMMAND: - solrCloudClient = clientBuilder - .withConfigDir(configDir) - .build(); - solrCloudClient.downloadConfiguration(); - break; - case CONFIG_CHECK_COMMAND: - solrCloudClient = clientBuilder.build(); - boolean configExists = solrCloudClient.configurationExists(); - if (!configExists) { - exit(1, null); - } - break; - case CREATE_SHARD_COMMAND: - solrCloudClient = clientBuilder - .withSolrCloudClient() - .build(); - solrCloudClient.createShard(shardName); - break; - case SET_CLUSTER_PROP: - solrCloudClient = clientBuilder.build(); - solrCloudClient.setClusterProp(); - break; - case CREATE_ZNODE: - solrCloudClient = clientBuilder.build(); - solrCloudClient.createZnode(); - break; - case CHECK_ZNODE: - solrCloudClient = clientBuilder.build(); - boolean znodeExists = solrCloudClient.isZnodeExists(znode); - if (!znodeExists) { - exit(1, String.format("'%s' znode does not exist. Solr is responsible to create the ZNode, " + - "check Solr started successfully or not", znode)); - } - break; - case SETUP_KERBEROS_PLUGIN: - solrCloudClient = clientBuilder.build(); - solrCloudClient.setupKerberosPlugin(); - break; - case SECURE_ZNODE_COMMAND: - solrCloudClient = clientBuilder.build(); - solrCloudClient.secureZnode(); - break; - case SECURE_SOLR_ZNODE_COMMAND: - solrCloudClient = clientBuilder.build(); - solrCloudClient.secureSolrZnode(); - break; - default: - throw new AmbariSolrCloudClientException(String.format("Not found command: '%s'", command)); - } - } catch (Exception e) { - helpFormatter.printHelp( - CMD_LINE_SYNTAX, options); - exit(1, e.getMessage()); - } finally { - if (solrCloudClient != null && solrCloudClient.getSolrZkClient() != null) { - solrCloudClient.getSolrZkClient().close(); - } - } - exit(0, null); - } - - private static void validateRequiredOptions(CommandLine cli, String command, Option... optionsToValidate) - throws AmbariSolrCloudClientException { - List<String> requiredOptions = new ArrayList<>(); - for (Option opt : optionsToValidate) { - if (!cli.hasOption(opt.getOpt())) { - requiredOptions.add(opt.getOpt()); - } - } - if (!requiredOptions.isEmpty()) { - throw new AmbariSolrCloudClientException( - String.format("The following options required for '%s' : %s", - command, StringUtils.join(requiredOptions, ","))); - } - } - - private static void exit(int exitCode, String message) { - if (message != null){ - LOG.error(message); - } - LOG.info("Return code: {}", exitCode); - System.exit(exitCode); - } -} http://git-wip-us.apache.org/repos/asf/ambari/blob/8842be0c/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/AmbariSolrCloudClient.java ---------------------------------------------------------------------- diff --git a/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/AmbariSolrCloudClient.java b/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/AmbariSolrCloudClient.java deleted file mode 100644 index ff28664..0000000 --- a/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/AmbariSolrCloudClient.java +++ /dev/null @@ -1,334 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.ambari.infra.solr; - -import org.apache.ambari.infra.solr.commands.CheckConfigZkCommand; -import org.apache.ambari.infra.solr.commands.CreateCollectionCommand; -import org.apache.ambari.infra.solr.commands.CreateShardCommand; -import org.apache.ambari.infra.solr.commands.CreateSolrZnodeZkCommand; -import org.apache.ambari.infra.solr.commands.DownloadConfigZkCommand; -import org.apache.ambari.infra.solr.commands.EnableKerberosPluginSolrZkCommand; -import org.apache.ambari.infra.solr.commands.GetShardsCommand; -import org.apache.ambari.infra.solr.commands.GetSolrHostsCommand; -import org.apache.ambari.infra.solr.commands.ListCollectionCommand; -import org.apache.ambari.infra.solr.commands.SecureSolrZNodeZkCommand; -import org.apache.ambari.infra.solr.commands.SecureZNodeZkCommand; -import org.apache.ambari.infra.solr.commands.SetClusterPropertyZkCommand; -import org.apache.ambari.infra.solr.commands.UploadConfigZkCommand; -import org.apache.ambari.infra.solr.commands.CheckZnodeZkCommand; -import org.apache.ambari.infra.solr.util.ShardUtils; -import org.apache.solr.client.solrj.impl.CloudSolrClient; -import org.apache.solr.common.cloud.Slice; -import org.apache.solr.common.cloud.SolrZkClient; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.Collection; -import java.util.List; - -/** - * Client for communicate with Solr (and Zookeeper) - */ -public class AmbariSolrCloudClient { - - private static final Logger LOG = LoggerFactory.getLogger(AmbariSolrCloudClient.class); - - private final String zkConnectString; - private final String collection; - private final String configSet; - private final String configDir; - private final int shards; - private final int replication; - private final int retryTimes; - private final int interval; - private final CloudSolrClient solrCloudClient; - private final SolrZkClient solrZkClient; - private final int maxShardsPerNode; - private final String routerName; - private final String routerField; - private final boolean splitting; - private final String jaasFile; - private final String znode; - private final String saslUsers; - private final String propName; - private final String propValue; - private final String securityJsonLocation; - private final boolean secure; - - public AmbariSolrCloudClient(AmbariSolrCloudClientBuilder builder) { - this.zkConnectString = builder.zkConnectString; - this.collection = builder.collection; - this.configSet = builder.configSet; - this.configDir = builder.configDir; - this.shards = builder.shards; - this.replication = builder.replication; - this.retryTimes = builder.retryTimes; - this.interval = builder.interval; - this.jaasFile = builder.jaasFile; - this.solrCloudClient = builder.solrCloudClient; - this.solrZkClient = builder.solrZkClient; - this.maxShardsPerNode = builder.maxShardsPerNode; - this.routerName = builder.routerName; - this.routerField = builder.routerField; - this.splitting = builder.splitting; - this.znode = builder.znode; - this.saslUsers = builder.saslUsers; - this.propName = builder.propName; - this.propValue = builder.propValue; - this.securityJsonLocation = builder.securityJsonLocation; - this.secure = builder.secure; - } - - /** - * Get Solr collections - */ - public List<String> listCollections() throws Exception { - return new ListCollectionCommand(getRetryTimes(), getInterval()).run(this); - } - - /** - * Create Solr collection if exists - */ - public String createCollection() throws Exception { - List<String> collections = listCollections(); - if (!collections.contains(getCollection())) { - String collection = new CreateCollectionCommand(getRetryTimes(), getInterval()).run(this); - LOG.info("Collection '{}' created.", collection); - } else { - LOG.info("Collection '{}' already exits.", getCollection()); - if (this.isSplitting()) { - createShard(null); - } - } - return getCollection(); - } - - /** - * Set cluster property in clusterprops.json. - */ - public void setClusterProp() throws Exception { - LOG.info("Set cluster prop: '{}'", this.getPropName()); - String newPropValue = new SetClusterPropertyZkCommand(getRetryTimes(), getInterval()).run(this); - LOG.info("Set cluster prop '{}' successfully to '{}'", this.getPropName(), newPropValue); - } - - /** - * Create a znode only if it does not exist. Return 0 code if it exists. - */ - public void createZnode() throws Exception { - boolean znodeExists = isZnodeExists(this.znode); - if (znodeExists) { - LOG.info("Znode '{}' already exists.", this.znode); - } else { - LOG.info("Znode '{}' does not exist. Creating...", this.znode); - String newZnode = new CreateSolrZnodeZkCommand(getRetryTimes(), getInterval()).run(this); - LOG.info("Znode '{}' is created successfully.", newZnode); - } - } - - /** - * Check znode exists or not based on the zookeeper connect string. - * E.g.: localhost:2181 and znode: /ambari-solr, checks existance of localhost:2181/ambari-solr - */ - public boolean isZnodeExists(String znode) throws Exception { - LOG.info("Check '{}' znode exists or not", znode); - boolean result = new CheckZnodeZkCommand(getRetryTimes(), getInterval(), znode).run(this); - if (result) { - LOG.info("'{}' znode exists", znode); - } else { - LOG.info("'{}' znode does not exist", znode); - } - return result; - } - - public void setupKerberosPlugin() throws Exception { - LOG.info("Setup kerberos plugin in security.json"); - new EnableKerberosPluginSolrZkCommand(getRetryTimes(), getInterval()).run(this); - LOG.info("KerberosPlugin is set in security.json"); - } - - /** - * Secure solr znode - */ - public void secureSolrZnode() throws Exception { - new SecureSolrZNodeZkCommand(getRetryTimes(), getInterval()).run(this); - } - - /** - * Secure znode - */ - public void secureZnode() throws Exception { - new SecureZNodeZkCommand(getRetryTimes(), getInterval()).run(this); - } - - /** - * Upload config set to zookeeper - */ - public String uploadConfiguration() throws Exception { - String configSet = new UploadConfigZkCommand(getRetryTimes(), getInterval()).run(this); - LOG.info("'{}' is uploaded to zookeeper.", configSet); - return configSet; - } - - /** - * Download config set from zookeeper - */ - public String downloadConfiguration() throws Exception { - String configDir = new DownloadConfigZkCommand(getRetryTimes(), getInterval()).run(this); - LOG.info("Config set is download from zookeeper. ({})", configDir); - return configDir; - } - - /** - * Get configuration if exists in zookeeper - */ - public boolean configurationExists() throws Exception { - boolean configExits = new CheckConfigZkCommand(getRetryTimes(), getInterval()).run(this); - if (configExits) { - LOG.info("Config {} exits", configSet); - } else { - LOG.info("Configuration '{}' does not exist", configSet); - } - return configExits; - } - - /** - * Create shard in collection - create a new one if shard name specified, if - * not create based on the number of shards logic (with shard_# suffix) - * - * @param shard - * name of the created shard - */ - public Collection<String> createShard(String shard) throws Exception { - Collection<String> existingShards = getShardNames(); - if (shard != null) { - new CreateShardCommand(shard, getRetryTimes(), getInterval()).run(this); - existingShards.add(shard); - } else { - List<String> shardList = ShardUtils.generateShardList(getMaxShardsPerNode()); - for (String shardName : shardList) { - if (!existingShards.contains(shardName)) { - new CreateShardCommand(shardName, getRetryTimes(), getInterval()).run(this); - LOG.info("New shard added to collection '{}': {}", getCollection(), shardName); - existingShards.add(shardName); - } - } - } - return existingShards; - } - - /** - * Get shard names - */ - public Collection<String> getShardNames() throws Exception { - Collection<Slice> slices = new GetShardsCommand(getRetryTimes(), getInterval()).run(this); - return ShardUtils.getShardNamesFromSlices(slices, this.getCollection()); - } - - /** - * Get Solr Hosts - */ - public Collection<String> getSolrHosts() throws Exception { - return new GetSolrHostsCommand(getRetryTimes(), getInterval()).run(this); - } - - public String getZkConnectString() { - return zkConnectString; - } - - public String getCollection() { - return collection; - } - - public String getConfigSet() { - return configSet; - } - - public String getConfigDir() { - return configDir; - } - - public int getShards() { - return shards; - } - - public int getReplication() { - return replication; - } - - public int getRetryTimes() { - return retryTimes; - } - - public int getInterval() { - return interval; - } - - public CloudSolrClient getSolrCloudClient() { - return solrCloudClient; - } - - public SolrZkClient getSolrZkClient() { - return solrZkClient; - } - - public int getMaxShardsPerNode() { - return maxShardsPerNode; - } - - public String getRouterName() { - return routerName; - } - - public String getRouterField() { - return routerField; - } - - public boolean isSplitting() { - return splitting; - } - - public String getJaasFile() { - return jaasFile; - } - - public String getSaslUsers() { - return saslUsers; - } - - public String getZnode() { - return znode; - } - - public String getPropName() { - return propName; - } - - public String getPropValue() { - return propValue; - } - - public boolean isSecure() { - return secure; - } - - public String getSecurityJsonLocation() { - return securityJsonLocation; - } -} http://git-wip-us.apache.org/repos/asf/ambari/blob/8842be0c/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/AmbariSolrCloudClientBuilder.java ---------------------------------------------------------------------- diff --git a/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/AmbariSolrCloudClientBuilder.java b/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/AmbariSolrCloudClientBuilder.java deleted file mode 100644 index 54c4ae3..0000000 --- a/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/AmbariSolrCloudClientBuilder.java +++ /dev/null @@ -1,215 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.ambari.infra.solr; - -import org.apache.solr.client.solrj.impl.CloudSolrClient; -import org.apache.solr.client.solrj.impl.HttpClientUtil; -import org.apache.solr.client.solrj.impl.Krb5HttpClientConfigurer; -import org.apache.solr.common.cloud.SolrZkClient; - -public class AmbariSolrCloudClientBuilder { - private static final String KEYSTORE_LOCATION_ARG = "javax.net.ssl.keyStore"; - private static final String KEYSTORE_PASSWORD_ARG = "javax.net.ssl.keyStorePassword"; - private static final String KEYSTORE_TYPE_ARG = "javax.net.ssl.keyStoreType"; - private static final String TRUSTSTORE_LOCATION_ARG = "javax.net.ssl.trustStore"; - private static final String TRUSTSTORE_PASSWORD_ARG = "javax.net.ssl.trustStorePassword"; - private static final String TRUSTSTORE_TYPE_ARG = "javax.net.ssl.trustStoreType"; - - String zkConnectString; - String collection; - String configSet; - String configDir; - int shards = 1; - int replication = 1; - int retryTimes = 10; - int interval = 5; - int maxShardsPerNode = replication * shards; - String routerName = "implicit"; - String routerField = "_router_field_"; - CloudSolrClient solrCloudClient; - SolrZkClient solrZkClient; - boolean splitting; - String jaasFile; - String znode; - String saslUsers; - String propName; - String propValue; - String securityJsonLocation; - boolean secure; - - public AmbariSolrCloudClient build() { - return new AmbariSolrCloudClient(this); - } - - public AmbariSolrCloudClientBuilder withZkConnectString(String zkConnectString) { - this.zkConnectString = zkConnectString; - return this; - } - - public AmbariSolrCloudClientBuilder withCollection(String collection) { - this.collection = collection; - return this; - } - - public AmbariSolrCloudClientBuilder withConfigSet(String configSet) { - this.configSet = configSet; - return this; - } - - public AmbariSolrCloudClientBuilder withConfigDir(String configDir) { - this.configDir = configDir; - return this; - } - - public AmbariSolrCloudClientBuilder withShards(int shards) { - this.shards = shards; - return this; - } - - public AmbariSolrCloudClientBuilder withReplication(int replication) { - this.replication = replication; - return this; - } - - public AmbariSolrCloudClientBuilder withRetry(int retryTimes) { - this.retryTimes = retryTimes; - return this; - } - - public AmbariSolrCloudClientBuilder withInterval(int interval) { - this.interval = interval; - return this; - } - - public AmbariSolrCloudClientBuilder withMaxShardsPerNode(int maxShardsPerNode) { - this.maxShardsPerNode = maxShardsPerNode; - return this; - } - - public AmbariSolrCloudClientBuilder withRouterName(String routerName) { - this.routerName = routerName; - return this; - } - - public AmbariSolrCloudClientBuilder withRouterField(String routerField) { - this.routerField = routerField; - return this; - } - - public AmbariSolrCloudClientBuilder withSplitting(boolean splitting) { - this.splitting = splitting; - return this; - } - - public AmbariSolrCloudClientBuilder withJaasFile(String jaasFile) { - this.jaasFile = jaasFile; - setupSecurity(jaasFile); - return this; - } - - public AmbariSolrCloudClientBuilder withSolrCloudClient() { - this.solrCloudClient = new CloudSolrClient(this.zkConnectString); - return this; - } - - public AmbariSolrCloudClientBuilder withSolrZkClient(int zkClientTimeout, int zkClientConnectTimeout) { - this.solrZkClient = new SolrZkClient(this.zkConnectString, zkClientTimeout, zkClientConnectTimeout); - return this; - } - - public AmbariSolrCloudClientBuilder withKeyStoreLocation(String keyStoreLocation) { - if (keyStoreLocation != null) { - System.setProperty(KEYSTORE_LOCATION_ARG, keyStoreLocation); - } - return this; - } - - public AmbariSolrCloudClientBuilder withKeyStorePassword(String keyStorePassword) { - if (keyStorePassword != null) { - System.setProperty(KEYSTORE_PASSWORD_ARG, keyStorePassword); - } - return this; - } - - public AmbariSolrCloudClientBuilder withKeyStoreType(String keyStoreType) { - if (keyStoreType != null) { - System.setProperty(KEYSTORE_TYPE_ARG, keyStoreType); - } - return this; - } - - public AmbariSolrCloudClientBuilder withTrustStoreLocation(String trustStoreLocation) { - if (trustStoreLocation != null) { - System.setProperty(TRUSTSTORE_LOCATION_ARG, trustStoreLocation); - } - return this; - } - - public AmbariSolrCloudClientBuilder withTrustStorePassword(String trustStorePassword) { - if (trustStorePassword != null) { - System.setProperty(TRUSTSTORE_PASSWORD_ARG, trustStorePassword); - } - return this; - } - - public AmbariSolrCloudClientBuilder withTrustStoreType(String trustStoreType) { - if (trustStoreType != null) { - System.setProperty(TRUSTSTORE_TYPE_ARG, trustStoreType); - } - return this; - } - - public AmbariSolrCloudClientBuilder withSaslUsers(String saslUsers) { - this.saslUsers = saslUsers; - return this; - } - - public AmbariSolrCloudClientBuilder withZnode(String znode) { - this.znode = znode; - return this; - } - - public AmbariSolrCloudClientBuilder withClusterPropName(String clusterPropName) { - this.propName = clusterPropName; - return this; - } - - public AmbariSolrCloudClientBuilder withClusterPropValue(String clusterPropValue) { - this.propValue = clusterPropValue; - return this; - } - - public AmbariSolrCloudClientBuilder withSecurityJsonLocation(String securityJson) { - this.securityJsonLocation = securityJson; - return this; - } - - public AmbariSolrCloudClientBuilder withSecure(boolean isSecure) { - this.secure = isSecure; - return this; - } - - private void setupSecurity(String jaasFile) { - if (jaasFile != null) { - System.setProperty("java.security.auth.login.config", jaasFile); - HttpClientUtil.setConfigurer(new Krb5HttpClientConfigurer()); - } - } -} http://git-wip-us.apache.org/repos/asf/ambari/blob/8842be0c/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/AmbariSolrCloudClientException.java ---------------------------------------------------------------------- diff --git a/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/AmbariSolrCloudClientException.java b/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/AmbariSolrCloudClientException.java deleted file mode 100644 index d339a77..0000000 --- a/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/AmbariSolrCloudClientException.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.ambari.infra.solr; - -public class AmbariSolrCloudClientException extends Exception{ - public AmbariSolrCloudClientException(String message) { - super(message); - } - public AmbariSolrCloudClientException(String message, Throwable throwable) { - super(message, throwable); - } -} http://git-wip-us.apache.org/repos/asf/ambari/blob/8842be0c/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/AbstractRetryCommand.java ---------------------------------------------------------------------- diff --git a/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/AbstractRetryCommand.java b/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/AbstractRetryCommand.java deleted file mode 100644 index 5e87859..0000000 --- a/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/AbstractRetryCommand.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.ambari.infra.solr.commands; - -import org.apache.ambari.infra.solr.AmbariSolrCloudClient; -import org.apache.ambari.infra.solr.AmbariSolrCloudClientException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public abstract class AbstractRetryCommand<RESPONSE> { - private static final Logger LOG = LoggerFactory.getLogger(AbstractRetryCommand.class); - - private final int interval; - private final int maxRetries; - - public AbstractRetryCommand(int maxRetries, int interval) { - this.maxRetries = maxRetries; - this.interval = interval; - } - - public abstract RESPONSE createAndProcessRequest(AmbariSolrCloudClient solrCloudClient) throws Exception; - - public RESPONSE run(AmbariSolrCloudClient solrCloudClient) throws Exception { - return retry(0, solrCloudClient); - } - - private RESPONSE retry(int tries, AmbariSolrCloudClient solrCloudClient) throws Exception { - try { - return createAndProcessRequest(solrCloudClient); - } catch (Exception ex) { - LOG.error(ex.getMessage(), ex); - tries++; - LOG.info("Command failed, tries again (tries: {})", tries); - if (maxRetries == tries) { - throw new AmbariSolrCloudClientException(String.format("Maximum retries exceeded: %d", tries), ex); - } else { - Thread.sleep(interval * 1000); - return retry(tries, solrCloudClient); - } - } - } -} http://git-wip-us.apache.org/repos/asf/ambari/blob/8842be0c/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/AbstractSolrRetryCommand.java ---------------------------------------------------------------------- diff --git a/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/AbstractSolrRetryCommand.java b/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/AbstractSolrRetryCommand.java deleted file mode 100644 index fdf26a7..0000000 --- a/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/AbstractSolrRetryCommand.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.ambari.infra.solr.commands; - -import org.apache.ambari.infra.solr.AmbariSolrCloudClient; -import org.apache.ambari.infra.solr.AmbariSolrCloudClientException; -import org.apache.solr.client.solrj.request.CollectionAdminRequest; -import org.apache.solr.client.solrj.response.CollectionAdminResponse; -import org.apache.solr.client.solrj.response.SolrResponseBase; - -public abstract class AbstractSolrRetryCommand<REQUEST extends CollectionAdminRequest, RESPONSE> - extends AbstractRetryCommand<RESPONSE> { - - public AbstractSolrRetryCommand(int maxRetries, int interval) { - super(maxRetries, interval); - } - - public abstract RESPONSE handleResponse(CollectionAdminResponse response, AmbariSolrCloudClient client) throws Exception; - - public abstract REQUEST createRequest(AmbariSolrCloudClient client); - - public abstract String errorMessage(AmbariSolrCloudClient client); - - @Override - public RESPONSE createAndProcessRequest(AmbariSolrCloudClient client) throws Exception { - REQUEST request = createRequest(client); - CollectionAdminResponse response = (CollectionAdminResponse) request.process(client.getSolrCloudClient()); - handleErrorIfExists(response, errorMessage(client)); - return handleResponse(response, client); - } - - private void handleErrorIfExists(SolrResponseBase response, String message) throws AmbariSolrCloudClientException { - if (response.getStatus() != 0) { - throw new AmbariSolrCloudClientException(message); - } - } -} http://git-wip-us.apache.org/repos/asf/ambari/blob/8842be0c/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/AbstractStateFileZkCommand.java ---------------------------------------------------------------------- diff --git a/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/AbstractStateFileZkCommand.java b/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/AbstractStateFileZkCommand.java deleted file mode 100644 index b4872e2..0000000 --- a/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/AbstractStateFileZkCommand.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.ambari.infra.solr.commands; - -import org.apache.ambari.infra.solr.AmbariSolrCloudClient; -import org.apache.ambari.infra.solr.domain.AmbariSolrState; -import org.codehaus.jackson.JsonNode; -import org.codehaus.jackson.map.ObjectMapper; - -public abstract class AbstractStateFileZkCommand extends AbstractZookeeperRetryCommand<AmbariSolrState>{ - - public static final String STATE_FILE = "ambari-solr-state.json"; - public static final String STATE_FIELD = "ambari_solr_security_state"; - - public AbstractStateFileZkCommand(int maxRetries, int interval) { - super(maxRetries, interval); - } - - public AmbariSolrState getStateFromJson(AmbariSolrCloudClient client, String fileName) throws Exception { - byte[] data = client.getSolrZkClient().getData(fileName, null, null, true); - String input = new String(data); - ObjectMapper mapper = new ObjectMapper(); - JsonNode rootNode = mapper.readValue(input.getBytes(), JsonNode.class); - return AmbariSolrState.valueOf(rootNode.get(STATE_FIELD).asText()); - } -} http://git-wip-us.apache.org/repos/asf/ambari/blob/8842be0c/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/AbstractZookeeperConfigCommand.java ---------------------------------------------------------------------- diff --git a/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/AbstractZookeeperConfigCommand.java b/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/AbstractZookeeperConfigCommand.java deleted file mode 100644 index dec34f1..0000000 --- a/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/AbstractZookeeperConfigCommand.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.ambari.infra.solr.commands; - -import org.apache.ambari.infra.solr.AmbariSolrCloudClient; -import org.apache.solr.common.cloud.SolrZkClient; -import org.apache.solr.common.cloud.SolrZooKeeper; -import org.apache.solr.common.cloud.ZkConfigManager; - -public abstract class AbstractZookeeperConfigCommand<RESPONSE> extends AbstractZookeeperRetryCommand<RESPONSE> { - - public AbstractZookeeperConfigCommand(int maxRetries, int interval) { - super(maxRetries, interval); - } - - protected abstract RESPONSE executeZkConfigCommand(ZkConfigManager zkConfigManager, AmbariSolrCloudClient client) - throws Exception; - - @Override - protected RESPONSE executeZkCommand(AmbariSolrCloudClient client, SolrZkClient zkClient, SolrZooKeeper solrZooKeeper) throws Exception { - ZkConfigManager zkConfigManager = createZkConfigManager(zkClient); - return executeZkConfigCommand(zkConfigManager, client); - } - - protected ZkConfigManager createZkConfigManager(SolrZkClient zkClient) { - return new ZkConfigManager(zkClient); - } -} http://git-wip-us.apache.org/repos/asf/ambari/blob/8842be0c/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/AbstractZookeeperRetryCommand.java ---------------------------------------------------------------------- diff --git a/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/AbstractZookeeperRetryCommand.java b/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/AbstractZookeeperRetryCommand.java deleted file mode 100644 index e37088d..0000000 --- a/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/AbstractZookeeperRetryCommand.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.ambari.infra.solr.commands; - -import org.apache.ambari.infra.solr.AmbariSolrCloudClient; -import org.apache.solr.common.cloud.SolrZkClient; -import org.apache.solr.common.cloud.SolrZooKeeper; - -public abstract class AbstractZookeeperRetryCommand<RESPONSE> extends AbstractRetryCommand<RESPONSE> { - - public AbstractZookeeperRetryCommand(int maxRetries, int interval) { - super(maxRetries, interval); - } - - protected abstract RESPONSE executeZkCommand(AmbariSolrCloudClient client, SolrZkClient zkClient, SolrZooKeeper solrZooKeeper) - throws Exception; - - @Override - public RESPONSE createAndProcessRequest(AmbariSolrCloudClient client) throws Exception { - SolrZkClient zkClient = client.getSolrZkClient(); - SolrZooKeeper solrZooKeeper = zkClient.getSolrZooKeeper(); - return executeZkCommand(client, zkClient, solrZooKeeper); - } -} http://git-wip-us.apache.org/repos/asf/ambari/blob/8842be0c/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/CheckConfigZkCommand.java ---------------------------------------------------------------------- diff --git a/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/CheckConfigZkCommand.java b/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/CheckConfigZkCommand.java deleted file mode 100644 index 0a03a65..0000000 --- a/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/CheckConfigZkCommand.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.ambari.infra.solr.commands; - -import org.apache.ambari.infra.solr.AmbariSolrCloudClient; -import org.apache.solr.common.cloud.ZkConfigManager; - -public class CheckConfigZkCommand extends AbstractZookeeperConfigCommand<Boolean> { - - public CheckConfigZkCommand(int maxRetries, int interval) { - super(maxRetries, interval); - } - - @Override - protected Boolean executeZkConfigCommand(ZkConfigManager zkConfigManager, AmbariSolrCloudClient client) throws Exception { - return zkConfigManager.configExists(client.getConfigSet()); - } -} http://git-wip-us.apache.org/repos/asf/ambari/blob/8842be0c/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/CheckZnodeZkCommand.java ---------------------------------------------------------------------- diff --git a/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/CheckZnodeZkCommand.java b/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/CheckZnodeZkCommand.java deleted file mode 100644 index 93eb478..0000000 --- a/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/CheckZnodeZkCommand.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.ambari.infra.solr.commands; - -import org.apache.ambari.infra.solr.AmbariSolrCloudClient; -import org.apache.ambari.infra.solr.AmbariSolrCloudClientException; -import org.apache.solr.common.cloud.SolrZkClient; -import org.apache.solr.common.cloud.SolrZooKeeper; -import org.apache.zookeeper.KeeperException; - -public class CheckZnodeZkCommand extends AbstractZookeeperRetryCommand<Boolean> { - - private String znode; - - public CheckZnodeZkCommand(int maxRetries, int interval, String znode) { - super(maxRetries, interval); - this.znode = znode; - } - - @Override - protected Boolean executeZkCommand(AmbariSolrCloudClient client, SolrZkClient zkClient, SolrZooKeeper solrZooKeeper) throws Exception { - try { - return zkClient.exists(this.znode, false); - } catch (KeeperException e) { - throw new AmbariSolrCloudClientException("Exception during checking znode, " + - "Check zookeeper servers are running (n+1/2) or zookeeper quorum has established or not.", e); - } - } -} http://git-wip-us.apache.org/repos/asf/ambari/blob/8842be0c/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/CreateCollectionCommand.java ---------------------------------------------------------------------- diff --git a/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/CreateCollectionCommand.java b/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/CreateCollectionCommand.java deleted file mode 100644 index 53e96fd..0000000 --- a/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/CreateCollectionCommand.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.ambari.infra.solr.commands; - -import org.apache.ambari.infra.solr.AmbariSolrCloudClient; -import org.apache.ambari.infra.solr.util.ShardUtils; -import org.apache.solr.client.solrj.request.CollectionAdminRequest; -import org.apache.solr.client.solrj.response.CollectionAdminResponse; - -import java.util.ArrayList; -import java.util.List; - -public class CreateCollectionCommand extends AbstractSolrRetryCommand<CollectionAdminRequest.Create ,String> { - - public CreateCollectionCommand(int maxRetries, int interval) { - super(maxRetries, interval); - } - - @Override - public String handleResponse(CollectionAdminResponse response, AmbariSolrCloudClient client) throws Exception { - return client.getCollection(); - } - - @Override - public CollectionAdminRequest.Create createRequest(AmbariSolrCloudClient client) { - CollectionAdminRequest.Create request = new CollectionAdminRequest.Create(); - request.setConfigName(client.getConfigSet()); - request.setCollectionName(client.getCollection()); - request.setNumShards(client.getShards()); - request.setReplicationFactor(client.getReplication()); - request.setMaxShardsPerNode(client.getMaxShardsPerNode()); - if (client.getRouterField() != null && client.getRouterName()!= null) { - request.setRouterName(client.getRouterName()); - request.setRouterField(client.getRouterField()); - } - if (client.isSplitting()) { - request.setShards(ShardUtils.generateShardListStr(client.getMaxShardsPerNode())); - } - return request; - } - - @Override - public String errorMessage(AmbariSolrCloudClient client) { - return String.format("Cannot create collection: '%s'", client.getCollection()); - } -} http://git-wip-us.apache.org/repos/asf/ambari/blob/8842be0c/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/CreateShardCommand.java ---------------------------------------------------------------------- diff --git a/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/CreateShardCommand.java b/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/CreateShardCommand.java deleted file mode 100644 index 9b57827..0000000 --- a/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/CreateShardCommand.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.ambari.infra.solr.commands; - -import org.apache.ambari.infra.solr.AmbariSolrCloudClient; -import org.apache.solr.client.solrj.request.CollectionAdminRequest; -import org.apache.solr.client.solrj.response.CollectionAdminResponse; - -public class CreateShardCommand extends AbstractSolrRetryCommand<CollectionAdminRequest.CreateShard, String> { - - private final String shardName; - - public CreateShardCommand(String shardName, int maxRetries, int interval) { - super(maxRetries, interval); - this.shardName = shardName; - } - - @Override - public String handleResponse(CollectionAdminResponse response, AmbariSolrCloudClient client) throws Exception { - return shardName; - } - - @Override - public CollectionAdminRequest.CreateShard createRequest(AmbariSolrCloudClient client) { - CollectionAdminRequest.CreateShard createShardRequest = new CollectionAdminRequest.CreateShard(); - createShardRequest.setCollectionName(client.getCollection()); - createShardRequest.setShardName(shardName); - return createShardRequest; - } - - @Override - public String errorMessage(AmbariSolrCloudClient client) { - return String.format("Cannot add shard to collection '%s'", client.getCollection()); - } -} http://git-wip-us.apache.org/repos/asf/ambari/blob/8842be0c/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/CreateSolrZnodeZkCommand.java ---------------------------------------------------------------------- diff --git a/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/CreateSolrZnodeZkCommand.java b/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/CreateSolrZnodeZkCommand.java deleted file mode 100644 index 1460a84..0000000 --- a/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/CreateSolrZnodeZkCommand.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.ambari.infra.solr.commands; - -import org.apache.ambari.infra.solr.AmbariSolrCloudClient; -import org.apache.ambari.infra.solr.AmbariSolrCloudClientException; -import org.apache.solr.common.cloud.SolrZkClient; -import org.apache.solr.common.cloud.SolrZooKeeper; -import org.apache.zookeeper.KeeperException; - -public class CreateSolrZnodeZkCommand extends AbstractZookeeperRetryCommand<String> { - - public CreateSolrZnodeZkCommand(int maxRetries, int interval) { - super(maxRetries, interval); - } - - @Override - protected String executeZkCommand(AmbariSolrCloudClient client, SolrZkClient zkClient, SolrZooKeeper solrZooKeeper) throws Exception { - try { - zkClient.makePath(client.getZnode(), true); - return client.getZnode(); - } catch (KeeperException e) { - throw new AmbariSolrCloudClientException("Cannot create ZNode, check zookeeper servers are running (n+1/2), or zookeeper quorum has established or not.",e); - } - } -} http://git-wip-us.apache.org/repos/asf/ambari/blob/8842be0c/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/DownloadConfigZkCommand.java ---------------------------------------------------------------------- diff --git a/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/DownloadConfigZkCommand.java b/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/DownloadConfigZkCommand.java deleted file mode 100644 index 990c3c3..0000000 --- a/ambari-logsearch/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/commands/DownloadConfigZkCommand.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.ambari.infra.solr.commands; - -import org.apache.ambari.infra.solr.AmbariSolrCloudClient; -import org.apache.ambari.infra.solr.AmbariSolrCloudClientException; -import org.apache.solr.common.cloud.ZkConfigManager; - -import java.io.IOException; -import java.nio.file.Path; -import java.nio.file.Paths; - -public class DownloadConfigZkCommand extends AbstractZookeeperConfigCommand<String> { - - public DownloadConfigZkCommand(int maxRetries, int interval) { - super(maxRetries, interval); - } - - @Override - protected String executeZkConfigCommand(ZkConfigManager zkConfigManager, AmbariSolrCloudClient client) throws Exception { - Path configDir = Paths.get(client.getConfigDir()); - String configSet = client.getConfigSet(); - try { - zkConfigManager.downloadConfigDir(configSet, configDir); - return configDir.toString(); - } catch (IOException e){ - throw new AmbariSolrCloudClientException("Error downloading configuration set, check Solr Znode has started or not " + - "(starting Solr (for Log Search) is responsible to create the Znode)" ,e); - } - } -}