<?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.api-version>1.1</test.nova.api-version>
    <test.nova.build-version></test.nova.build-version>
    <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>
            <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.api-version>${test.nova.api-version}</test.nova.api-version>
                    <test.nova.build-version>${test.nova.build-version}</test.nova.build-version>
                    <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.compute.internal;version="${project.version}",
       			org.jclouds.rest.internal;version="${project.version}",
       			org.jclouds.*;version="${project.version}",
 				*
			</Import-Package>
          </instructions>
        </configuration>
      </plugin>
    </plugins>
  </build>

</project>
