<?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>admin</id> 
  <formats>
     <format>tar.gz</format>
     <format>zip</format>
  </formats>
  <baseDirectory>${project.name}-${project.version}-admin</baseDirectory>
  <includeBaseDirectory>true</includeBaseDirectory>
  <moduleSets>

    <moduleSet>
     <binaries>
        <includeDependencies>false</includeDependencies>
        <unpack>true</unpack>
        <outputDirectory>/ews/webapp</outputDirectory>
     </binaries>
     <includes>
		<include>org.apache.ranger:security-admin-web</include>
     </includes>
    </moduleSet>

    <moduleSet>
     <binaries>
        <includeDependencies>false</includeDependencies>
        <unpack>false</unpack>
        <outputDirectory>/ews/ranger_jaas</outputDirectory>
     </binaries>
     <includes>
		<include>org.apache.ranger:unixauthclient</include>
     </includes>
    </moduleSet>

    <moduleSet>
     <binaries>
        <includeDependencies>false</includeDependencies>
        <outputDirectory>/ews/webapp/WEB-INF/classes/ranger-plugins/hdfs</outputDirectory>
        <unpack>false</unpack>
        <directoryMode>755</directoryMode>
        <fileMode>644</fileMode>
     </binaries>
     <includes>
       <include>org.apache.ranger:ranger-hdfs-plugin</include>
     </includes>
    </moduleSet>

    <moduleSet>
     <binaries>
        <includeDependencies>true</includeDependencies>
        <outputDirectory>/ews/webapp/WEB-INF/classes/ranger-plugins/hive</outputDirectory>
        <unpack>false</unpack>
        <directoryMode>755</directoryMode>
        <fileMode>644</fileMode>
        <dependencySets>
          <dependencySet>
            <includes>
              <include>org.apache.hive:hive-common:jar:${hive.version}</include>
              <include>org.apache.hive:hive-service:jar:${hive.version}</include>
              <include>org.apache.hive:hive-exec:jar:${hive.version}</include>
              <include>org.apache.hive:hive-jdbc:jar:${hive.version}</include>
              <include>org.apache.hive:hive-metastore:jar:${hive.version}</include>
              <include>org.apache.thrift:libfb303:jar:${hive.thrift.version}</include>
              <include>org.apache.thrift:libthrift:jar:${hive.thrift.version}</include>
            </includes>
          </dependencySet>
        </dependencySets>
     </binaries>
     <includes>
       <include>org.apache.ranger:ranger-hive-plugin</include>
     </includes>
    </moduleSet>


    <moduleSet>
     <binaries>
        <includeDependencies>true</includeDependencies>
        <outputDirectory>/ews/webapp/WEB-INF/classes/ranger-plugins/hbase</outputDirectory>
        <unpack>false</unpack>
        <directoryMode>755</directoryMode>
        <fileMode>644</fileMode>
        <dependencySets>
          <dependencySet>
            <includes>
              <include>org.apache.hbase:hbase-common:jar:${hbase.version}</include>
              <include>org.apache.hbase:hbase-client:jar:${hbase.version}</include>
              <include>org.apache.hbase:hbase-protocol:jar:${hbase.version}</include>
              <include>org.apache.hbase:hbase-server:jar:${hbase.version}</include>
              <include>org.apache.htrace:htrace-core</include>
            </includes>
          </dependencySet>
        </dependencySets>
     </binaries>
     <includes>
       <include>org.apache.ranger:ranger-hbase-plugin</include>
     </includes>
    </moduleSet>

    <moduleSet>
     <binaries>
        <includeDependencies>true</includeDependencies>
        <outputDirectory>/ews/webapp/WEB-INF/classes/ranger-plugins/knox</outputDirectory>
        <unpack>false</unpack>
        <directoryMode>755</directoryMode>
        <fileMode>644</fileMode>
        <dependencySets>
          <dependencySet>
            <includes>
              <include>commons-lang:commons-lang:jar:${commons.lang.version}</include>
              <include>commons-collections:commons-collections:jar:${commons.collections.version}</include>
              <include>org.codehaus.jackson:jackson-core-asl:jar:${codehaus.jackson.version}</include>
              <include>org.codehaus.jackson:jackson-mapper-asl:jar:${codehaus.jackson.version}</include>
            </includes>
          </dependencySet>
        </dependencySets>
     </binaries>
     <includes>
       <include>org.apache.ranger:ranger-knox-plugin</include>
     </includes>
    </moduleSet>

    <moduleSet>
     <binaries>
        <includeDependencies>true</includeDependencies>
        <outputDirectory>/ews/webapp/WEB-INF/classes/ranger-plugins/storm</outputDirectory>
        <unpack>false</unpack>
        <directoryMode>755</directoryMode>
        <fileMode>644</fileMode>
        <dependencySets>
          <dependencySet>
            <includes>
              <include>org.apache.storm:storm-core:jar:0.9.2-incubating</include>
            </includes>
          </dependencySet>
        </dependencySets>
     </binaries>
     <includes>
       <include>org.apache.ranger:ranger-storm-plugin</include>
     </includes>
    </moduleSet>

    <moduleSet>
     <binaries>
        <includeDependencies>true</includeDependencies>
        <outputDirectory>/ews/webapp/WEB-INF/classes/ranger-plugins/yarn</outputDirectory>
        <unpack>false</unpack>
        <directoryMode>755</directoryMode>
        <fileMode>644</fileMode>
        <dependencySets>
          <dependencySet>
            <includes>
              <include>org.apache.hadoop:hadoop-yarn-api:jar:${hadoop.version}</include>
              <include>org.apache.hadoop:hadoop-yarn-common:jar:${hadoop.version}</include>
            </includes>
          </dependencySet>
        </dependencySets>
     </binaries>
     <includes>
       <include>org.apache.ranger:ranger-yarn-plugin</include>
     </includes>
    </moduleSet>

    <moduleSet>
     <binaries>
        <includeDependencies>true</includeDependencies>
        <outputDirectory>/ews/webapp/WEB-INF/classes/ranger-plugins/kms</outputDirectory>
        <unpack>false</unpack>
        <directoryMode>755</directoryMode>
        <fileMode>644</fileMode>
     </binaries>
     <includes>
       <include>org.apache.ranger:ranger-kms-plugin</include>
     </includes>
    </moduleSet>

    <moduleSet>
     <binaries>
        <includeDependencies>false</includeDependencies>
        <outputDirectory>/ews/lib</outputDirectory>
        <unpack>false</unpack>
        <directoryMode>755</directoryMode>
        <fileMode>644</fileMode>
        <dependencySets>
            <dependencySet>
                <outputDirectory>/ews/lib</outputDirectory>
                <includes>
                    <include>org.apache.tomcat.embed:tomcat-embed*</include>
                    <include>org.apache.tomcat:tomcat-annotations-api*</include>
                    <include>org.eclipse.jdt.core.compiler:ecj:jar:P20140317-1600</include>
                    <include>log4j:log4j</include>
		    		<include>org.apache.hadoop:hadoop-auth:jar:${hadoop.version}</include>
		    		<include>org.apache.ranger:ranger-plugins-common</include>                    
		   			<include>org.slf4j:slf4j-api</include>
                    <include>org.apache.hadoop:hadoop-common</include>
                    <include>commons-logging:commons-logging</include>
                    <include>com.sun.jersey.contribs:jersey-multipart</include>
                    <include>com.google.guava:guava</include>
                    <include>commons-collections:commons-collections</include>
                    <include>commons-configuration:commons-configuration</include>
                    <include>commons-lang:commons-lang</include>
                </includes>
                <unpack>false</unpack>
            </dependencySet>
        </dependencySets>
     </binaries>
     <includes>
	    <include>org.apache.ranger:embeddedwebserver</include>
     </includes>
    </moduleSet>


    <moduleSet>
     <binaries>
        <includeDependencies>false</includeDependencies>
        <outputDirectory>/cred/lib</outputDirectory>
        <unpack>false</unpack>
        <directoryMode>755</directoryMode>
        <fileMode>644</fileMode>
        <dependencySets>
            <dependencySet>
                <outputDirectory>/cred/lib</outputDirectory>
                <unpack>false</unpack>
   				<includes>
                    <include>commons-cli:commons-cli</include>
                    <include>commons-collections:commons-collections</include>
                    <include>commons-configuration:commons-configuration</include>
                    <include>commons-io:commons-io:jar:${commons.io.version}</include>
                    <include>commons-lang:commons-lang</include>
                    <include>commons-logging:commons-logging</include>
                    <include>com.google.guava:guava</include>
                    <include>org.slf4j:slf4j-api</include>
                    <include>org.apache.hadoop:hadoop-common</include>
                    <include>org.apache.hadoop:hadoop-auth</include>
              		<include>org.apache.htrace:htrace-core</include>
				</includes>
            </dependencySet>
        </dependencySets>
     </binaries>
     <includes>
	    <include>org.apache.ranger:credentialbuilder</include>
     </includes>
    </moduleSet>
