<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>
    <groupId>org.onap.so</groupId>
    <artifactId>packages</artifactId>
    <version>1.12.1-SNAPSHOT</version>
  </parent>

  <packaging>pom</packaging>
  <artifactId>docker</artifactId>
  <name>Docker Images</name>
  <description>Docker Images</description>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <so.project.version>${project.version}</so.project.version>
    <docker.skip>false</docker.skip>
    <docker.skip.build>false</docker.skip.build>
    <docker.skip.push>false</docker.skip.push>
    <docker.pull.registry>nexus3.onap.org:10001</docker.pull.registry>
    <docker.push.registry>nexus3.onap.org:10003</docker.push.registry>
    <docker.image.prefix>onap/so</docker.image.prefix>
    <docker.push.phase>deploy</docker.push.phase>
  </properties>

  <build>
    <finalName>${project.artifactId}-${project.version}</finalName>
    <plugins>
      <plugin>
        <groupId>org.codehaus.groovy.maven</groupId>
        <artifactId>gmaven-plugin</artifactId>
        <version>1.0</version>
        <executions>
          <execution>
            <phase>validate</phase>
            <goals>
              <goal>execute</goal>
            </goals>
            <configuration>
              <source>
                println 'Project version: ' + project.properties['so.project.version'];
                def versionArray;
                if ( project.properties['so.project.version'] != null ) {
                  versionArray = project.properties['so.project.version'].split('-');
                }

                if ( project.properties['so.project.version'].endsWith("-SNAPSHOT") ) {
                  project.properties['project.docker.latesttag.version']=versionArray[0] + "-SNAPSHOT-latest";
                } else {
                  project.properties['project.docker.latesttag.version']=versionArray[0] + "-STAGING-latest";
                }

                println 'New tag for docker: ' + project.properties['project.docker.latesttag.version'];
              </source>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>io.fabric8</groupId>
        <artifactId>docker-maven-plugin</artifactId>
        <version>0.31.0</version>
        <configuration combine.self="override">
          <verbose>true</verbose>
          <apiVersion>1.23</apiVersion>
          <pullRegistry>${docker.pull.registry}</pullRegistry>
          <pushRegistry>${docker.push.registry}</pushRegistry>
          <images>
            <image>
              <name>${docker.image.prefix}/base-image:1.0</name>
              <build>
                <cleanup>try</cleanup>
                <dockerFile>docker-files/Dockerfile.so-base-image</dockerFile>
              </build>
            </image>
            <image>
              <name>${docker.image.prefix}/catalog-db-adapter</name>
              <build>
                <cleanup>try</cleanup>
                <dockerFile>docker-files/Dockerfile.so-app</dockerFile>
                <tags>
                  <tag>${project.version}</tag>
                  <tag>${project.version}-${maven.build.timestamp}</tag>
                  <tag>${project.docker.latesttag.version}</tag>
                </tags>
                <assembly>
                  <inline>
                    <dependencySets>
                      <dependencySet>
                        <includes>
                          <include>org.onap.so.adapters:mso-catalog-db-adapter</include>
                        </includes>
                        <outputFileNameMapping>app.jar</outputFileNameMapping>
                      </dependencySet>
                    </dependencySets>
                  </inline>
                </assembly>
              </build>
            </image>
            <image>
              <name>${docker.image.prefix}/request-db-adapter</name>
              <build>
                <cleanup>try</cleanup>
                <dockerFile>docker-files/Dockerfile.so-app</dockerFile>
                <tags>
                  <tag>${project.version}</tag>
                  <tag>${project.version}-${maven.build.timestamp}</tag>
                  <tag>${project.docker.latesttag.version}</tag>
                </tags>
                <assembly>
                  <inline>
                    <dependencySets>
                      <dependencySet>
                        <includes>
                          <include>org.onap.so.adapters:mso-requests-db-adapter</include>
                        </includes>
                        <outputFileNameMapping>app.jar</outputFileNameMapping>
                      </dependencySet>
                    </dependencySets>
                  </inline>
                </assembly>
              </build>
            </image>
            <image>
              <name>${docker.image.prefix}/sdnc-adapter</name>
              <build>
                <cleanup>try</cleanup>
                <dockerFile>docker-files/Dockerfile.so-app</dockerFile>
                <tags>
                  <tag>${project.version}</tag>
                  <tag>${project.version}-${maven.build.timestamp}</tag>
                  <tag>${project.docker.latesttag.version}</tag>
                </tags>
                <assembly>
                  <inline>
                    <dependencySets>
                      <dependencySet>
                        <includes>
                          <include>org.onap.so:mso-sdnc-adapter</include>
                        </includes>
                        <outputFileNameMapping>app.jar</outputFileNameMapping>
                      </dependencySet>
                    </dependencySets>
                  </inline>
                </assembly>
              </build>
            </image>
            <image>
              <name>${docker.image.prefix}/openstack-adapter</name>
              <build>
                <cleanup>try</cleanup>
                <dockerFile>docker-files/Dockerfile.so-app</dockerFile>
                <tags>
                  <tag>${project.version}</tag>
                  <tag>${project.version}-${maven.build.timestamp}</tag>
                  <tag>${project.docker.latesttag.version}</tag>
                </tags>
                <assembly>
                  <inline>
                    <dependencySets>
                      <dependencySet>
                        <includes>
                          <include>org.onap.so:mso-openstack-adapters</include>
                        </includes>
                        <outputFileNameMapping>app.jar</outputFileNameMapping>
                      </dependencySet>
                    </dependencySets>
                  </inline>
                </assembly>
              </build>
            </image>
            <image>
              <name>${docker.image.prefix}/so-appc-orchestrator</name>
              <build>
                <cleanup>try</cleanup>
                <dockerFile>docker-files/Dockerfile.so-app</dockerFile>
                <tags>
                  <tag>${project.version}</tag>
                  <tag>${project.version}-${maven.build.timestamp}</tag>
                  <tag>${project.docker.latesttag.version}</tag>
                </tags>
                <assembly>
                  <inline>
                    <dependencySets>
                      <dependencySet>
                        <includes>
                          <include>org.onap.so.adapters:so-appc-orchestrator</include>
                        </includes>
                        <outputFileNameMapping>app.jar</outputFileNameMapping>
                      </dependencySet>
                    </dependencySets>
                  </inline>
                </assembly>
              </build>
            </image>
            <image>
              <name>${docker.image.prefix}/sdc-controller</name>
              <build>
                <cleanup>try</cleanup>
                <dockerFile>docker-files/Dockerfile.so-app</dockerFile>
                <tags>
                  <tag>${project.version}</tag>
                  <tag>${project.version}-${maven.build.timestamp}</tag>
                  <tag>${project.docker.latesttag.version}</tag>
                </tags>
                <assembly>
                  <inline>
                    <dependencySets>
                      <dependencySet>
                        <includes>
                          <include>org.onap.so:asdc-controller</include>
                        </includes>
                        <outputFileNameMapping>app.jar</outputFileNameMapping>
                      </dependencySet>
                    </dependencySets>
                  </inline>
                </assembly>
              </build>
            </image>
            <image>
              <name>${docker.image.prefix}/bpmn-infra</name>
              <build>
                <cleanup>try</cleanup>
                <dockerFile>docker-files/Dockerfile.so-app</dockerFile>
                <tags>
                  <tag>${project.version}</tag>
                  <tag>${project.version}-${maven.build.timestamp}</tag>
                  <tag>${project.docker.latesttag.version}</tag>
                </tags>
                <assembly>
                  <inline>
                    <dependencySets>
                      <dependencySet>
                        <includes>
                          <include>org.onap.so:mso-infrastructure-bpmn</include>
                        </includes>
                        <outputFileNameMapping>app.jar</outputFileNameMapping>
                      </dependencySet>
                    </dependencySets>
                  </inline>
                </assembly>
              </build>
            </image>
            <image>
              <name>${docker.image.prefix}/api-handler-infra</name>
              <build>
                <cleanup>try</cleanup>
                <dockerFile>docker-files/Dockerfile.so-app</dockerFile>
                <tags>
                  <tag>${project.version}</tag>
                  <tag>${project.version}-${maven.build.timestamp}</tag>
                  <tag>${project.docker.latesttag.version}</tag>
                </tags>
                <assembly>
                  <inline>
                    <dependencySets>
                      <dependencySet>
                        <includes>
                          <include>org.onap.so:mso-api-handler-infra</include>
                        </includes>
                        <outputFileNameMapping>app.jar</outputFileNameMapping>
                      </dependencySet>
                    </dependencySets>
                  </inline>
                </assembly>
              </build>
            </image>
            <image>
              <name>${docker.image.prefix}/so-simulator</name>
              <build>
                <cleanup>try</cleanup>
                <dockerFile>docker-files/Dockerfile.so-app</dockerFile>
                <tags>
                  <tag>${project.version}</tag>
                  <tag>${project.version}-${maven.build.timestamp}</tag>
                  <tag>${project.docker.latesttag.version}</tag>
                </tags>
                <assembly>
                  <inline>
                    <dependencySets>
                      <dependencySet>
                        <includes>
                          <include>org.onap.so.simulator:so-simulator</include>
                        </includes>
                        <outputFileNameMapping>app.jar</outputFileNameMapping>
                      </dependencySet>
                    </dependencySets>
                  </inline>
                </assembly>
              </build>
            </image>
          </images>
        </configuration>

        <executions>
          <execution>
            <id>clean-images</id>
            <phase>pre-clean</phase>
            <goals>
              <goal>remove</goal>
            </goals>
            <configuration>
              <removeAll>true</removeAll>
            </configuration>
          </execution>

          <execution>
            <id>generate-images</id>
            <phase>generate-sources</phase>
            <goals>
              <goal>build</goal>
            </goals>
          </execution>

          <execution>
            <id>push-images</id>
            <phase>${docker.push.phase}</phase>
            <goals>
              <goal>build</goal>
              <goal>push</goal>
            </goals>
            <configuration>
              <image>${docker.image.prefix}/catalog-db-adapter,${docker.image.prefix}/request-db-adapter,${docker.image.prefix}/sdnc-adapter,${docker.image.prefix}/openstack-adapter,${docker.image.prefix}/sdc-controller,${docker.image.prefix}/bpmn-infra,${docker.image.prefix}/api-handler-infra,${docker.image.prefix}/so-simulator</image>
            </configuration>
          </execution>
        </executions>
      </plugin>

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

  <dependencies>
    <dependency>
      <groupId>org.onap.so.adapters</groupId>
      <artifactId>mso-catalog-db-adapter</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.onap.so.adapters</groupId>
      <artifactId>mso-requests-db-adapter</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.onap.so</groupId>
      <artifactId>mso-sdnc-adapter</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.onap.so</groupId>
      <artifactId>mso-openstack-adapters</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.onap.so.adapters</groupId>
      <artifactId>so-appc-orchestrator</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.onap.so</groupId>
      <artifactId>asdc-controller</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.onap.so</groupId>
      <artifactId>mso-infrastructure-bpmn</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.onap.so</groupId>
      <artifactId>mso-api-handler-infra</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.onap.so.simulator</groupId>
      <artifactId>so-simulator</artifactId>
      <version>${project.version}</version>
    </dependency>
  </dependencies>
</project>
