Hey All,
I figure I should just start a thread for this because it is worth its own
discussion.

I have been building, developing and testing CS code for quite some time
now.  I have a bit of a system down now, but it is still a battle every
time.  I know that a lot of you probably have your own systems in place, so
I am interested to know how you are working.

Here are my requirements:
- I need to be able to write code on my laptop (Mac in my case).
- I need to be able to have different CS builds functional at the same time
(potentially with different versions).
- I need Advanced networking.
- I need to be able to connect from my CS environments to other network
providers (such as a Palo Alto firewall or an SDX) to orchestrate
configuration.

Here is what I currently have setup.
- I have VMware Fusion 6 installed on my Mac.
- I have one VM setup as Xenserver.
- I have one VM setup for CS with NFS for secondary storage which just
points to itself.
- I have two networks which I use for management and guest/public traffic
configured between them.

I have a clean install of Xenserver that is all setup and in a state where
it is ready to go for CS.  I then snapshot it in that state and that
snapshot is the starting point for all of my CS deploys.
I have a clean install of CentOS with all of the requirements setup (mysql,
maven, java, etc...) setup.  With everything installed and setup ready for
CS to be built and deployed, I snapshot that VM and work from it as the
starting point for my management server.

I only ever have one environment running, but I can have multiple
environments snapshotted if I need to bring one up to test something.

When I need to bring up a new environment or blow away an environment to
start from scratch, I revert to the two snapshots and start from there.

I have the git repo's for CS on my local machine and I share the directory
with the CentOS VM.  This enables me to work on my local machine and then
build and deploy in the VM in an isolated environment.

There is one little caveat with this though.  Before I build CS, I have to
modify the 'tools/marvin/pom.xml' file and change the install type from
'sdist' to 'install' because the directory is shared, so 'sdist' does not
work.

Right now I am installing using Devcloud, so my flow is as follows:

Build Cloudstack (from scratch):

$ mvn -P developer,systemvm clean install

(this will work up to compiling 'marvin' and then it will fail)

I then run:

$ mvn -P systemvm -Dmaven.test.skip=true install

(this now successfully builds everything.  i can not run with skip tests
initially because apparently there are some dependencies that are put in
place by the tests.  i have not investigated this, so i just use this flow
cause it works.)

Now that everything is built, I install the latest Marvin:

$ cd tools/marvin; python setup.py install

(this is required on some versions and not on others, I put it here because
this is where you have to do it if it is required.)

Now I deploy the database:

$ mvn -P developer -pl developer,tools/devcloud -Ddeploydb

Then I start the server (chmod path changes based on branch):

$ chmod 755
$cs/client/target/cloud-client-ui-4.3.0/WEB-INF/classes/scripts/vm/systemvm/injectkeys.sh
$ export MAVEN_OPTS="-Xmx1024m -XX:MaxPermSize=512m -Xdebug
-Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n"
$ mvn -pl :cloud-client-ui jetty:run

With the server running I then run the deploy server script to configure CS
according to the devcloud config:

$ export MAVEN_OPTS=""
$ mvn -P developer -pl tools/devcloud -Ddeploysvr -X

Assuming marvin is happy (which sometimes happens :) ), the configuration
is completed and I have an environment configured and ready to go.

Note: woops, I forgot to put the install of system templates in my
workflow, but that is described in the 'build cloudstack from source' wiki
page.

I have recently been pointed at this setup:
https://github.com/imduffy15/GSoC-2014

I will give this a shot to see if it simplifies any of this.  When I tried
to use VirtualBox previously for this setup, I had issues getting advanced
networking to work.  I also had issues with the VT pass through on Xen on
VirtualBox, so we will see if that still causes problems with this setup.
 I also had problems with shared folders on VirtualBox, so I had issues
working with code from my host machine.

I will give it a shot though.  Hopefully it will make this process easier.

So, now for the question/discussion.  What do you use as your dev
environment?  Do you have a better system in place than what I have?

Cheers,

*Will STEVENS*
Lead Developer

*CloudOps* *| *Cloud Solutions Experts
420 rue Guy *|* Montreal *|* Quebec *|* H3J 1S6
w cloudops.com *|* tw @CloudOps_

Reply via email to