<?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">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <artifactId>apache-atlas</artifactId>
        <groupId>org.apache.atlas</groupId>
        <version>1.0.0-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>
    <artifactId>atlas-distro</artifactId>
    <description>Apache Atlas Distribution</description>
    <name>Apache Atlas Distribution</name>

    <!-- by default configure hbase and solr with the distribution -->
    <properties>

        <graph.storage.backend>hbase</graph.storage.backend>
        <graph.storage.properties>#Hbase
#For standalone mode , specify localhost
#for distributed mode, specify zookeeper quorum here - For more information refer http://s3.thinkaurelius.com/docs/titan/current/hbase.html#_remote_server_mode_2
atlas.graph.storage.hostname=
atlas.graph.storage.hbase.regions-per-server=1
atlas.graph.storage.lock.wait-time=10000
        </graph.storage.properties>
        <graph.index.backend>solr</graph.index.backend>
        <graph.index.properties>#Solr
#Solr cloud mode properties
atlas.graph.index.search.solr.mode=cloud
atlas.graph.index.search.solr.zookeeper-url=
atlas.graph.index.search.solr.zookeeper-connect-timeout=60000
atlas.graph.index.search.solr.zookeeper-session-timeout=60000
atlas.graph.index.search.solr.wait-searcher=true

#Solr http mode properties
#atlas.graph.index.search.solr.mode=http
#atlas.graph.index.search.solr.http-urls=http://localhost:8983/solr
        </graph.index.properties>
        <hbase.embedded>false</hbase.embedded>
        <solr.embedded>false</solr.embedded>
	<entity.repository.properties>atlas.EntityAuditRepository.impl=org.apache.atlas.repository.audit.HBaseBasedAuditRepository</entity.repository.properties>
    </properties>

    <profiles>
        <profile>
            <id>Windows</id>
            <activation>
                <os>
                    <family>windows</family>
                </os>
            </activation>
            <properties>
                <python.path.l>
                    ${project.basedir}\src\bin;${project.basedir}\src\test\python\scripts;${project.basedir}\src\test\mock
                </python.path.l>
            </properties>
        </profile>

        <profile>
            <id>Linux</id>
            <activation>
                <os>
                    <family>!windows</family>
                </os>
            </activation>
            <properties>
                <python.path.l>
                    ${project.basedir}/src/bin:${project.basedir}/src/test/mock:${project.basedir}/src/test/python/scripts
                </python.path.l>
            </properties>
        </profile>

        <profile>
            <id>dist</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-assembly-plugin</artifactId>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>single</goal>
                                </goals>
                                <phase>package</phase>
                                <configuration>
                                    <skipAssembly>false</skipAssembly>
                                    <descriptors>
                                        <descriptor>src/main/assemblies/atlas-hbase-hook-package.xml</descriptor>
                                        <descriptor>src/main/assemblies/atlas-hive-hook-package.xml</descriptor>
                                        <descriptor>src/main/assemblies/atlas-falcon-hook-package.xml</descriptor>
                                        <descriptor>src/main/assemblies/atlas-sqoop-hook-package.xml</descriptor>
                                        <descriptor>src/main/assemblies/atlas-storm-hook-package.xml</descriptor>
                                        <descriptor>src/main/assemblies/standalone-package.xml</descriptor>
                                        <descriptor>src/main/assemblies/src-package.xml</descriptor>
                                    </descriptors>
                                    <finalName>apache-atlas-${project.version}</finalName>
                                    <tarLongFileMode>gnu</tarLongFileMode>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <!-- profile to configure berkeley and elasticsearch with the distribution -->
        <profile>
            <id>berkeley-elasticsearch</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <graph.storage.backend>berkeleyje</graph.storage.backend>
                <graph.storage.properties>#Berkeley
atlas.graph.storage.directory=${sys:atlas.home}/data/berkeley
atlas.graph.storage.lock.clean-expired=true
atlas.graph.storage.lock.expiry-time=500
atlas.graph.storage.lock.wait-time=300
                </graph.storage.properties>
                <graph.index.backend>elasticsearch</graph.index.backend>
                <graph.index.properties>#ElasticSearch
atlas.graph.index.search.directory=${sys:atlas.home}/data/es
atlas.graph.index.search.elasticsearch.client-only=false
atlas.graph.index.search.elasticsearch.local-mode=true
atlas.graph.index.search.elasticsearch.create.sleep=2000
                </graph.index.properties>
		        <entity.repository.properties>atlas.EntityAuditRepository.impl=org.apache.atlas.repository.audit.NoopEntityAuditRepository</entity.repository.properties>
            </properties>
        </profile>

        <!-- profile to configure external hbase and solr  with the distribution -->
        <profile>
            <id>external-hbase-solr</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>

        <!-- profile to package and configure embedded hbase and solr with the distribution -->
        <profile>
            <id>embedded-hbase-solr</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <graph.storage.properties>#Hbase
