You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 38 Next »

Test with source code release

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.

Setup environment

Install devcloud

Install your required development tools (if not already available)

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

Test the Build

Clean up environment

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.

Download the source build

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.

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:

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

Extract the source code and verify the contents:

unzip apache-cloudstack-$version-incubating-src.zip

OR

tar xvfz apache-cloudstack-$version-incubating-src.tar.gz

Verify the Code's License Headers

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.

Compile

mvn -P deps
ant clean-all build-all

Deploy into the DevCloud VM

ant rdeploy
ant rdeploydb

Start CloudStack management server

ant rdebug

Configure CloudStack management server

  • Access web UI: http://localhost:8080/client
  • Login with admin/password
  • Choose "I have used cloudstack before, skip this guide"
  • Click "Infrastructure", click the "View All" button in the "Zones" display box, click "add zone"
  • Select "basic zone" during the add zone wizard.
  • Type name "test cloud", dns1 "8.8.8.8", internal dns1 "10.0.2.3", hypervisor "Xenserver", select "local storage enabled" (Say Yes if prompted to agree), then click next.
  • Skip "physical network setup" page
  • In "pod" page, type: pod name: 'test pod', reserved system gateway: 10.0.2.2, reserved system mask: 255.255.255.0, start reserved system ip: 10.0.2.200, end reserved system ip: 10.0.2.220
  • In "guest traffic" page, guest gateway: 10.0.2.2, netmask: 255.255.255.0, guest start ip: 10.0.2.100, guest end ip: 10.0.2.199
  • In "cluster" page, type cluster name: "test cluster"
  • In "host " page, host name: 10.0.2.15, user name: root, password: password
  • In "secondary storage" page, server: 10.0.2.15, path: /opt/storage/secondary
  • In "zone creation comple", select "yes" to enable zone.

Wait for secondary storage VM coming up.

This may take a bit...

Add a new instance

  • In the first step of "Add instance " wizard ,  select template,
  • In step 2, select "tiny Linux"
  • In step 3, select "tinyOffering"
  • In step 4, select "No thanks"
  • Skip step 5 and 6.
  • Launch VM

Set some Global Settings

In the UI, set the following global settings:

  • expunge.interval = 120
  • expunge.delay = 120
  • enable.ec2.api = true

Now CTL-C your rdebug, and then "ant rdebug" again (to restart the management server).  This step is critical!

Additional Testing

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.

EC2 testing

  • Under Accounts, generate keys for the admin user in the admin account (save these for future use)
  • Under service offerings, rename tinyOffering as m1.small
  • In your Virtual Box settings, forward port 7080 to local port 7080
  • In your local machine, cd into the awsapi-setup/setup folder of the source
  • Use the python script cloudstack-aws-api-register to register the user. Like so:
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.

  • Use a python script similar as below (change the keys) to launch an instance:
#!/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()
  • Confirm that the instance started via the GUI.

End!

If we made it this far, the release has at least been reasonably "smoke tested".

  • No labels