For an apache project, a VOTE on a release candidate is a very important process. By voting (particularly for PPMC members and committers), you are saying to the world that "yes, I have download, verified and tested using the project's procedure for testing". Your +1, 0 or -1 vote is an indication of the success of the steps listed.
The more time that each individual spends reviewing the artifacts, the higher confidence we can have in both the release itself and our ability to pass an IPMC vote later on. Remember, we, as a podling, are going to be held to a higher standard for our releases! The IPMC (and our mentors) are looking for us to show that we understand what it means to have a high quality 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.
Note |
---|
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. |
Note |
---|
Unless specified specifically, instruction steps should be assumed to be run from your local machine, not from within the DevCloud VM. The DevCloud VM is the target runtime environment of the tests, but the instructions will push the code to that VM at the right time. |
Note |
---|
You can follow the following screencast to watch the entire procedure. |
Install the devcloud VM image.
Note |
---|
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. |
Warning |
---|
These pre-requisite development tools are not part of the release validation itself. The instructions are being provided for those testers that may not normally have these tools installed on their test system, and want to perform the expected tests. The pre-requisites listed may not be 100% complete (for example, we assume you have git, tar, etc... installed). If you run into any issues, please ask on the dev@cloudstack.apache.org mailing list. |
Code Block |
---|
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:
Code Block |
---|
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 (assumes you have Python and Setup Tools installed):
Code Block |
---|
sudo easy_install boto
|
OSX users should be able to use their default JVM for this testing.
OSX users need to have Apache Ant and Maven 3 installed.
Ant may already be on your system. Run which ant
to see. If not, Ant can be installed via MacPorts or from source.
Maven 3 can be installed with Homebrew, or can be downloaded and installed from the Maven homepage.
Next, you will need to install OS X tools:
Then you will need cdrtools, which is available as package in both Homebrew and MacPorts.
Note |
---|
If after the above steps, for any reason, |
Next, you will need to install JSch.
First download the binary distribution of Ant.
Unpack the archive, and run:
Code Block |
---|
sudo cp lib/ant-jsch.jar /usr/share/ant/lib
|
Install Boto (assumes you have Python and Python Setup Tools already installed):
Code Block |
---|
sudo easy_install boto
|
Note |
---|
Since we have graduated from the incubator, the git remote URL thats embedded in the original DevCloud image is incorrect. Before following the step below, ssh into the devcloud image (run "ssh root@localhost -p 2222" and password is "password") and edit /opt/cloudstack/incubator-cloudstack/.git/config to modify the URL from https://git-wip-us.apache.org/repos/asf/*incubator-*cloudstack.git (https://git-wip-us.apache.org/repos/asf/*incubator\-*cloudstack.git) to https://git-wip-us.apache.org/repos/asf/cloudstack.git Once that's done, exit from your ssh session back to your local system. |
Code Block |
---|
rm -Rf /tmp/cloudstack
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 the password "password" when prompted to by SSH.
Note |
---|
Some versions of wget will require that you add the --no-check-certificate param to the commands below. You need this, if you get an error stating "ERROR: The certificate of `dist.apache.org' is not trusted.". |
Download the artifacts:
Code Block |
---|
mkdir /tmp/cloudstack; cd /tmp/cloudstack
wget https://dist.apache.org/repos/dist/release/cloudstack/KEYS
wget http://people.apache.org/~jzb/cloudstack/dist/releases/VERSION/apache-cloudstack-VERSION-src.tar.bz2
wget http://people.apache.org/~jzb/cloudstack/dist/releases/VERSION/apache-cloudstack-VERSION-src.tar.bz2.asc
wget http://people.apache.org/~jzb/cloudstack/dist/releases/VERSION/apache-cloudstack-VERSION-src.tar.bz2.md5
wget http://people.apache.org/~jzb/cloudstack/dist/releases/VERSION/apache-cloudstack-VERSION-src.tar.bz2.sha
|
Replace VERSION
with the version you are testing.
Install gpg (if needed): sudo apt-get install gpg
Import keys:
This can be done by importing the keys stored in the source distribution's KEYS file: gpg --import KEYS
Alternatively, you could download the signing keys (ID's found in the KEYS file) individually via a keyserver. Ex: gpg --recv-keys CC56CEA8
Verify signatures and hash files:
Code Block |
---|
gpg --verify apache-cloudstack-*-src.tar.bz2.asc
|
This command should return "Good Signature".
Code Block |
---|
gpg --print-md MD5 apache-cloudstack-*-src.tar.bz2 | diff - apache-cloudstack-*-src.tar.bz2.md5
gpg --print-md SHA512 apache-cloudstack-*-src.tar.bz2 | diff - apache-cloudstack-*-src.tar.bz2.sha
|
Each of these commands should return no output. If there is any output from them, then there is a difference between the hash you generated locally and the hash that has been pulled from the server.
Get the commit hash from the VOTE email (ex: 4cd60f3d1683a3445c3248f48ae064fb573db2a1). The value will change between releases.
Create two new temporary directories:
Code Block |
---|
mkdir /tmp/cloudstack/git
mkdir /tmp/cloudstack/tree
|
Pull down the git repo:
Code Block |
---|
git clone https://git-wip-us.apache.org/repos/asf/cloudstack.git /tmp/cloudstack/git
cd /tmp/cloudstack/git
git archive --prefix=/tmp/cloudstack/tree/ <commit-hash> | tar Pxf -
|
Unpack the release artifact:
Code Block |
---|
cd /tmp/cloudstack
tar xvfj apache-cloudstack-*-src.tar.bz2
|
Compare the contents of the release artifact with the contents pulled from the repo:
Code Block |
---|
diff -r /tmp/cloudstack/apache-cloudstack-*-src /tmp/cloudstack/tree
|
Nothing should be different.
Code Block |
---|
cd /tmp/cloudstack/apache-cloudstack-*-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.
Note: If you're on Ubuntu and using the PPA:natecarlson/maven3 (viz. Installing tools above), you've to use mvn3 instead of mvn, so mvn3 -P deps
Code Block |
---|
mvn -P deps
ant clean-all build-all
|
Code Block |
---|
ant rdeploy
ant rdeploydb
|
Code Block |
---|
ant rdebug
|
Depending on your local system configuration, and available RAM / Disk IO / Net IO, this step will take varied amounts of time. It's reasonable to expect 30 minutes (or more), but it could be less.
You can tell if the SSVM has been started by navigating to the Infrastructure page, and clicking on System VMs. There should be 2 listed, and their status needs to be displayed as "Started".
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.
Code Block |
---|
python cloudstack-aws-api-register --apikey=JdTxDI2rOZ0RDZdgF1O_ZxfISxNuema9gQ3NyE4z5psX4sgSxE4ueEBohG3bfqWHr7BYP6_sAghXTIvm3noqkw --secretkey=fVT0r5lETIJThRGyec-Eg4WFm9_IN5tNIut7Ac5BJW0VExFGdRZEqA_JFvxdTFDH2ZeRcbO25xPQcyxt0VRWKg --cert=/tmp/cert.pem --url=http://localhost:7080/awsapi
|
In case you don't have a X509 ssl certificate, this is how you can generate one:
Code Block |
---|
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /path/to/private_key.pem -out /path/to/cert.pem
|
Note |
---|
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, |
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.
Note |
---|
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 devcloud
Code Block |
---|
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:
Code Block |
---|
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/
|
Code Block |
---|
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.
Note |
---|
Replace $version with the correct detailed version string in any commands below. The following should be done perform on your computer, not the devCloud VM. |
Download latest source code release from http://people.apache.org/~chipchilders/cloudstack/4.0/ on to your computer. You can download either the .zip or .gz package. You don't need both.
Code Block |
---|
mkdir -p ~/cloudstack; cd ~/cloudstack
wget http://people.apache.org/~chipchilders/cloudstack/4.0/KEYS
wget http://people.apache.org/~chipchilders/cloudstack/4.0/apache-cloudstack-$version-incubating-src.zip
wget http://people.apache.org/~chipchilders/cloudstack/4.0/apache-cloudstack-$version-incubating-src.zip.asc
wget http://people.apache.org/~chipchilders/cloudstack/4.0/apache-cloudstack-$version-incubating-src.zip.md5
wget http://people.apache.org/~chipchilders/cloudstack/4.0/apache-cloudstack-$version-incubating-src.zip.sha
wget http://people.apache.org/~chipchilders/cloudstack/4.0/apache-cloudstack-$version-incubating-src.tar.gz
wget http://people.apache.org/~chipchilders/cloudstack/4.0/apache-cloudstack-$version-incubating-src.tar.gz.asc
wget http://people.apache.org/~chipchilders/cloudstack/4.0/apache-cloudstack-$version-incubating-src.tar.gz.md5
wget http://people.apache.org/~chipchilders/cloudstack/4.0/apache-cloudstack-$version-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:
Code Block |
---|
gpg --verify apache-cloudstack-$version-incubating-src.tar.gz.asc
gpg --verify apache-cloudstack-$version-incubating-src.zip.asc
gpg --print-md MD5 apache-cloudstack-$version-incubating-src.tar.gz | diff - apache-cloudstack-$version-incubating-src.tar.gz.md5
gpg --print-md MD5 apache-cloudstack-$version-incubating-src.zip | diff - apache-cloudstack-$version-incubating-src.zip.md5
gpg --print-md SHA512 apache-cloudstack-$version-incubating-src.tar.gz | diff - apache-cloudstack-$version-incubating-src.tar.gz.sha
gpg --print-md SHA512 apache-cloudstack-$version-incubating-src.zip | diff - apache-cloudstack-$version-incubating-src.zip.sha
|
Code Block |
---|
unzip apache-cloudstack-$version-incubating-src.zip
|
OR
Code Block |
---|
tar xvfz apache-cloudstack-$version-incubating-src.tar.gz
|
Code Block |
---|
cd apache-cloudstack-$version-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.
Code Block |
---|
mvn -P deps
ant clean-all build-all
|
Code Block |
---|
ant rdeploy
ant rdeploydb
|
Code Block |
---|
ant rdebug
|
This may take a bit...
At this point, it would be good to check that you can access the console of the newly created instance, followed by destroying the instance.
expunge.interval = 120
expunge.delay = 120
Code Block |
---|
cloudstack-aws-api-register --apikey=JdTxDI2rOZ0RDZdgF1O_ZxfISxNuema9gQ3NyE4z5psX4sgSxE4ueEBohG3bfqWHr7BYP6_sAghXTIvm3noqkw --secretkey=fVT0r5lETIJThRGyec-Eg4WFm9_IN5tNIut7Ac5BJW0VExFGdRZEqA_JFvxdTFDH2ZeRcbO25xPQcyxt0VRWKg --cert=/path/to/cert.pem --url=http://localhost:7080/awsapi
|
...
if the registration works you should see the credentials in the cloudbridge database in the usercredentials table. Within the DevCloud VM (as root): You should see your account as the only row in that table. |
Code Block |
---|
#!/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".