#For standalone mode , specify localhost
#for distributed mode, specify zookeeper quorum here - For more information refer http://s3.thinkaurelius.com/docs/titan/current/hbase.html#_remote_server_mode_2
atlas.graph.storage.hostname=localhost
atlas.graph.storage.hbase.regions-per-server=1
atlas.graph.storage.lock.wait-time=10000
                </graph.storage.properties>
                <graph.index.properties>#Solr
#Solr cloud mode properties
atlas.graph.index.search.solr.mode=cloud
atlas.graph.index.search.solr.zookeeper-url=localhost:2181
atlas.graph.index.search.solr.zookeeper-connect-timeout=60000
atlas.graph.index.search.solr.zookeeper-session-timeout=60000
atlas.graph.index.search.solr.wait-searcher=true

#Solr http mode properties
#atlas.graph.index.search.solr.mode=http
#atlas.graph.index.search.solr.http-urls=http://localhost:8983/solr
                </graph.index.properties>

                <hbase.embedded>true</hbase.embedded>
                <solr.embedded>true</solr.embedded>

                <hbase.dir>${project.build.directory}/hbase</hbase.dir>
                <hbase.tar>http://archive.apache.org/dist/hbase/${hbase.version}/hbase-${hbase.version}-bin.tar.gz</hbase.tar>
                <hbase.folder>hbase-${hbase.version}</hbase.folder>

                <solr.dir>${project.build.directory}/solr</solr.dir>
                <solr.tar>http://archive.apache.org/dist/lucene/solr/${solr.version}/solr-${solr.version}.tgz</solr.tar>
                <solr.folder>solr-${solr.version}</solr.folder>
            </properties>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <version>1.7</version>
                        <executions>
                            <!-- package hbase -->
                            <execution>
                                <id>hbase</id>
                                <phase>generate-resources</phase>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                                <configuration>
                                    <target name="Download HBase">
                                        <mkdir dir="${hbase.dir}" />
                                        <mkdir dir="${project.basedir}/hbase" />
                                        <get src="${hbase.tar}" dest="${project.basedir}/hbase/${hbase.folder}.tar.gz" usetimestamp="true" verbose="true" skipexisting="true" />
                                        <untar src="${project.basedir}/hbase/${hbase.folder}.tar.gz" dest="${project.build.directory}/hbase.temp" compression="gzip" />
                                        <copy todir="${hbase.dir}">
                                            <fileset dir="${project.build.directory}/hbase.temp/${hbase.folder}">
                                                <include name="**/*" />
                                            </fileset>
                                        </copy>
                                    </target>
                                </configuration>
                            </execution>
                            <!-- package solr -->
                            <execution>
                                <id>solr</id>
                                <phase>generate-resources</phase>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                                <configuration>
                                    <target name="Download SOLR">
                                        <mkdir dir="${solr.dir}" />
                                        <mkdir dir="${project.basedir}/solr" />
                                        <get src="${solr.tar}" dest="${project.basedir}/solr/${solr.folder}.tgz" usetimestamp="true" verbose="true" skipexisting="true" />
                                        <untar src="${project.basedir}/solr/${solr.folder}.tgz" dest="${project.build.directory}/solr.temp" compression="gzip" />
                                        <copy todir="${solr.dir}">
                                            <fileset dir="${project.build.directory}/solr.temp/${solr.folder}">
                                                <include name="**/*" />
                                            </fileset>
                                        </copy>
                                    </target>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

    <build>
        <outputDirectory>target</outputDirectory>
        <resources>
            <resource>
                <directory>src/bin</directory>
                <filtering>true</filtering>
                <includes>
                    <include>**/*.py</include>
                </includes>
                <targetPath>bin</targetPath>
            </resource>
            <resource>
                <directory>src/conf</directory>
                <filtering>true</filtering>
                <targetPath>conf</targetPath>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.2.1</version>
                <inherited>false</inherited>
                <executions>
                    <execution>
                        <configuration>
                            <skip>${skipTests}</skip>
                            <executable>python</executable>
                            <workingDirectory>src/test/python</workingDirectory>
                            <arguments>
                                <argument>unitTests.py</argument>
                            </arguments>
                            <environmentVariables>
                                <PYTHONPATH>${python.path.l}</PYTHONPATH>
                            </environmentVariables>
                        </configuration>
                        <id>python-test</id>
                        <phase>test</phase>
                        <goals>
                            <goal>exec</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-deploy-plugin</artifactId>
                <version>2.7</version>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <!--Add a dependency here to ensure this module is the final one built-->
    <dependencies>
        <dependency>
            <groupId>org.apache.atlas</groupId>
            <artifactId>storm-bridge</artifactId>
        </dependency>
    </dependencies>
</project>
