This is test procedure for Apache CloudStack 4.0 source release. Everyone is welcome to have a test with the forthcoming 4.0 release.
To setup an environment for CloudStack, usually it will take a while, e.g install a hypervisor host, install Mysql server etc. Here we'll use DevCloud(http://wiki.cloudstack.org/display/COMM/DevCloud) to simplify the test procedure.
Following steps are tested on Mint 13, should work on ubuntu 12.04. The same basic workflow should also work on Mac 10.7, with different specific commands for the prerequisite setup steps. For Windows, you will need to run in cygwin and rename the genisoimage.exe file to mkisofs.
Install the devcloud VM image.
DevCloud is a 1.5 GB download. It is a VM image running Ubuntu 12.04, including an installation of the Xen Hypervisor. We use DevCloud as a "cloud in a box" environment for basic functional testing of CloudStack.
sudo aptitude install openjdk-6-jdk ant sudo apt-get update sudo apt-get install python-software-properties sudo add-apt-repository ppa:natecarlson/maven3 sudo aptitude update sudo aptitude install maven3
Install JSch:
wget http://downloads.sourceforge.net/project/jsch/jsch.jar/0.1.48/jsch-0.1.48.jar sudo cp jsch-0.1.48.jar /usr/share/ant/lib/
Install Boto:
sudo easy_install boto
rm -rf ~/.m2 ssh root@localhost -p 2222 'cd /opt/cloudstack/; rm -rf apache-tomcat-6.0.32; unzip apache-tomcat-6.0.32.zip; cd incubator-cloudstack; git clean -f; git reset --hard; git pull --rebase; git clean -f; git checkout origin/4.0 -b 4.0 -f '
Type password during the ssh promote.
The following should be done performed on your computer, not the devCloud VM.
Download the artifacts:
mkdir -p ~/cloudstack; cd ~/cloudstack wget http://people.apache.org/~chipchilders/dist/cloudstack/KEYS wget http://people.apache.org/~chipchilders/dist/cloudstack/releases/4.0.0-incubating/apache-cloudstack-4.0.0-incubating-src.zip wget http://people.apache.org/~chipchilders/dist/cloudstack/releases/4.0.0-incubating/apache-cloudstack-4.0.0-incubating-src.zip.asc wget http://people.apache.org/~chipchilders/dist/cloudstack/releases/4.0.0-incubating/apache-cloudstack-4.0.0-incubating-src.zip.md5 wget http://people.apache.org/~chipchilders/dist/cloudstack/releases/4.0.0-incubating/apache-cloudstack-4.0.0-incubating-src.zip.sha wget http://people.apache.org/~chipchilders/dist/cloudstack/releases/4.0.0-incubating/apache-cloudstack-4.0.0-incubating-src.tar.gz wget http://people.apache.org/~chipchilders/dist/cloudstack/releases/4.0.0-incubating/apache-cloudstack-4.0.0-incubating-src.tar.gz.asc wget http://people.apache.org/~chipchilders/dist/cloudstack/releases/4.0.0-incubating/apache-cloudstack-4.0.0-incubating-src.tar.gz.md5 wget http://people.apache.org/~chipchilders/dist/cloudstack/releases/4.0.0-incubating/apache-cloudstack-4.0.0-incubating-src.tar.gz.sha
Install gpg (if needed): sudo apt-get install gpg
Import keys:
This can be done via a keyserver: gpg --recv-keys CC56CEA8 DB3ECA42 2908DED2 6FE50F1C
Or this can be done by importing the keys stored in the source distribution's KEYS file: gpg --import KEYS
Verify signatures and hash files:
gpg --verify apache-cloudstack-4.0.0-incubating-src.tar.gz.asc gpg --verify apache-cloudstack-4.0.0-incubating-src.zip.asc gpg --print-md MD5 apache-cloudstack-4.0.0-incubating-src.tar.gz | diff - apache-cloudstack-4.0.0-incubating-src.tar.gz.md5 gpg --print-md MD5 apache-cloudstack-4.0.0-incubating-src.zip | diff - apache-cloudstack-4.0.0-incubating-src.zip.md5 gpg --print-md SHA512 apache-cloudstack-4.0.0-incubating-src.tar.gz | diff - apache-cloudstack-4.0.0-incubating-src.tar.gz.sha gpg --print-md SHA512 apache-cloudstack-4.0.0-incubating-src.zip | diff - apache-cloudstack-4.0.0-incubating-src.zip.sha
unzip apache-cloudstack-4.0.0-incubating-src.zip
OR
tar xvfz apache-cloudstack-4.0.0-incubating-src.tar.gz
cd apache-cloudstack-4.0.0-incubating-src mvn --projects='org.apache.cloudstack:cloudstack' org.apache.rat:apache-rat-plugin:0.8:check
The build should FAIL if there are any non-compliant files that are not specifically excluded from the ASF license header requirement. You can optionally review the target/rat.txt file after the run completes. If the build passes, RAT is saying that we are compliant and this test passes.
mvn -P deps ant clean-all build-all
ant rdeploy ant rdeploydb
ant rdebug
This may take a bit...
In the UI, set the following global settings:
Now CTL-C your rdebug, and then "ant rdebug" again (to restart the management server). This step is critical!
Go to the instances list, click on the name of your new instance, and then click on the "show console" button. The console of the VM should appear in a new window.
Stop the instance
Destroy the instance.
Wait for at least 2 minutes for the instance to be expunged (you can confirm that it has, by ssh'ing into devcloud and running xe vm-list to see if it's no longer listed).
Destroying the instance is important, and confirming that it was expunged prior to trying to test the EC2 API. This is due to the resource constraints on the DevCloud image.
python cloudstack-aws-api-register --apikey=JdTxDI2rOZ0RDZdgF1O_ZxfISxNuema9gQ3NyE4z5psX4sgSxE4ueEBohG3bfqWHr7BYP6_sAghXTIvm3noqkw --secretkey=fVT0r5lETIJThRGyec-Eg4WFm9_IN5tNIut7Ac5BJW0VExFGdRZEqA_JFvxdTFDH2ZeRcbO25xPQcyxt0VRWKg --cert=/tmp/cert.pem --url=http://localhost:7080/awsapi
You can specify an empty file as cert but use the keys generated in the GUI (ex: touch /tmp/cert.pem). Executing this with an empty cert file will result in an error that can be ignored for this test. Regardless of this error, if the registration works you should see the credentials in the cloudbridge database in the usercredentials table.
Within the DevCloud VM (as root):
mysql cloudbridge
select * from usercredentials;
You should see your account as the only row in that table.
#!/usr/bin/env python import sys import os import boto import boto.ec2 region = boto.ec2.regioninfo.RegionInfo(name="ROOT",endpoint="localhost") apikey='JiKIBbp6GRe3-7Ma-KF_pJl69BAsv2smJEA3So4DLfG0JCa9u5VnGeS5qsSo6cHiArzu8pRwEr4DkGy6M5inTw' secretkey='x9iMD9XY0xsnLy_1EZQi6lOXAY5hH-O6S2z_VFVTWMO5_GAIdeSm93tNk09rb56cB1bAQKZ0vSOztBrusZRu6g' def main(): '''Establish connection to EC2 cloud''' conn =boto.connect_ec2(aws_access_key_id=apikey, aws_secret_access_key=secretkey, is_secure=False, region=region, port=7080, path="/awsapi", api_version="2010-11-15") '''Get list of images that I own''' images = conn.get_all_images() print images myimage = images[0] '''Pick an instance type''' vm_type='m1.small' reservation = myimage.run(instance_type=vm_type,security_groups=['default']) if __name__ == '__main__': main()
If we made it this far, the release has at least been reasonably "smoke tested".