<?xml version="1.0" encoding="UTF-8"?>
<!--

  Licensed to jclouds, Inc. (jclouds) under one or more
  contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  jclouds 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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.jclouds</groupId>
    <artifactId>jclouds-project</artifactId>
    <version>1.3.0-SNAPSHOT</version>
    <relativePath>../../project/pom.xml</relativePath>
  </parent>
  <groupId>org.jclouds.api</groupId>
  <artifactId>nova</artifactId>
  <name>jcloud nova api</name>
  <description>jclouds components to access an implementation of OpenStack Nova</description>
  <packaging>bundle</packaging>

  <properties>
    <test.nova.endpoint>http://localhost:8773/services/Cloud</test.nova.endpoint>
    <test.nova.apiversion>1.1</test.nova.apiversion>
    <test.nova.identity>FIXME_IDENTITY</test.nova.identity>
    <test.nova.credential>FIXME_CREDENTIALS</test.nova.credential>
    <test.nova.image-id></test.nova.image-id>
    <test.nova.image.login-user></test.nova.image.login-user>
    <test.nova.image.authenticate-sudo></test.nova.image.authenticate-sudo>
    <test.ssh.keyfile.public></test.ssh.keyfile.public>
    <test.ssh.keyfile.private></test.ssh.keyfile.private>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.jclouds.common</groupId>
      <artifactId>openstack-common</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.jclouds</groupId>
      <artifactId>jclouds-compute</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.jclouds</groupId>
      <artifactId>jclouds-core</artifactId>
      <version>${project.version}</version>
      <type>test-jar</type>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.jclouds.common</groupId>
      <artifactId>openstack-common</artifactId>
      <version>${project.version}</version>
      <type>test-jar</type>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.jclouds</groupId>
      <artifactId>jclouds-compute</artifactId>
      <version>${project.version}</version>
      <type>test-jar</type>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.jclouds.driver</groupId>
      <artifactId>jclouds-sshj</artifactId>
      <version>${project.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.jclouds.driver</groupId>
      <artifactId>jclouds-log4j</artifactId>
      <version>${project.version}</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  
  <profiles>
    <profile>
      <id>live</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <dependencies>
              <dependency>
                <groupId>org.apache.maven.surefire</groupId>
                <artifactId>surefire-testng</artifactId>
              </dependency>
            </dependencies>
            <executions>
              <execution>
                <id>integration</id>
                <phase>integration-test</phase>
                <goals>
                  <goal>test</goal>
                </goals>
                <configuration>
                  <systemPropertyVariables>
                    <test.nova.endpoint>${test.nova.endpoint}</test.nova.endpoint>
                    <test.nova.apiversion>${test.nova.apiversion}</test.nova.apiversion>
                    <test.nova.identity>${test.nova.identity}</test.nova.identity>
                    <test.nova.credential>${test.nova.credential}</test.nova.credential>
                    <test.nova.image-id>${test.nova.image-id}</test.nova.image-id>
                    <test.nova.image.login-user>${test.nova.image.login-user}</test.nova.image.login-user>
                    <test.nova.image.authenticate-sudo>${test.nova.image.authenticate-sudo}</test.nova.image.authenticate-sudo>
                    <test.ssh.keyfile.public>${test.ssh.keyfile.public}</test.ssh.keyfile.public>
                    <test.ssh.keyfile.private>${test.ssh.keyfile.private}</test.ssh.keyfile.private>
                  </systemPropertyVariables>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

  <build>
    <plugins>
      <plugin>  
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <configuration>
          <instructions>
            <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
            <Export-Package>org.jclouds.openstack.nova.*;version="${project.version}"</Export-Package>
            <Import-Package>org.jclouds.*;version="${project.version}",*</Import-Package>
          </instructions>
        </configuration>
      </plugin>
    </plugins>
  </build>

</project>
