diff --git a/pom.xml b/pom.xml
index 1dcf36fe7ed..aad124b0baf 100644
--- a/pom.xml
+++ b/pom.xml
@@ -245,6 +245,7 @@
scripts/vm/systemvm/id_rsa.cloud
tools/devcloud/basebuild/puppet-devcloudinitial/files/network.conf
tools/devcloud/devcloud.cfg
+ tools/devcloud-kvm/devcloud-kvm.cfg
ui/lib/flot/jquery.colorhelpers.js
ui/lib/flot/jquery.flot.crosshair.js
ui/lib/flot/jquery.flot.fillbetween.js
@@ -371,6 +372,7 @@
developer
tools/apidoc
tools/devcloud
+ tools/devcloud-kvm
tools/marvin
tools/cli
diff --git a/tools/devcloud-kvm/README.md b/tools/devcloud-kvm/README.md
new file mode 100644
index 00000000000..3261fbe4b8e
--- /dev/null
+++ b/tools/devcloud-kvm/README.md
@@ -0,0 +1,21 @@
+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.
+
+===========================================================
+
+This directory hosts configs for setting up the devcloud-kvm
+environment.
diff --git a/tools/devcloud-kvm/devcloud-kvm.cfg b/tools/devcloud-kvm/devcloud-kvm.cfg
new file mode 100644
index 00000000000..47a128fea14
--- /dev/null
+++ b/tools/devcloud-kvm/devcloud-kvm.cfg
@@ -0,0 +1,97 @@
+{
+ "zones": [
+ {
+ "name": "DevCloudKVM0",
+ "physical_networks": [
+ {
+ "broadcastdomainrange": "Zone",
+ "name": "test-network",
+ "traffictypes": [
+ {
+ "typ": "Guest"
+ },
+ {
+ "typ": "Management"
+ }
+ ],
+ "providers": [
+ {
+ "broadcastdomainrange": "ZONE",
+ "name": "VirtualRouter"
+ },
+ {
+ "broadcastdomainrange": "Pod",
+ "name": "SecurityGroupProvider"
+ }
+ ]
+ }
+ ],
+ "dns2": "4.4.4.4",
+ "dns1": "8.8.8.8",
+ "securitygroupenabled": "true",
+ "localstorageenabled": "true",
+ "networktype": "Basic",
+ "pods": [
+ {
+ "endip": "192.168.100.250",
+ "name": "test00",
+ "startip": "192.168.100.200",
+ "guestIpRanges": [
+ {
+ "startip": "192.168.100.100",
+ "endip": "192.168.100.199",
+ "netmask": "255.255.255.0",
+ "gateway": "192.168.100.1"
+ }
+ ],
+ "netmask": "255.255.255.0",
+ "clusters": [
+ {
+ "clustername": "test000",
+ "hypervisor": "KVM",
+ "hosts": [
+ {
+ "username": "root",
+ "url": "http://192.168.100.10/",
+ "password": "password"
+ }
+ ],
+ "clustertype": "CloudManaged"
+ }
+ ],
+ "gateway": "192.168.100.1"
+ }
+ ],
+ "internaldns1": "192.168.100.10",
+ "secondaryStorages": [
+ {
+ "url": "nfs://192.168.100.10:/nfs/secondary"
+ }
+ ]
+ }
+ ],
+ "logger": [
+ {
+ "name": "TestClient",
+ "file": "/tmp/testclient.log"
+ },
+ {
+ "name": "TestCase",
+ "file": "/tmp/testcase.log"
+ }
+ ],
+ "mgtSvr": [
+ {
+ "mgtSvrIp": "127.0.0.1",
+ "port": 8096
+ }
+ ],
+ "dbSvr":
+ {
+ "dbSvr": "127.0.0.1",
+ "port": 3306,
+ "user": "cloud",
+ "passwd": "cloud",
+ "db": "cloud"
+ }
+}
diff --git a/tools/devcloud-kvm/devcloud-kvm.sql b/tools/devcloud-kvm/devcloud-kvm.sql
new file mode 100644
index 00000000000..eeba64153a3
--- /dev/null
+++ b/tools/devcloud-kvm/devcloud-kvm.sql
@@ -0,0 +1,40 @@
+-- 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.
+
+
+INSERT INTO `cloud`.`disk_offering` (id, name, uuid, display_text, created, use_local_storage, type, disk_size) VALUES (17, 'tinyOffering', UUID(), 'tinyOffering', NOW(), 1, 'Service', 0);
+INSERT INTO `cloud`.`service_offering` (id, cpu, speed, ram_size) VALUES (17, 1, 100, 100);
+INSERT INTO `cloud`.`disk_offering` (id, name, uuid, display_text, created, type, disk_size) VALUES (18, 'tinyDiskOffering', UUID(), 'tinyDiskOffering', NOW(), 'Disk', 1073741824);
+INSERT INTO `cloud`.`configuration` (instance, name,value) VALUE('DEFAULT','router.ram.size', '100');
+INSERT INTO `cloud`.`configuration` (instance, name,value) VALUE('DEFAULT','router.cpu.mhz','100');
+INSERT INTO `cloud`.`configuration` (instance, name,value) VALUE('DEFAULT','console.ram.size','100');
+INSERT INTO `cloud`.`configuration` (instance, name,value) VALUE('DEFAULT','console.cpu.mhz', '100');
+INSERT INTO `cloud`.`configuration` (instance, name,value) VALUE('DEFAULT','ssvm.ram.size','100');
+INSERT INTO `cloud`.`configuration` (instance, name,value) VALUE('DEFAULT','ssvm.cpu.mhz','100');
+INSERT INTO `cloud`.`configuration` (instance, name, value) VALUE('DEFAULT', 'system.vm.use.local.storage', 'true');
+INSERT INTO `cloud`.`configuration` (instance, name, value) VALUE('DEFAULT', 'expunge.workers', '3');
+INSERT INTO `cloud`.`configuration` (instance, name, value) VALUE('DEFAULT', 'expunge.delay', '60');
+INSERT INTO `cloud`.`configuration` (instance, name, value) VALUE('DEFAULT', 'expunge.interval', '60');
+INSERT INTO `cloud`.`configuration` (instance, name, value) VALUE('DEFAULT', 'enable.ec2.api', 'true');
+INSERT INTO `cloud`.`configuration` (instance, name, value) VALUE('DEFAULT', 'enable.s3.api', 'true');
+INSERT INTO `cloud`.`configuration` (instance, name, value) VALUE('DEFAULT', 'host', '192.168.100.10');
+INSERT INTO `cloud`.`configuration` (instance, name, value) VALUE('DEFAULT', 'management.network.cidr', '192.168.100.0/24');
+INSERT INTO `cloud`.`configuration` (instance, name, value) VALUE('DEFAULT', 'secstorage.allowed.internal.sites', '192.168.0.0/8');
+UPDATE `cloud`.`configuration` SET value='10' where name = 'storage.overprovisioning.factor';
+UPDATE `cloud`.`configuration` SET value='10' where name = 'cpu.overprovisioning.factor';
+UPDATE `cloud`.`configuration` SET value='10' where name = 'mem.overprovisioning.factor';
+UPDATE `cloud`.`vm_template` SET unique_name="tiny Linux",name="tiny Linux",url="https://dl.dropbox.com/u/678991/cloudstack-extras/ttylinux_pv.qcow2",checksum="81dcf4b4ca05a3b637a040e851568f29",display_text="tiny Linux",format='QCOW2',hypervisor_type='KVM' where id=5;
diff --git a/tools/devcloud-kvm/pom.xml b/tools/devcloud-kvm/pom.xml
new file mode 100644
index 00000000000..c9af192bee3
--- /dev/null
+++ b/tools/devcloud-kvm/pom.xml
@@ -0,0 +1,138 @@
+
+
+ 4.0.0
+ cloud-devcloud-kvm
+ Apache CloudStack Developer Tools
+ pom
+
+ org.apache.cloudstack
+ cloudstack
+ 4.1.0-SNAPSHOT
+ ../../pom.xml
+
+
+
+ mysql
+ mysql-connector-java
+ 5.1.21
+ runtime
+
+
+
+
+ install
+
+
+
+ deploydb
+
+
+ deploydb
+
+
+
+
+
+ org.codehaus.mojo
+ properties-maven-plugin
+ 1.0-alpha-2
+
+
+ initialize
+
+ read-project-properties
+
+
+
+ ${project.parent.basedir}/utils/conf/db.properties
+ ${project.parent.basedir}/utils/conf/db.properties.override
+
+ true
+
+
+
+
+
+ org.codehaus.mojo
+ sql-maven-plugin
+ 1.5
+
+
+
+ mysql
+ mysql-connector-java
+ ${cs.mysql.version}
+
+
+
+ org.gjt.mm.mysql.Driver
+ jdbc:mysql://${db.cloud.host}:${db.cloud.port}/cloud
+ ${db.cloud.username}
+ ${db.cloud.password}
+
+ ${maven.test.skip}
+ true
+
+
+
+ create-schema
+ process-test-resources
+
+ execute
+
+
+
+ ${basedir}/devcloud-kvm.sql
+
+
+
+
+
+
+
+
+
+ deploysvr
+
+
+ deploysvr
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 1.2.1
+
+
+ package
+
+ exec
+
+
+
+
+ python
+
+ ../marvin/marvin/deployDataCenter.py
+ -i
+ devcloud-kvm.cfg
+
+
+
+
+
+
+
+