<!--
  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 xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
  <id>agent</id>
  <formats>
    <format>zip</format>
  </formats>
  <includeBaseDirectory>false</includeBaseDirectory>
  <dependencySets>
    <dependencySet>
      <outputDirectory></outputDirectory>
    </dependencySet>
  </dependencySets>
  <fileSets>
    <fileSet>
      <directory>../scripts/util/</directory>
      <outputDirectory>scripts/util</outputDirectory>
      <directoryMode>555</directoryMode>
      <fileMode>555</fileMode>
      <includes>
        <include>keystore*</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>../scripts/storage/secondary/</directory>
      <outputDirectory>scripts/storage/secondary</outputDirectory>
      <directoryMode>555</directoryMode>
      <fileMode>555</fileMode>
    </fileSet>
    <fileSet>
      <directory>agent/scripts</directory>
      <outputDirectory></outputDirectory>
      <directoryMode>555</directoryMode>
      <fileMode>555</fileMode>
    </fileSet>
    <fileSet>
      <directory>agent/conf</directory>
      <outputDirectory>conf</outputDirectory>
      <directoryMode>555</directoryMode>
      <fileMode>555</fileMode>
      <includes>
        <include>log4j-cloud.xml</include>
        <include>consoleproxy.properties</include>
        <include>agent.properties</include>
        <include>uefi.properties</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>agent/images</directory>
      <outputDirectory>images</outputDirectory>
      <directoryMode>555</directoryMode>
      <fileMode>555</fileMode>
      <includes>
        <include>*.jpg</include>
        <include>*.gif</include>
        <include>*.png</include>
        <include>*.cur</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>agent/js</directory>
      <outputDirectory>js</outputDirectory>
      <directoryMode>555</directoryMode>
      <fileMode>555</fileMode>
      <includes>
        <include>*.js</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>agent/ui</directory>
      <outputDirectory>ui</outputDirectory>
      <directoryMode>555</directoryMode>
      <fileMode>555</fileMode>
      <includes>
        <include>*.ftl</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>agent/css</directory>
      <outputDirectory>css</outputDirectory>
      <directoryMode>555</directoryMode>
      <fileMode>555</fileMode>
      <includes>
        <include>*.css</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>agent/certs</directory>
      <outputDirectory>certs</outputDirectory>
      <directoryMode>555</directoryMode>
      <fileMode>555</fileMode>
      <includes>
        <include>*.keystore</include>
        <include>*.crt</include>
        <include>*.key</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>agent/noVNC</directory>
      <outputDirectory>noVNC</outputDirectory>
      <directoryMode>555</directoryMode>
      <fileMode>555</fileMode>
      <includes>
        <include>**/*</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>agent/packages</directory>
      <outputDirectory>packages</outputDirectory>
      <includes>
        <include>**/*</include>
      </includes>
    </fileSet>
  </fileSets>
</assembly>