<moduleSet>
     <binaries>
        <includeDependencies>false</includeDependencies>
        <outputDirectory>/jisql/lib</outputDirectory>
        <unpack>false</unpack>
        <directoryMode>755</directoryMode>
        <fileMode>644</fileMode>
        <dependencySets>
            <dependencySet>
                <outputDirectory>/jisql/lib</outputDirectory>
                <unpack>false</unpack>
				<includes>
                    <include>net.sf.jopt-simple:jopt-simple</include>
				</includes>
            </dependencySet>
        </dependencySets>
     </binaries>
     <includes>
	    <include>org.apache.ranger:jisql</include>
     </includes>
    </moduleSet>
    
    	     <moduleSet>
     			<binaries>
        			<includeDependencies>true</includeDependencies>
        			<outputDirectory>/ews/webapp/WEB-INF/classes/ranger-plugins/kafka</outputDirectory>
        			<unpack>false</unpack>
        			<directoryMode>755</directoryMode>
        			<fileMode>644</fileMode>
     			</binaries>
     			<includes>
       				<include>org.apache.ranger:ranger-kafka-plugin</include>
     			</includes>
    		</moduleSet>
    		
    		<moduleSet>
     			<binaries>
        			<includeDependencies>true</includeDependencies>
        			<outputDirectory>/ews/webapp/WEB-INF/classes/ranger-plugins/solr</outputDirectory>
        			<unpack>false</unpack>
        			<directoryMode>755</directoryMode>
        			<fileMode>644</fileMode>
     			</binaries>
     			<includes>
       				<include>org.apache.ranger:ranger-solr-plugin</include>
     			</includes>
    		</moduleSet>

      <moduleSet>
          <binaries>
              <includeDependencies>true</includeDependencies>
              <outputDirectory>/ews/webapp/WEB-INF/classes/ranger-plugins/nifi</outputDirectory>
              <unpack>false</unpack>
              <directoryMode>755</directoryMode>
              <fileMode>644</fileMode>
          </binaries>
          <includes>
              <include>org.apache.ranger:ranger-nifi-plugin</include>
          </includes>
      </moduleSet>

      <moduleSet>
          <binaries>
              <includeDependencies>true</includeDependencies>
              <outputDirectory>/ews/webapp/WEB-INF/classes/ranger-plugins/atlas</outputDirectory>
              <unpack>false</unpack>
              <directoryMode>755</directoryMode>
              <fileMode>644</fileMode>
          </binaries>
          <includes>
              <include>org.apache.ranger:ranger-atlas-plugin</include>
          </includes>
      </moduleSet>

  </moduleSets>

  <fileSets>
	<fileSet>
		<outputDirectory>/ews</outputDirectory>
		<directory>embeddedwebserver/scripts</directory>
		<fileMode>544</fileMode>
	</fileSet>
	<fileSet>
		<outputDirectory>/ews/webapp/WEB-INF/classes/conf.dist</outputDirectory>
		<directory>embeddedwebserver/conf</directory>
		<fileMode>700</fileMode>
	</fileSet>
	<fileSet>
		<outputDirectory>/db</outputDirectory>
		<directory>security-admin/db</directory>
		<fileMode>544</fileMode>
	</fileSet>

	<fileSet>
		<outputDirectory>/contrib</outputDirectory>
		<directory>security-admin/contrib</directory>
		<fileMode>544</fileMode>
	</fileSet>

	<fileSet>
		<outputDirectory>/</outputDirectory>
		<directory>security-admin/scripts</directory>
		<includes>
			<include>install.properties</include>
		</includes>
		<fileMode>700</fileMode>
	</fileSet>
	<fileSet>
		<outputDirectory>/</outputDirectory>
		<directory>security-admin/scripts</directory>
		<includes>
			<include>setup.sh</include>
			<include>setup_authentication.sh</include>
			<include>set_globals.sh</include>
			<include>db_setup.py</include>
			<include>dba_script.py</include>
			<include>restrict_permissions.py</include>
			<include>upgrade_admin.py</include>
			<include>upgrade.sh</include>
			<include>update_property.py</include>
			<include>ranger_credential_helper.py</include>
			<include>deleteUserGroupUtil.py</include>
			<include>changepasswordutil.py</include>
                <include>changeusernameutil.py</include>
                <include>rolebasedusersearchutil.py</include>
		</includes>
		<fileMode>544</fileMode>
	</fileSet>
	<fileSet>
		<outputDirectory>/templates-upgrade</outputDirectory>
		<directory>security-admin/scripts</directory>
		<includes>
			<include>install.properties</include>
			<include>ranger-admin-site-template.xml</include>
		</includes>
	</fileSet>
	<fileSet>
		<outputDirectory>/</outputDirectory>
		<directory>security-admin</directory>
		<includes>
			<include>3rd_party_licenses.txt</include>
			<include>3rd_party_licenses_text.txt</include>
		</includes>
		<fileMode>444</fileMode>
	</fileSet>
	<fileSet>
		<outputDirectory>/</outputDirectory>
		<directory>${project.build.directory}</directory>
		<includes>
			<include>version</include>
		</includes>
		<fileMode>444</fileMode>
	</fileSet>
   <fileSet>
        <directory>security-admin/src/bin</directory>
        <outputDirectory>bin</outputDirectory>
        <fileMode>0755</fileMode>
        <directoryMode>0755</directoryMode>
    </fileSet>
  </fileSets>
</assembly>
