<?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.
-->
<assembly>
  <id>hbase-plugin</id>
  <formats>
    <format>tar.gz</format>
  </formats>
  <baseDirectory>${project.parent.name}-${project.version}-hbase-plugin</baseDirectory>
  <includeBaseDirectory>true</includeBaseDirectory>
  <moduleSets>
    <moduleSet>
      <useAllReactorProjects>true</useAllReactorProjects>
      <includes>
        <include>org.apache.ranger:ranger-hbase-plugin-shim</include>
        <include>org.apache.ranger:ranger-plugin-classloader</include>
      </includes>
      <binaries>
        <outputDirectory>lib</outputDirectory>
        <includeDependencies>false</includeDependencies>
        <unpack>false</unpack>
        <directoryMode>755</directoryMode>
        <fileMode>644</fileMode>
      </binaries>
    </moduleSet>

    <moduleSet>
      <useAllReactorProjects>true</useAllReactorProjects>
      <includes>
        <include>org.apache.ranger:ranger-plugins-audit</include>
        <include>org.apache.ranger:ranger-plugins-cred</include>
        <include>org.apache.ranger:ranger-plugins-common</include>
        <include>org.apache.ranger:ranger-hbase-plugin</include>
      </includes>
      <binaries>
        <outputDirectory>lib/ranger-hbase-plugin-impl</outputDirectory>
        <includeDependencies>true</includeDependencies>
        <unpack>false</unpack>
        <directoryMode>755</directoryMode>
        <fileMode>644</fileMode>
        <includes>
          <include>com.sun.jersey:jersey-client:jar:${jersey-bundle.version}</include>
          <include>com.sun.jersey:jersey-core:jar:${jersey-bundle.version}</include>
          <include>org.codehaus.jackson:jackson-jaxrs:jar:${codehaus.jackson.version}</include>
          <include>org.eclipse.jetty:jetty-client:jar:${jetty-client.version}</include>
          <include>org.apache.httpcomponents:httpmime:jar:${httpcomponents.httpmime.version}</include>
          <include>org.noggit:noggit:jar:${noggit.version}</include>
          <include>org.apache.solr:solr-solrj:jar:${solr.version}</include>
          <include>com.google.guava:guava:jar:${google.guava.version}</include>
          <include>com.kstruct:gethostname4j:jar:${kstruct.gethostname4j.version}</include>
          <include>net.java.dev.jna:jna:jar:${jna.version}</include>
          <include>net.java.dev.jna:jna-platform:jar:${jna-platform.version}</include>
          <include>org.elasticsearch:elasticsearch</include>
          <include>org.elasticsearch:elasticsearch-core</include>
          <include>org.elasticsearch:elasticsearch-x-content</include>
          <include>org.elasticsearch.client:elasticsearch-rest-client</include>
          <include>org.elasticsearch.client:elasticsearch-rest-high-level-client</include>
          <include>org.elasticsearch.plugin:rank-eval-client</include>
          <include>org.elasticsearch.plugin:lang-mustache-client</include>
          <include>org.apache.httpcomponents:httpasyncclient:jar:${httpcomponents.httpasyncclient.version}</include>
          <include>org.apache.lucene:lucene-core</include>
          <include>joda-time:joda-time</include>
          <include>com.carrotsearch:hppc</include>
          <include>org.apache.hive:hive-storage-api:jar:${hive.storage-api.version}</include>
          <include>org.apache.orc:orc-core:jar:${orc.version}</include>
          <include>org.apache.orc:orc-shims:jar:${orc.version}</include>
          <include>io.airlift:aircompressor:jar:${aircompressor.version}</include>
        </includes>
      </binaries>
    </moduleSet>

    <moduleSet>
      <useAllReactorProjects>true</useAllReactorProjects>
      <includes>
        <include>org.apache.ranger:ranger-plugins-installer</include>
        <include>org.apache.ranger:credentialbuilder</include>
      </includes>
      <binaries>
        <outputDirectory>install/lib</outputDirectory>
        <includeDependencies>true</includeDependencies>
        <unpack>false</unpack>
        <includes>
          <include>commons-cli:commons-cli</include>
          <include>commons-collections:commons-collections</include>
          <include>org.apache.commons:commons-configuration2:jar:${commons.configuration.version}</include>
          <include>commons-io:commons-io:jar:${commons.io.version}</include>
          <include>commons-lang:commons-lang</include>
          <include>commons-logging:commons-logging:jar:${commons.logging.version}</include>
          <include>org.apache.commons:commons-lang3:jar:${commons.lang3.version}</include>
          <include>org.apache.commons:commons-compress:jar:${commons.compress.version}</include>
          <include>com.google.guava:guava:jar:${google.guava.version}</include>
          <include>org.slf4j:slf4j-api:jar:${slf4j-api.version}</include>
          <include>org.apache.hadoop:hadoop-common:jar:${hadoop.version}</include>
          <include>org.apache.hadoop:hadoop-auth:jar:${hadoop.version}</include>
          <include>org.codehaus.woodstox:stax2-api</include>
          <include>com.fasterxml.woodstox:woodstox-core</include>
          <include>org.apache.htrace:htrace-core4</include>
        </includes>
      </binaries>
    </moduleSet>
  </moduleSets>

  <fileSets>
    <!-- conf.templates for enable -->
    <fileSet>
      <outputDirectory>install/conf.templates/enable</outputDirectory>
      <directory>${project.parent.basedir}/hbase-agent/conf</directory>
      <excludes>
        <exclude>*.sh</exclude>
      </excludes>
      <fileMode>700</fileMode>
    </fileSet>

    <fileSet>
      <outputDirectory>install/conf.templates/disable</outputDirectory>
      <directory>${project.parent.basedir}/hbase-agent/disable-conf</directory>
      <fileMode>700</fileMode>
    </fileSet>

    <fileSet>
      <outputDirectory>install/conf.templates/default</outputDirectory>
      <directory>${project.parent.basedir}/hive-agent/template</directory>
      <fileMode>700</fileMode>
    </fileSet>
    <!-- version file -->
    <fileSet>
      <outputDirectory></outputDirectory>
      <directory>${project.build.outputDirectory}</directory>
      <includes>
        <include>version</include>
      </includes>
      <fileMode>444</fileMode>
    </fileSet>
  </fileSets>
  <!-- enable/disable script for Plugin -->
  <files>
    <file>
      <source>${project.parent.basedir}/agents-common/scripts/enable-agent.sh</source>
      <outputDirectory></outputDirectory>
      <destName>enable-hbase-plugin.sh</destName>
      <fileMode>755</fileMode>
    </file>

    <file>
      <source>${project.parent.basedir}/agents-common/scripts/upgrade-plugin.sh</source>
      <outputDirectory></outputDirectory>
      <destName>upgrade-hbase-plugin.sh</destName>
      <fileMode>755</fileMode>
    </file>

    <file>
      <source>${project.parent.basedir}/agents-common/scripts/upgrade-plugin.py</source>
      <outputDirectory></outputDirectory>
      <fileMode>755</fileMode>
    </file>

    <file>
      <source>${project.parent.basedir}/security-admin/scripts/ranger_credential_helper.py</source>
      <outputDirectory></outputDirectory>
      <fileMode>755</fileMode>
    </file>

    <file>
      <source>${project.parent.basedir}/agents-common/scripts/enable-agent.sh</source>
      <outputDirectory></outputDirectory>
      <destName>disable-hbase-plugin.sh</destName>
      <fileMode>755</fileMode>
    </file>

    <file>
      <source>${project.parent.basedir}/hbase-agent/scripts/install.properties</source>
      <outputDirectory></outputDirectory>
      <destName>install.properties</destName>
      <fileMode>755</fileMode>
    </file>
  </files>
</assembly>
