<?xml version="1.0" encoding="UTF-8"?>
<!--


    Copyright (C) 2010 Cloud Conscious, LLC. <info@cloudconscious.com>

    ====================================================================
    Licensed 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>
        <artifactId>jclouds-project</artifactId>
        <groupId>org.jclouds</groupId>
        <version>1.0-beta-9</version>
        <relativePath>../project/pom.xml</relativePath>
    </parent>
    <groupId>org.jclouds.provider</groupId>
    <artifactId>jclouds-providers-project</artifactId>
    <packaging>pom</packaging>
    <name>jclouds providers project</name>
    <modules>
        <module>gogrid</module>
        <module>slicehost</module>
        <module>cloudsigma-zrh</module>
        <module>azureblob</module>
        <module>aws-s3</module>
        <module>aws-ec2</module>
        <module>googlestorage</module>
        <module>scaleup-storage</module>
        <module>synaptic-storage</module>
        <module>cloudonestorage</module>
        <module>eucalyptus-partnercloud-s3</module>
        <module>eucalyptus-partnercloud-ec2</module>
        <module>cloudservers-us</module>
        <module>cloudservers-uk</module>
        <module>cloudfiles-us</module>
        <module>cloudfiles-uk</module>
        <module>bluelock-vcdirector</module>
        <module>trmk-ecloud</module>
        <module>trmk-vcloudexpress</module>
        <module>elastichosts-lon-p</module>
        <module>elastichosts-sat-p</module>
        <module>elastichosts-lon-b</module>
        <module>openhosting-east1</module>
        <module>serverlove-z1-man</module>
        <module>skalicloud-sdg-my</module>
    </modules>
</project>
