<?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>0.8-incubating-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>

        <titan.storage.backend>hbase</titan.storage.backend>
        <titan.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
        </titan.storage.properties>
        <titan.index.backend>solr5</titan.index.backend>
        <titan.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

#Solr http mode properties
#atlas.graph.index.search.solr.mode=http
#atlas.graph.index.search.solr.http-urls=http://localhost:8983/solr
        </titan.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/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>
                <titan.storage.backend>berkeleyje</titan.storage.backend>
                <titan.storage.properties>#Berkeley
atlas.graph.storage.directory=${sys:atlas.home}/data/berkley
                </titan.storage.properties>
                <titan.index.backend>elasticsearch</titan.index.backend>
                <titan.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
                </titan.index.properties>
		<entity.repository.properties>atlas.EntityAuditRepository.impl=org.apache.atlas.repository.audit.NoopEntityAuditRepository</entity.repository.properties>
            </properties>
        </profile>

        <!-- profile to configure berkeley and elasticsearch 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>
                <titan.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
                </titan.storage.properties>
                <titan.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

#Solr http mode properties
#atlas.graph.index.search.solr.mode=http
#atlas.graph.index.search.solr.http-urls=http://localhost:8983/solr
                </titan.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>
        </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>
