jclouds/tools/antcontrib/samples/compute/build.xml

192 lines
6.7 KiB
XML

<!--
Copyright (C) 2009 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 name="compute" default="dump" basedir="." xmlns:artifact="urn:maven-artifact-ant">
<property file="build.properties" />
<property name="jclouds.version" value="1.0-SNAPSHOT" />
<property name="privatekeyfile" value="${user.home}/.ssh/id_rsa" />
<property name="publickeyfile" value="${user.home}/.ssh/id_rsa.pub" />
<mkdir dir="build" />
<get src="http://apache.imghat.com/maven/binaries/maven-ant-tasks-2.1.0.jar" dest="build/maven-ant-tasks-2.1.0.jar"/>
<input
message="Which service would you like to use (ec2, cloudservers, vcloud, terremark, rimuhosting, hostingdotcom)?"
validargs="ec2,cloudservers,vcloud,terremark,rimuhosting,hostingdotcom"
addproperty="service"
/>
<input
message="Which driver does ${service} use?"
validargs="aws,rackspace,vcloud,bluelock,gogrid,terremark,rimuhosting,hostingdotcom"
addproperty="driver"
/>
<path id="maven-ant-tasks.classpath" path="build/maven-ant-tasks-2.1.0.jar" />
<typedef resource="org/apache/maven/artifact/ant/antlib.xml" uri="urn:maven-artifact-ant" classpathref="maven-ant-tasks.classpath" />
<artifact:localRepository id="local.repository" path="${user.home}/.m2/repository" />
<artifact:remoteRepository id="jclouds.repository" url="http://jclouds.googlecode.com/svn/repo" />
<artifact:remoteRepository id="jclouds-snapshot.repository" url="http://jclouds.rimuhosting.com/maven2/snapshots" />
<artifact:dependencies pathId="jclouds.classpath">
<dependency groupId="org.jclouds" artifactId="jclouds-antcontrib" version="${jclouds.version}" />
<dependency groupId="org.jclouds" artifactId="jclouds-${driver}" version="${jclouds.version}" />
<localRepository refid="local.repository" />
<remoteRepository refid="jclouds.repository" />
<remoteRepository refid="jclouds-snapshot.repository" />
</artifact:dependencies>
<typedef name="compute" classname="org.jclouds.tools.ant.taskdefs.compute.ComputeTask" classpathref="jclouds.classpath" />
<input
message="What is your account on ${service}?"
addproperty="account"
/>
<input
message="What is the key for ${account}?"
addproperty="key"
/>
<property name="jclouds.compute.url" value="compute://${account}:${key}@${service}" />
<target name="list" description="list the identity of all nodes">
<compute actions="list" provider="${jclouds.compute.url}" />
</target>
<target name="list-details" description="list the details of all nodes">
<compute actions="list-details" provider="${jclouds.compute.url}" />
</target>
<target name="list-images" description="list the images supported">
<compute actions="list-images" provider="${jclouds.compute.url}" />
</target>
<target name="list-sizes" description="list the sizes supported">
<compute actions="list-sizes" provider="${jclouds.compute.url}" />
</target>
<target name="list-locations" description="list the locations supported">
<compute actions="list-locations" provider="${jclouds.compute.url}" />
</target>
<target name="dump" description="list all information we can obtain about the cloud">
<compute actions="list-locations,list-sizes,list-images,list-details" provider="${jclouds.compute.url}" />
</target>
<target name="reboot" depends="reboot-id,reboot-tag" />
<target name="reboot-id" description="reboot the node ${id}" unless="tag">
<input
message="Which node do you wish to reboot"
addproperty="id"
/>
<compute actions="reboot" provider="${jclouds.compute.url}">
<nodes id="${id}" />
</compute>
</target>
<target name="reboot-tag" description="reboot the nodes with tag ${tag}" unless="id" >
<input
message="Which tag do you wish to reboot"
addproperty="tag"
/>
<compute actions="reboot" provider="${jclouds.compute.url}">
<nodes tag="${tag}" />
</compute>
</target>
<target name="destroy" depends="destroy-id,destroy-tag" />
<target name="destroy-id" description="destroy the node ${id}" unless="tag">
<input
message="Which node do you wish to destroy"
addproperty="id"
/>
<compute actions="destroy" provider="${jclouds.compute.url}">
<nodes id="${id}" />
</compute>
</target>
<target name="destroy-tag" description="destroy the nodes with tag ${tag}" unless="id" >
<input
message="Which tag do you wish to destroy"
addproperty="tag"
/>
<compute actions="destroy" provider="${jclouds.compute.url}">
<nodes tag="${tag}" />
</compute>
</target>
<target name="get" depends="get-tag,get-id" />
<target name="get-id" description="get the node ${id}" unless="tag">
<input
message="Which node do you wish to get"
addproperty="id"
/>
<compute actions="get" provider="${jclouds.compute.url}">
<nodes id="${id}" />
</compute>
</target>
<target name="get-tag" description="get the nodes with tag ${tag}" unless="id" >
<input
message="Which tag do you wish to get"
addproperty="tag"
/>
<compute actions="get" provider="${jclouds.compute.url}">
<nodes tag="${tag}" />
</compute>
</target>
<property name="location" value="" />
<target name="create" description="create the node ${tag}">
<property name="privatekeyfile" value="${user.home}/.ssh/id_rsa" />
<property name="publickeyfile" value="${user.home}/.ssh/id_rsa.pub" />
<property name="os" value="UBUNTU" />
<property name="count" value="1" />
<input
message="What do you want to tag your nodes with?"
addproperty="tag"
/>
<compute actions="create" provider="${jclouds.compute.url}">
<nodes privatekeyfile="${privatekeyfile}" publickeyfile="${publickeyfile}" tag="${tag}" count="${count}" os="${os}" size="SMALLEST" hostproperty="host" usernameproperty="username" passwordproperty="password" />
</compute>
</target>
</project>