cloudstack/build/build-aws-api.xml

441 lines
19 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<project name="awsapi" default="help" basedir=".">
<target name="help">
<echo level="info" message="Ant Build File for awsapi" />
<echo level="info" message="Type 'ant -projecthelp' to get a list of targets and their descriptions." />
</target>
<target name="usage" depends="help" />
<dirname property="base.dir" file="${ant.file.awsapi}/.." />
<property environment="env" />
<property name="axis2.home" value="${base.dir}" />
<path id="axis2.class.path">
<fileset dir="${axis2.home}">
<include name="deps/awsapi-lib/*.jar" />
</fileset>
</path>
<taskdef name="wsdl2code" classname="org.apache.axis2.tool.ant.AntCodegenTask" classpathref="axis2.class.path" />
<!-- directories for build and distribution -->
<!-- property name="env.CATALINA_HOME" value="${base.dir}/tomcat" / -->
<property name="catalina.dir" value="${env.CATALINA_HOME}" />
<property name="build.dir" location="${base.dir}/build" />
<property name="buildnumber.dir" location="${build.dir}/" />
<property name="target.dir" location="${base.dir}/target" />
<property name="classes.dir" location="${target.dir}/classes" />
<property name="dist.files.dir" location="${target.dir}/dist-files" />
<property name="db.dir" location="${base.dir}/awsapi-setup/db/mysql" />
<property name="jar.dir" location="${target.dir}/jar" />
<property name="build.log" location="${target.dir}/ant_verbose.txt" />
<property name="thirdparty.dir" location="${base.dir}/deps/awsapi-lib" />
<property name="rampart.dir" location="${base.dir}/deps/awsapi-lib/rampart-lib" />
<property file="${build.dir}/build-aws-api.properties" />
<property name="version" value="${company.major.version}.${company.minor.version}.${company.patch.version}" />
<property name="tomcat.home" location="${catalina.dir}" />
<property name="deploy.dir" location="${tomcat.home}" />
<property name="rpm.tomcat.dir" location="${rpm.install.dir}/usr/share/cloud/bridge" />
<property name="debian.install.dir" location="${base.dir}/packages/config/debian/tmp" />
<property name="debian.tomcat.dir" location="${debian.install.dir}/usr/share/cloud/bridge" />
<echo level="info" message="deploy home: ${deploy.dir}" />
<path id="thirdparty.classpath">
<fileset dir="${thirdparty.dir}">
<include name="*.jar" />
</fileset>
</path>
<path id="rampart.classpath">
<fileset dir="${rampart.dir}">
<include name="*.jar" />
</fileset>
</path>
<path id="dist.classpath">
<fileset dir="${target.dir}">
<include name="**/*.jar" />
</fileset>
</path>
<target name="-init-awsapi">
<mkdir dir="${dist.files.dir}" />
<record name="${build.log}" loglevel="verbose" action="start" />
<!-- create a UTC build timestamp using ISO 8601 formatting -->
<tstamp>
<format property="utc.build.timestamp" pattern="yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" timezone="GMT" />
</tstamp>
<!-- remember who/where did the build -->
<exec executable="hostname" outputproperty="host.name" />
<property name="builder.at" value="${user.name} at ${host.name}" />
<property name="builder.id" value="${builder.at}, on ${utc.build.timestamp}" />
<property name="built.by" value="${builder.at}, ${utc.build.timestamp}" />
<echo level="info" message="builder: ${builder.id}" />
<!-- set build.number property, stored in eponymous file -->
<buildnumber file="${buildnumber.dir}/build.number" />
<condition property="impl.version" value="${version}.${build.number}" else="${version}">
<and>
<isset property="update.build.number" />
</and>
</condition>
<echo message="Build number is ${impl.version}" />
<!--
<propertyfile file="${base.dir}/awsapi/conf/ec2-service.properties">
<entry key="awsapiVersion" value="${impl.version}" />
</propertyfile>
-->
<!-- Create the build directory structure used by compile -->
<mkdir dir="${jar.dir}" />
<mkdir dir="${dep.cache.dir}" />
<record name="${build.log}" action="stop" />
</target>
<target name="clean-awsapi" description="clean up files generated by the build">
<delete file="${build.log}" />
<delete dir="${classes.dir}" />
<delete dir="${jar.dir}" />
<delete dir="${dist.files.dir}" />
<delete dir="${target.dir}" />
</target>
<target name="clean-awsapi-tomcat">
<delete dir="${tomcat.home}/webapps/awsapi" />
</target>
<path id="awsapi.classpath">
<path refid="deps.classpath" />
<path refid="thirdparty.classpath" />
<path refid="rampart.classpath" />
<path refid="dist.classpath" />
</path>
<target name="compile-awsapi" depends="-init-awsapi" description="Compile Cloud.com Simple Storage Service">
<compile-java jar.name="cloud-awsapi.jar" top.dir="${base.dir}/awsapi" classpath="awsapi.classpath">
<include-files>
<fileset dir="${base.dir}/awsapi/src">
<include name="**/*.hbm.xml" />
</fileset>
</include-files>
</compile-java>
</target>
<target name="build-awsapi-jar" depends="-init-awsapi, compile-awsapi" description="Builds awsapi jar file.">
<jar jarfile="${dist.files.dir}/cloud-awsapi.jar" basedir="${target.dir}/classes/cloud-awsapi.jar" excludes="**/client/*">
<fileset dir="${base.dir}/awsapi/src">
<include name="**/*.hbm.xml" />
</fileset>
</jar>
</target>
<target name="build-awsapi-s3" depends="-init-awsapi, compile-awsapi" description="Builds awsapi S3 AAR file.">
<jar jarfile="${dist.files.dir}/cloud-s3.aar" basedir="${target.dir}/classes/cloud-awsapi.jar" excludes="**/*">
<!--
<metainf dir="${base.dir}/resource/AmazonS3">
<include name="services.xml" />
<include name="AmazonS3.wsdl" />
</metainf>
-->
</jar>
</target>
<target name="build-cloud-auth-s3" depends="-init-awsapi, compile-awsapi" description="Builds awsapi S3 auth MAR file.">
<jar jarfile="${dist.files.dir}/cloud-auth-s3.mar" basedir="${target.dir}/classes/cloud-awsapi.jar" excludes="**/*">
<fileset dir="${target.dir}/classes/cloud-awsapi.jar">
<include name="**/auth/s3/*.class" />
</fileset>
<metainf dir="${base.dir}/awsapi/src/com/cloud/bridge/auth/s3">
<include name="module.xml" />
</metainf>
</jar>
</target>
<target name="build-awsapi-ec2" depends="-init-awsapi, compile-awsapi" description="Builds awsapi EC2 AAR file.">
<jar jarfile="${dist.files.dir}/cloud-ec2.aar" basedir="${target.dir}/classes/cloud-awsapi.jar" excludes="**/*">
<metainf dir="${base.dir}/awsapi/resource/AmazonEC2">
<include name="services.xml" />
<include name="AmazonEC2.wsdl" />
</metainf>
</jar>
</target>
<target name="build-cloud-auth-ec2" depends="-init-awsapi, compile-awsapi" description="Builds awsapi EC2 auth MAR file.">
<jar jarfile="${dist.files.dir}/cloud-auth-ec2.mar" basedir="${target.dir}/classes/cloud-awsapi.jar" excludes="**/*">
<fileset dir="${target.dir}/classes/cloud-awsapi.jar">
<include name="**/auth/ec2/*.class" />
</fileset>
<metainf dir="${base.dir}/awsapi/src/com/cloud/bridge/auth/ec2">
<include name="module.xml" />
</metainf>
</jar>
</target>
<target name="deploy-axis" depends="-init-awsapi">
<unwar overwrite="true" src="${base.dir}/deps/awsapi-lib/axis2.war" dest="${server.deploy.to.dir}/webapps/awsapi" />
</target>
<condition property="access_key.private.notpresent">
<not>
<available file="${base.dir}/awsapi/cloud_private_key.pem" type="file" property="access_key.private.notpresent"/>
</not>
</condition>
<!-- Dev Environment ONLY -->
<target name="generate-cloud-access-keys" if="access_key.private.notpresent">
<exec executable="openssl" searchpath="true">
<arg line="req -x509 -nodes -days 365 -newkey rsa:2048 -subj '/C=US/ST=California/L=Cupertino/O=cloud.com/CN=awsapi-test' -keyout ${base.dir}/cloud_private_key.pem -out ${base.dir}/cloud_cert.pem"/>
</exec>
</target>
<!-- Dev Environment ONLY - this assumes EC2_ACCESS_KEY, EC2_SECRET_KEY and EC2_URL have already been defined...-->
<target name="register-cloud-bridge" description="Register with cloud-bridge (For Dev environments only)" depends="generate-cloud-access-keys">
<exec executable="${base.dir}/awsapi-setup/setup/cloud-bridge-register">
<arg value="--apikey=${env.EC2_ACCESS_KEY}" />
<arg value="--secretkey=${env.EC2_SECRET_KEY}" />
<arg value="--cert=${base.dir}/cloud_cert.pem" />
<arg value="--url=${env.EC2_URL}" />
</exec>
</target>
<target name="build-awsapi" depends="build-awsapi-jar,build-awsapi-s3,build-awsapi-ec2,build-cloud-auth-s3,build-cloud-auth-ec2" description="Builds all of awsapi">
</target>
<target name="deploy-awsapi" depends="deploy-axis">
<!--
<copy todir="${deploy.dir}/webapps/awsapi/WEB-INF/services">
<fileset dir="${dist.files.dir}">
<include name="cloud-s3.aar"/>
</fileset>
</copy>
-->
<copy todir="${server.deploy.to.dir}/webapps/awsapi/WEB-INF/services">
<fileset dir="${dist.files.dir}">
<include name="cloud-ec2.aar" />
</fileset>
</copy>
<copy todir="${server.deploy.to.dir}/webapps/awsapi/WEB-INF/modules">
<fileset dir="${dist.files.dir}">
<include name="cloud-auth-s3.mar" />
</fileset>
</copy>
<copy todir="${server.deploy.to.dir}/webapps/awsapi/WEB-INF/modules">
<fileset dir="${dist.files.dir}">
<include name="cloud-auth-ec2.mar" />
</fileset>
</copy>
<copy todir="${server.deploy.to.dir}/webapps/awsapi/WEB-INF/lib">
<fileset dir="${jar.dir}">
<include name="cloud-awsapi.jar" />
<include name="cloud-jasypt-1.8.jar" />
</fileset>
</copy>
<copy todir="${server.deploy.to.dir}/webapps/awsapi/WEB-INF/lib">
<fileset dir="${base.dir}/deps/awsapi-lib">
<include name="*.jar" />
<exclude name="mysql-connector-java-5.1.7-bin.jar" />
<exclude name="servlet-api.jar" />
</fileset>
</copy>
<copy todir="${server.deploy.to.dir}/lib">
<fileset dir="${base.dir}/deps/awsapi-lib">
<include name="mysql-connector-java-5.1.7-bin.jar" />
</fileset>
</copy>
<copy overwrite="false" todir="${server.deploy.to.dir}/conf">
<fileset dir="${base.dir}/awsapi/conf/">
<include name="**/*" />
</fileset>
</copy>
<copy overwrite="true" todir="${server.deploy.to.dir}/webapps/awsapi/WEB-INF/conf">
<fileset dir="${base.dir}/awsapi/resource/Axis2/">
<include name="axis2.xml" />
</fileset>
</copy>
<copy overwrite="true" todir="${server.deploy.to.dir}/webapps/awsapi/WEB-INF">
<fileset dir="${base.dir}/awsapi/web/">
<include name="web.xml" />
</fileset>
</copy>
<!-- rampart lib goes where the axis lib files go -->
<copy todir="${server.deploy.to.dir}/webapps/awsapi/WEB-INF/lib">
<fileset dir="${base.dir}/deps/awsapi-lib/rampart-lib">
<include name="*.jar" />
</fileset>
</copy>
<!-- copying over rampart mar files for WS-Security -->
<copy todir="${server.deploy.to.dir}/webapps/awsapi/WEB-INF/modules">
<fileset dir="${base.dir}/awsapi/modules">
<include name="*.mar" />
</fileset>
</copy>
<!-- WS-Security requires this keystore -->
<copy todir="${server.deploy.to.dir}/webapps/awsapi/WEB-INF/classes">
<fileset dir="${base.dir}/awsapi/resource/AmazonEC2">
<include name="crypto.properties" />
<include name="xes.keystore" />
</fileset>
</copy>
</target>
<target name="deploy-debian-install" depends="build-awsapi-jar, build-awsapi">
<copy todir="${debian.tomcat.dir}/webapps/awsapi/WEB-INF/services">
<fileset dir="${dist.files.dir}">
<!--
<include name="cloud-s3.aar"/>
-->
<include name="cloud-ec2.aar" />
</fileset>
</copy>
<copy todir="${debian.tomcat.dir}/webapps/awsapi/WEB-INF/modules">
<fileset dir="${dist.files.dir}">
<include name="cloud-auth-s3.mar" />
<include name="cloud-auth-ec2.mar" />
</fileset>
<fileset dir="${base.dir}/modules">
<include name="*.mar" />
</fileset>
</copy>
<copy todir="${debian.tomcat.dir}/webapps/awsapi/WEB-INF/lib">
<fileset dir="${base.dir}/rampart-lib">
<include name="*.jar" />
</fileset>
<fileset dir="${jar.dir}">
<include name="cloud-awsapi.jar" />
<include name="cloud-jasypt-1.8.jar" />
</fileset>
</copy>
<copy todir="${debian.tomcat.dir}/lib">
<fileset dir="${base.dir}/lib">
<include name="*.jar" />
</fileset>
</copy>
<copy todir="${debian.tomcat.dir}/webapps/awsapi/WEB-INF/classes">
<fileset dir="${base.dir}/resource/AmazonEC2">
<include name="crypto.properties" />
<include name="xes.keystore" />
</fileset>
</copy>
<!-- copy overwrite="true" todir="${debian.tomcat.dir}/conf">
<fileset dir="${base.dir}/awsapi/conf/">
<include name="**/*" />
</fileset>
<fileset dir="${base.dir}/awsapi-setup/tomcat">
<include name="**/*" />
</fileset>
</copy -->
<copy overwrite="true" todir="${debian.tomcat.dir}/webapps/awsapi/WEB-INF/conf">
<fileset dir="${base.dir}/awsapi/resource/Axis2/">
<include name="axis2.xml" />
</fileset>
</copy>
<copy overwrite="true" todir="${debian.tomcat.dir}/webapps/awsapi/WEB-INF">
<fileset dir="${base.dir}/awsapi/web/">
<include name="web.xml" />
</fileset>
</copy>
<copy overwrite="true" todir="${debian.install.dir}/usr/share/cloud/setup/bridge/db">
<fileset dir="${base.dir}/db/mysql">
<include name="*.sql" />
<include name="*.sh" />
</fileset>
</copy>
<copy overwrite="true" todir="${debian.install.dir}/etc/init.d">
<fileset dir="${base.dir}/awsapi-setup/init/debian/">
<include name="cloud-bridge" />
</fileset>
</copy>
<copy overwrite="true" todir="${debian.install.dir}/usr/bin">
<fileset dir="${base.dir}/awsapi-setup/setup">
<include name="*" />
</fileset>
</copy>
</target>
<target name="deploy-rpm-install" depends="build-awsapi-jar, build-awsapi">
<copy todir="${rpm.tomcat.dir}/webapps/awsapi/WEB-INF/services">
<fileset dir="${dist.files.dir}">
<!--
<include name="cloud-s3.aar"/>
-->
<include name="cloud-ec2.aar" />
</fileset>
</copy>
<copy todir="${rpm.tomcat.dir}/webapps/awsapi/WEB-INF/modules">
<fileset dir="${dist.files.dir}">
<include name="cloud-auth-s3.mar" />
<include name="cloud-auth-ec2.mar" />
</fileset>
<fileset dir="${base.dir}/awsapi/modules">
<include name="*.mar" />
</fileset>
</copy>
<copy todir="${rpm.tomcat.dir}/webapps/awsapi/WEB-INF/lib">
<fileset dir="${base.dir}/deps/awsapi-lib/rampart-lib">
<include name="*.jar" />
</fileset>
<fileset dir="${jar.dir}">
<include name="cloud-awsapi.jar" />
<include name="cloud-jasypt-1.8.jar" />
</fileset>
</copy>
<copy todir="${rpm.tomcat.dir}/lib">
<fileset dir="${base.dir}/deps/awsapi-lib/">
<include name="*.jar" />
</fileset>
</copy>
<copy todir="${rpm.tomcat.dir}/webapps/awsapi/WEB-INF/classes">
<fileset dir="${base.dir}/awsapi/resource/AmazonEC2">
<include name="crypto.properties" />
<include name="xes.keystore" />
</fileset>
</copy>
<copy overwrite="false" todir="${rpm.tomcat.dir}/conf">
<fileset dir="${base.dir}/awsapi/conf/">
<include name="**/*" />
</fileset>
</copy>
<copy overwrite="true" todir="${rpm.tomcat.dir}/webapps/awsapi/WEB-INF/conf">
<fileset dir="${base.dir}/awsapi/resource/Axis2/">
<include name="axis2.xml" />
</fileset>
</copy>
<copy overwrite="true" todir="${rpm.tomcat.dir}/webapps/awsapi/WEB-INF">
<fileset dir="${base.dir}/awsapi/web/">
<include name="web.xml" />
</fileset>
</copy>
<copy overwrite="true" todir="${rpm.install.dir}/usr/share/cloud/setup/bridge/db">
<fileset dir="${base.dir}/awsapi-setup/db/mysql">
<include name="*.sql" />
<include name="*.sh" />
</fileset>
</copy>
<copy overwrite="true" todir="${rpm.install.dir}/etc/init.d">
<fileset dir="${base.dir}/awsapi-setup/init/rpm/">
<include name="cloud-bridge" />
</fileset>
</copy>
<copy overwrite="true" todir="${rpm.install.dir}/usr/bin">
<fileset dir="${base.dir}/awsapi-setup/setup">
<include name="*" />
</fileset>
</copy>
</target>
<target name="deploy-awsapi-db">
<echo message="deploy-awsapi-db" />
<exec dir="${db.dir}" executable="bash">
<arg value="deploy-db-bridge.sh" />
<arg value="${DBROOTPW}" />
</exec>
</target>
<target name="download-ELB-wsdl">
<echo message="downloading ElasticLoadBalancing.wsdl..." />
<get src="http://elasticloadbalancing.amazonaws.com/doc/2011-04-05/ElasticLoadBalancing.wsdl" dest="wsdl/" verbose="true" usetimestamp="true" overwrite="false"/>
</target>
<target name="codegen-server-s3">
<wsdl2code
wsdlfilename="${base.dir}/wsdl/cloud-AmazonS3.wsdl"
serverside="true"
generateservicexml="true"
skipbuildxml="true"
serversideinterface="true"
namespacetopackages="http://s3.amazonaws.com/doc/2006-03-01/=com.amazon.s3"
targetsourcefolderlocation="src"
targetresourcesfolderlocation="resource/AmazonS3"
overwrite="true"
/>
</target>
<target name="codegen-server-ec2">
<wsdl2code wsdlfilename="${base.dir}/wsdl/AmazonEC2.wsdl" serverside="true" generateservicexml="true" skipbuildxml="true" serversideinterface="true" namespacetopackages="http://ec2.amazonaws.com/doc/2010-11-15/=com.amazon.ec2"
targetsourcefolderlocation="src" targetresourcesfolderlocation="resource/AmazonEC2" overwrite="true" />
</target>
<target name="codegen-server-elb" depends="download-ELB-wsdl">
<wsdl2code wsdlfilename="${base.dir}/wsdl/ElasticLoadBalancing.wsdl" serverside="true" generateservicexml="true" skipbuildxml="true" serversideinterface="true" namespacetopackages="http://elasticloadbalancing.amazonaws.com/doc/2011-04-05/=com.amazon.elb" targetsourcefolderlocation="src" targetresourcesfolderlocation="resource/AmazonELB" overwrite="true" />
</target>
<target name="codegen-client-s3">
<wsdl2code wsdlfilename="${base.dir}/wsdl/cloud-AmazonS3.wsdl" serverside="false" generateservicexml="false" skipbuildxml="true" serversideinterface="false" namespacetopackages="http://s3.amazonaws.com/doc/2006-03-01/=com.amazon.s3.client" targetsourcefolderlocation="src" targetresourcesfolderlocation="resource/AmazonS3" overwrite="true" />
</target>
<target name="codegen-client-ec2">
<wsdl2code wsdlfilename="${base.dir}/wsdl/AmazonEC2.wsdl" serverside="false" generateservicexml="false" skipbuildxml="true" serversideinterface="false" namespacetopackages="http://ec2.amazonaws.com/doc/2010-11-15/=com.amazon.ec2.clieent" targetsourcefolderlocation="src" targetresourcesfolderlocation="resource/AmazonEC2" overwrite="true" />
</target>
<target name="codegen-client-elb" depends="download-ELB-wsdl">
<wsdl2code wsdlfilename="${base.dir}/wsdl/ElasticLoadBalancing.wsdl" serverside="false" generateservicexml="false" skipbuildxml="true" serversideinterface="false" namespacetopackages="http://elasticloadbalancing.amazonaws.com/doc/2011-04-05/=com.amazon.elb.client" targetsourcefolderlocation="src" targetresourcesfolderlocation="resource/AmazonELB" overwrite="true" />
</target>
</project>