cloudstack/build/build-aws-api.xml

465 lines
20 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF 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 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.classpath">
<fileset dir="${axis2.home}">
<include name="deps/*.jar" />
</fileset>
</path>
<taskdef name="wsdl2code" classname="org.apache.axis2.tool.ant.AntCodegenTask" classpathref="axis2.classpath" />
<!-- 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" />
<delete dir="${tomcat.home}/webapps7080/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" />
</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-webapp-1.5.1.war" dest="${server.deploy.to.dir}/webapps7080/awsapi" >
<patternset>
<exclude name="WEB-INF/lib/log4j-1.2.15.jar"/>
</patternset>
</unwar>
</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}/webapps7080/awsapi/WEB-INF/services">
<fileset dir="${dist.files.dir}">
<include name="cloud-s3.aar"/>
</fileset>
</copy>
-->
<copy todir="${server.deploy.to.dir}/webapps7080/awsapi/WEB-INF/services">
<fileset dir="${dist.files.dir}">
<include name="cloud-ec2.aar" />
</fileset>
</copy>
<copy todir="${server.deploy.to.dir}/webapps7080/awsapi/WEB-INF/modules">
<fileset dir="${dist.files.dir}">
<include name="cloud-auth-s3.mar" />
</fileset>
</copy>
<copy todir="${server.deploy.to.dir}/webapps7080/awsapi/WEB-INF/modules">
<fileset dir="${dist.files.dir}">
<include name="cloud-auth-ec2.mar" />
</fileset>
</copy>
<copy todir="${server.deploy.to.dir}/webapps7080/awsapi/WEB-INF/lib">
<fileset dir="${jar.dir}">
<include name="cloud-awsapi.jar" />
<include name="cloud-jasypt-1.8.jar" />
<include name="cloud-utils.jar" />
</fileset>
</copy>
<copy todir="${server.deploy.to.dir}/webapps7080/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}/webapps7080/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}/webapps7080/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}/webapps7080/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}/webapps7080/awsapi/WEB-INF/modules">
<fileset dir="${base.dir}/deps/awsapi-lib/modules">
<include name="*.mar" />
</fileset>
</copy>
<!-- WS-Security requires this keystore -->
<copy todir="${server.deploy.to.dir}/webapps7080/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}/webapps7080/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}/webapps7080/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}/webapps7080/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}/webapps7080/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}/webapps7080/awsapi/WEB-INF/conf">
<fileset dir="${base.dir}/awsapi/resource/Axis2/">
<include name="axis2.xml" />
</fileset>
</copy>
<copy overwrite="true" todir="${debian.tomcat.dir}/webapps7080/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}/webapps7080/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}/webapps7080/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}/webapps7080/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}/webapps7080/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}/webapps7080/awsapi/WEB-INF/conf">
<fileset dir="${base.dir}/awsapi/resource/Axis2/">
<include name="axis2.xml" />
</fileset>
</copy>
<copy overwrite="true" todir="${rpm.tomcat.dir}/webapps7080/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>