You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by wi...@apache.org on 2013/05/24 00:06:33 UTC
[1/9] git commit: updated refs/heads/rbd-snap-clone to 7619076
Updated Branches:
refs/heads/rbd-snap-clone 2355a81fe -> 76190760c (forced update)
CLOUDSTACK-2612: Correcting missing db qualifiers in schema-302to40.sql
Signed-off-by: Chip Childers <ch...@gmail.com>
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/cc492305
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/cc492305
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/cc492305
Branch: refs/heads/rbd-snap-clone
Commit: cc492305cead9307b9959fa696e11f0fad415c0a
Parents: 80a3c05
Author: Chip Childers <ch...@gmail.com>
Authored: Thu May 23 17:50:15 2013 +0100
Committer: Chip Childers <ch...@gmail.com>
Committed: Thu May 23 17:50:47 2013 +0100
----------------------------------------------------------------------
setup/db/db/schema-302to40.sql | 12 ++++++------
1 files changed, 6 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/cc492305/setup/db/db/schema-302to40.sql
----------------------------------------------------------------------
diff --git a/setup/db/db/schema-302to40.sql b/setup/db/db/schema-302to40.sql
index f17f067..7fa7348 100644
--- a/setup/db/db/schema-302to40.sql
+++ b/setup/db/db/schema-302to40.sql
@@ -134,7 +134,7 @@ ALTER TABLE `cloud`.`account` ADD COLUMN `default_zone_id` bigint unsigned;
ALTER TABLE `cloud`.`account` ADD CONSTRAINT `fk_account__default_zone_id` FOREIGN KEY `fk_account__default_zone_id`(`default_zone_id`) REFERENCES `data_center`(`id`) ON DELETE CASCADE;
-DELETE FROM `cloud`.`storage_pool_host_ref` WHERE pool_id IN (SELECT id FROM storage_pool WHERE removed IS NOT NULL);
+DELETE FROM `cloud`.`storage_pool_host_ref` WHERE pool_id IN (SELECT id FROM `cloud`.`storage_pool` WHERE removed IS NOT NULL);
DROP TABLE IF EXISTS `cloud`.`cluster_vsm_map`;
DROP TABLE IF EXISTS `cloud`.`virtual_supervisor_module`;
@@ -179,14 +179,14 @@ CREATE TABLE `cloud`.`port_profile` (
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-DELETE FROM `cloud`.`storage_pool_host_ref` WHERE pool_id IN (SELECT id FROM storage_pool WHERE removed IS NOT NULL);
+DELETE FROM `cloud`.`storage_pool_host_ref` WHERE pool_id IN (SELECT id FROM `cloud`.`storage_pool` WHERE removed IS NOT NULL);
ALTER TABLE `cloud`.`service_offering` MODIFY `nw_rate` smallint(5) unsigned DEFAULT '200' COMMENT 'network rate throttle mbits/s';
-- RBD Primary Storage pool support (commit: 406fd95d87bfcdbb282d65589ab1fb6e9fd0018a)
-ALTER TABLE `storage_pool` ADD `user_info` VARCHAR( 255 ) NULL COMMENT 'Authorization information for the storage pool. Used by network filesystems' AFTER `host_address`;
+ALTER TABLE `cloud`.`storage_pool` ADD `user_info` VARCHAR( 255 ) NULL COMMENT 'Authorization information for the storage pool. Used by network filesystems' AFTER `host_address`;
-- Resource tags (commit: 62d45b9670520a1ee8b520509393d4258c689b50)
CREATE TABLE `cloud`.`resource_tags` (
@@ -232,9 +232,9 @@ CREATE TABLE `cloud`.`nicira_nvp_nic_map` (
-- Remove the unique constraint on physical_network_id, provider_name from physical_network_service_providers
-- Because the name of this contraint is not set we need this roundabout way
-- The key is also used by the foreign key constraint so drop and recreate that one
-ALTER TABLE physical_network_service_providers DROP FOREIGN KEY fk_pnetwork_service_providers__physical_network_id;
+ALTER TABLE `cloud`.`physical_network_service_providers` DROP FOREIGN KEY fk_pnetwork_service_providers__physical_network_id;
-SET @constraintname = (select CONCAT(CONCAT('DROP INDEX ', A.CONSTRAINT_NAME), ' ON physical_network_service_providers' )
+SET @constraintname = (select CONCAT(CONCAT('DROP INDEX ', A.CONSTRAINT_NAME), ' ON cloud.physical_network_service_providers' )
from information_schema.key_column_usage A
JOIN information_schema.key_column_usage B ON B.table_name = 'physical_network_service_providers' AND B.COLUMN_NAME = 'provider_name' AND A.COLUMN_NAME ='physical_network_id' AND B.CONSTRAINT_NAME=A.CONSTRAINT_NAME
where A.table_name = 'physical_network_service_providers' LIMIT 1);
@@ -243,7 +243,7 @@ PREPARE stmt1 FROM @constraintname;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
-AlTER TABLE physical_network_service_providers ADD CONSTRAINT `fk_pnetwork_service_providers__physical_network_id` FOREIGN KEY (`physical_network_id`) REFERENCES `physical_network`(`id`) ON DELETE CASCADE;
+AlTER TABLE `cloud`.`physical_network_service_providers` ADD CONSTRAINT `fk_pnetwork_service_providers__physical_network_id` FOREIGN KEY (`physical_network_id`) REFERENCES `physical_network`(`id`) ON DELETE CASCADE;
UPDATE `cloud`.`configuration` SET description='In second, timeout for creating volume from snapshot' WHERE name='create.volume.from.snapshot.wait';
ALTER TABLE `cloud`.`data_center` ADD COLUMN `is_local_storage_enabled` tinyint NOT NULL DEFAULT 0 COMMENT 'Is local storage offering enabled for this data center; 1: enabled, 0: not';
[5/9] git commit: updated refs/heads/rbd-snap-clone to 7619076
Posted by wi...@apache.org.
firewall service is not supported in shared SG enabled network offering , remove it
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/e8fbee0e
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/e8fbee0e
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/e8fbee0e
Branch: refs/heads/rbd-snap-clone
Commit: e8fbee0e18383a4ae07b62c4dafdadf742ec62bb
Parents: 2336d47
Author: Anthony Xu <an...@citrix.com>
Authored: Thu May 23 14:18:09 2013 -0700
Committer: Anthony Xu <an...@citrix.com>
Committed: Thu May 23 14:19:43 2013 -0700
----------------------------------------------------------------------
.../src/com/cloud/upgrade/dao/Upgrade410to420.java | 32 +++++++++++++++
setup/db/db/schema-410to420.sql | 2 +-
2 files changed, 33 insertions(+), 1 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e8fbee0e/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java b/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java
index c03d377..95abe5f 100644
--- a/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java
+++ b/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java
@@ -75,6 +75,7 @@ public class Upgrade410to420 implements DbUpgrade {
updateNetworkACLs(conn);
addHostDetailsIndex(conn);
updateNetworksForPrivateGateways(conn);
+ removeFirewallServiceFromSharedNetworkOfferingWithSGService(conn);
}
private void updateSystemVmTemplates(Connection conn) {
@@ -747,4 +748,35 @@ public class Upgrade410to420 implements DbUpgrade {
throw new CloudRuntimeException("Failed to update private networks with VPC id.", e);
}
}
+
+ private void removeFirewallServiceFromSharedNetworkOfferingWithSGService(Connection conn) {
+ PreparedStatement pstmt = null;
+ ResultSet rs = null;
+
+ try {
+ pstmt = conn.prepareStatement("select id from `cloud`.`network_offerings` where unique_name='DefaultSharedNetworkOfferingWithSGService'");
+ rs = pstmt.executeQuery();
+ while (rs.next()) {
+ long id = rs.getLong(1);
+ // remove Firewall service for SG shared network offering
+ pstmt = conn.prepareStatement("DELETE `cloud`.`ntwk_offering_service_map` where network_offering_id=? and service='Firewall'");
+ pstmt.setLong(1, id);
+ pstmt.executeUpdate();
+ }
+ } catch (SQLException e) {
+ throw new CloudRuntimeException("Unable to remove Firewall service for SG shared network offering.", e);
+ } finally {
+ try {
+ if (rs != null) {
+ rs.close();
+ }
+
+ if (pstmt != null) {
+ pstmt.close();
+ }
+ } catch (SQLException e) {
+ }
+ }
+ }
+
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e8fbee0e/setup/db/db/schema-410to420.sql
----------------------------------------------------------------------
diff --git a/setup/db/db/schema-410to420.sql b/setup/db/db/schema-410to420.sql
index ea7a18d..b548035 100644
--- a/setup/db/db/schema-410to420.sql
+++ b/setup/db/db/schema-410to420.sql
@@ -1710,5 +1710,5 @@ INSERT IGNORE INTO `cloud`.`configuration` VALUES ('Advanced', 'DEFAULT', 'VpcMa
-- Re-enable foreign key checking, at the end of the upgrade path
SET foreign_key_checks = 1;
-
+UPDATE `cloud`.`snapshot_policy` set uuid=id WHERE uuid is NULL;
[8/9] git commit: updated refs/heads/rbd-snap-clone to 7619076
Posted by wi...@apache.org.
rbd: Use cloning for deploying templates instead of a copy
RBD format 2 supports cloning (aka layering) where one base image can serve
as a parent image for multiple child images.
This enables fast deployment of a large amount of virtual machines, but it also
saves spaces on the Ceph cluster and improves performance due to better caching.
Qemu-img doesn't support RBD format 2 (yet), so to enable these functions the
RADOS/RBD Java bindings are required.
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/0da9a4a2
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/0da9a4a2
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/0da9a4a2
Branch: refs/heads/rbd-snap-clone
Commit: 0da9a4a2be0899bc8b40c463b8a7ffe1e8352da5
Parents: b1f4c8e
Author: Wido den Hollander <wi...@42on.com>
Authored: Mon May 13 12:56:18 2013 +0200
Committer: Wido den Hollander <wi...@42on.com>
Committed: Thu May 23 23:47:40 2013 +0200
----------------------------------------------------------------------
plugins/hypervisors/kvm/pom.xml | 9 +
.../kvm/resource/LibvirtComputingResource.java | 7 +
.../kvm/storage/LibvirtStorageAdaptor.java | 248 +++++++++++++--
pom.xml | 1 +
4 files changed, 246 insertions(+), 19 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0da9a4a2/plugins/hypervisors/kvm/pom.xml
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/kvm/pom.xml b/plugins/hypervisors/kvm/pom.xml
index 613c817..1babe7c 100644
--- a/plugins/hypervisors/kvm/pom.xml
+++ b/plugins/hypervisors/kvm/pom.xml
@@ -24,6 +24,10 @@
<id>libvirt-org</id>
<url>http://libvirt.org/maven2</url>
</repository>
+ <repository>
+ <id>ceph-com</id>
+ <url>http://ceph.com/maven</url>
+ </repository>
</repositories>
<dependencies>
<dependency>
@@ -36,6 +40,11 @@
<artifactId>libvirt</artifactId>
<version>${cs.libvirt-java.version}</version>
</dependency>
+ <dependency>
+ <groupId>com.ceph</groupId>
+ <artifactId>rados</artifactId>
+ <version>${cs.rados-java.version}</version>
+ </dependency>
</dependencies>
<build>
<defaultGoal>install</defaultGoal>
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0da9a4a2/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
index 1e20d75..c34d1eb 100755
--- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
+++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
@@ -1253,6 +1253,13 @@ ServerResource {
}
private CopyVolumeAnswer execute(CopyVolumeCommand cmd) {
+ /**
+ This method is only used for copying files from Primary Storage TO Secondary Storage
+
+ It COULD also do it the other way around, but the code in the ManagementServerImpl shows
+ that it always sets copyToSecondary to true
+
+ */
boolean copyToSecondary = cmd.toSecondaryStorage();
String volumePath = cmd.getVolumePath();
StorageFilerTO pool = cmd.getPool();
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0da9a4a2/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java
index e7e4bbf..fa2f670 100644
--- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java
+++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java
@@ -17,6 +17,9 @@
package com.cloud.hypervisor.kvm.storage;
import java.io.File;
+import java.io.FileInputStream;
+import java.io.BufferedInputStream;
+import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
@@ -37,6 +40,12 @@ import org.libvirt.StoragePool;
import org.libvirt.StoragePoolInfo;
import org.libvirt.StorageVol;
import org.libvirt.StoragePoolInfo.StoragePoolState;
+import com.ceph.rados.Rados;
+import com.ceph.rados.RadosException;
+import com.ceph.rados.IoCTX;
+import com.ceph.rbd.Rbd;
+import com.ceph.rbd.RbdImage;
+import com.ceph.rbd.RbdException;
import com.cloud.agent.api.ManageSnapshotCommand;
import com.cloud.hypervisor.kvm.resource.LibvirtConnection;
@@ -63,6 +72,8 @@ public class LibvirtStorageAdaptor implements StorageAdaptor {
private String _mountPoint = "/mnt";
private String _manageSnapshotPath;
+ private String rbdTemplateSnapName = "cloudstack-base-snap";
+
public LibvirtStorageAdaptor(StorageLayer storage) {
_storageLayer = storage;
_manageSnapshotPath = Script.findScript("scripts/storage/qcow2/",
@@ -638,6 +649,15 @@ public class LibvirtStorageAdaptor implements StorageAdaptor {
}
}
+ /**
+ * This function copies a physical disk from Secondary Storage to Primary Storage
+ * or from Primary to Primary Storage
+ *
+ * The first time a template is deployed in Primary Storage it will be copied from
+ * Secondary to Primary.
+ *
+ * If it has been created on Primary Storage, it will be copied on the Primary Storage
+ */
@Override
public KVMPhysicalDisk createDiskFromTemplate(KVMPhysicalDisk template,
String name, PhysicalDiskFormat format, long size, KVMStoragePool destPool) {
@@ -690,21 +710,118 @@ public class LibvirtStorageAdaptor implements StorageAdaptor {
if (srcPool.getType() != StoragePoolType.RBD) {
srcFile = new QemuImgFile(template.getPath(), template.getFormat());
+ qemu.convert(srcFile, destFile);
} else {
- template.setFormat(PhysicalDiskFormat.RAW);
- srcFile = new QemuImgFile(KVMPhysicalDisk.RBDStringBuilder(srcPool.getSourceHost(),
- srcPool.getSourcePort(),
- srcPool.getAuthUserName(),
- srcPool.getAuthSecret(),
- template.getPath()));
- srcFile.setFormat(template.getFormat());
+
+ /**
+ * We have to find out if the source file is in the same RBD pool and has
+ * RBD format 2 before we can do a layering/clone operation on the RBD image
+ *
+ * This will be the case when the template is already on Primary Storage and
+ * we want to copy it
+ */
+
+ /* Feature 1<<0 means layering in RBD format 2 */
+ int rbdFeatures = (1<<0);
+ /* Order 0 means 4MB blocks (the default) */
+ int rbdOrder = 0;
+
+ try {
+ if ((srcPool.getSourceHost().equals(destPool.getSourceHost())) && (srcPool.getSourceDir().equals(destPool.getSourceDir()))) {
+ /* We are on the same Ceph cluster, but we require RBD format 2 on the source image */
+ s_logger.debug("Trying to perform a RBD clone (layering) since we are operating in the same storage pool");
+
+ Rados r = new Rados(srcPool.getAuthUserName());
+ r.confSet("mon_host", srcPool.getSourceHost() + ":" + srcPool.getSourcePort());
+ r.confSet("key", srcPool.getAuthSecret());
+ r.connect();
+ s_logger.debug("Succesfully connected to Ceph cluster at " + r.confGet("mon_host"));
+
+ IoCTX io = r.ioCtxCreate(srcPool.getSourceDir());
+ Rbd rbd = new Rbd(io);
+ RbdImage srcImage = rbd.open(template.getName());
+
+ if (srcImage.isOldFormat()) {
+ /* The source image is RBD format 1, we have to do a regular copy */
+ s_logger.debug("The source image " + srcPool.getSourceDir() + "/" + template.getName()
+ + " is RBD format 1. We have to perform a regular copy (" + template.getVirtualSize() + " bytes)");
+
+ rbd.create(disk.getName(), template.getVirtualSize(), rbdFeatures, rbdOrder);
+ RbdImage destImage = rbd.open(disk.getName());
+
+ s_logger.debug("Starting to copy " + srcImage.getName() + " to " + destImage.getName() + " in Ceph pool " + srcPool.getSourceDir());
+ rbd.copy(srcImage, destImage);
+
+ s_logger.debug("Finished copying " + srcImage.getName() + " to " + destImage.getName() + " in Ceph pool " + srcPool.getSourceDir());
+ rbd.close(destImage);
+ } else {
+ s_logger.debug("The source image " + srcPool.getSourceDir() + "/" + template.getName()
+ + " is RBD format 2. We will perform a RBD clone using snapshot "
+ + this.rbdTemplateSnapName);
+ /* The source image is format 2, we can do a RBD snapshot+clone (layering) */
+ rbd.clone(template.getName(), this.rbdTemplateSnapName, io, disk.getName(), rbdFeatures, rbdOrder);
+ s_logger.debug("Succesfully cloned " + template.getName() + "@" + this.rbdTemplateSnapName + " to " + disk.getName());
+ }
+
+ rbd.close(srcImage);
+ r.ioCtxDestroy(io);
+ } else {
+ /* The source pool or host is not the same Ceph cluster, we do a simple copy with Qemu-Img */
+ s_logger.debug("Both the source and destination are RBD, but not the same Ceph cluster. Performing a copy");
+
+ Rados rSrc = new Rados(srcPool.getAuthUserName());
+ rSrc.confSet("mon_host", srcPool.getSourceHost() + ":" + srcPool.getSourcePort());
+ rSrc.confSet("key", srcPool.getAuthSecret());
+ rSrc.connect();
+ s_logger.debug("Succesfully connected to source Ceph cluster at " + rSrc.confGet("mon_host"));
+
+ Rados rDest = new Rados(destPool.getAuthUserName());
+ rDest.confSet("mon_host", destPool.getSourceHost() + ":" + destPool.getSourcePort());
+ rDest.confSet("key", destPool.getAuthSecret());
+ rDest.connect();
+ s_logger.debug("Succesfully connected to source Ceph cluster at " + rDest.confGet("mon_host"));
+
+ IoCTX sIO = rSrc.ioCtxCreate(srcPool.getSourceDir());
+ Rbd sRbd = new Rbd(sIO);
+
+ IoCTX dIO = rDest.ioCtxCreate(destPool.getSourceDir());
+ Rbd dRbd = new Rbd(dIO);
+
+ s_logger.debug("Creating " + disk.getName() + " on the destination cluster " + rDest.confGet("mon_host")
+ + " in pool " + destPool.getSourceDir());
+ dRbd.create(disk.getName(), template.getVirtualSize(), rbdFeatures, rbdOrder);
+
+ RbdImage srcImage = sRbd.open(template.getName());
+ RbdImage destImage = dRbd.open(disk.getName());
+
+ s_logger.debug("Copying " + template.getName() + " from Ceph cluster " + rSrc.confGet("mon_host") + " to " + disk.getName()
+ + " on cluster " + rDest.confGet("mon_host"));
+ sRbd.copy(srcImage, destImage);
+
+ sRbd.close(srcImage);
+ dRbd.close(destImage);
+
+ rSrc.ioCtxDestroy(sIO);
+ rDest.ioCtxDestroy(dIO);
+ }
+ } catch (RadosException e) {
+ s_logger.error("Failed to perform a RADOS action on the Ceph cluster, the error was: " + e.getMessage());
+ disk = null;
+ } catch (RbdException e) {
+ s_logger.error("Failed to perform a RBD action on the Ceph cluster, the error was: " + e.getMessage());
+ disk = null;
+ }
}
- qemu.convert(srcFile, destFile);
}
} catch (QemuImgException e) {
s_logger.error("Failed to create " + disk.getPath() +
" due to a failed executing of qemu-img: " + e.getMessage());
}
+
+ if (disk == null) {
+ throw new CloudRuntimeException("Failed to create " + disk.getPath() + " from template " + template.getName());
+ }
+
return disk;
}
@@ -733,17 +850,26 @@ public class LibvirtStorageAdaptor implements StorageAdaptor {
}
}
+ /**
+ * This copies a volume from Primary Storage to Secondary Storage
+ *
+ * In theory it could also do it the other way around, but the current implementation
+ * in ManagementServerImpl shows that the destPool is always a Secondary Storage Pool
+ */
@Override
public KVMPhysicalDisk copyPhysicalDisk(KVMPhysicalDisk disk, String name,
KVMStoragePool destPool) {
- /*
+ /**
With RBD you can't run qemu-img convert with an existing RBD image as destination
qemu-img will exit with the error that the destination already exists.
So for RBD we don't create the image, but let qemu-img do that for us.
We then create a KVMPhysicalDisk object that we can return
- */
+
+ It is however very unlikely that the destPool will be RBD, since it isn't supported
+ for Secondary Storage
+ */
KVMPhysicalDisk newDisk;
if (destPool.getType() != StoragePoolType.RBD) {
@@ -791,15 +917,97 @@ public class LibvirtStorageAdaptor implements StorageAdaptor {
+ srcFile.getFileName() + " the error was: " + e.getMessage());
}
}
+
+ try {
+ qemu.convert(srcFile, destFile);
+ } catch (QemuImgException e) {
+ s_logger.error("Failed to convert " + srcFile.getFileName() + " to "
+ + destFile.getFileName() + " the error was: " + e.getMessage());
+ }
+
} else if ((srcPool.getType() != StoragePoolType.RBD) && (destPool.getType() == StoragePoolType.RBD)) {
- srcFile = new QemuImgFile(sourcePath, sourceFormat);
- destFile = new QemuImgFile(KVMPhysicalDisk.RBDStringBuilder(destPool.getSourceHost(),
- destPool.getSourcePort(),
- destPool.getAuthUserName(),
- destPool.getAuthSecret(),
- destPath));
- destFile.setFormat(destFormat);
+ /**
+ * Qemu doesn't support writing to RBD format 2 directly, so we have to write to a temporary RAW file first
+ * which we then convert to RBD format 2.
+ *
+ * A HUGE performance gain can be achieved here if QCOW2 -> RBD format 2 can be done in one step
+ */
+ s_logger.debug("The source image is not RBD, but the destination is. We will convert into RBD format 2");
+ String tmpFile = "/tmp/" + name;
+ int rbdFeatures = (1<<0);
+ int rbdOrder = 0;
+
+ try {
+ srcFile = new QemuImgFile(sourcePath, sourceFormat);
+ destFile = new QemuImgFile(tmpFile);
+ s_logger.debug("Converting " + srcFile.getFileName() + " to " + tmpFile + " as a temporary file for RBD conversion");
+ qemu.convert(srcFile, destFile);
+
+ // We now convert the temporary file to a RBD image with format 2
+ Rados r = new Rados(destPool.getAuthUserName());
+ r.confSet("mon_host", destPool.getSourceHost() + ":" + destPool.getSourcePort());
+ r.confSet("key", destPool.getAuthSecret());
+ r.connect();
+ s_logger.debug("Succesfully connected to Ceph cluster at " + r.confGet("mon_host"));
+
+ IoCTX io = r.ioCtxCreate(destPool.getSourceDir());
+ Rbd rbd = new Rbd(io);
+
+ s_logger.debug("Creating RBD image " + name + " in Ceph pool " + destPool.getSourceDir() + " with RBD format 2");
+ rbd.create(name, disk.getVirtualSize(), rbdFeatures, rbdOrder);
+
+ RbdImage image = rbd.open(name);
+
+ // We now read the temporary file and write it to the RBD image
+ File fh = new File(tmpFile);
+ BufferedInputStream bis = new BufferedInputStream(new FileInputStream(fh));
+
+ int chunkSize = 4194304;
+ long offset = 0;
+ s_logger.debug("Reading temporary file " + tmpFile + " (" + fh.length() + " bytes) into RBD image " + name + " in chunks of " + chunkSize + " bytes");
+ while(true) {
+ byte[] buf = new byte[chunkSize];
+
+ int bytes = bis.read(buf);
+ if (bytes <= 0) {
+ break;
+ }
+ image.write(buf, offset, bytes);
+ offset += bytes;
+ }
+ s_logger.debug("Completed writing " + tmpFile + " to RBD image " + name + ". Bytes written: " + offset);
+ bis.close();
+ s_logger.debug("Removing temporary file " + tmpFile);
+ fh.delete();
+
+ /* Snapshot the image and protect that snapshot so we can clone (layer) from it */
+ s_logger.debug("Creating RBD snapshot " + this.rbdTemplateSnapName + " on image " + name);
+ image.snapCreate(this.rbdTemplateSnapName);
+ s_logger.debug("Protecting RBD snapshot " + this.rbdTemplateSnapName + " on image " + name);
+ image.snapProtect(this.rbdTemplateSnapName);
+
+ rbd.close(image);
+ r.ioCtxDestroy(io);
+ } catch (QemuImgException e) {
+ s_logger.error("Failed to do a temp convert from " + srcFile.getFileName() + " to "
+ + destFile.getFileName() + " the error was: " + e.getMessage());
+ newDisk = null;
+ } catch (RadosException e) {
+ s_logger.error("A Ceph RADOS operation failed (" + e.getReturnValue() + "). The error was: " + e.getMessage());
+ newDisk = null;
+ } catch (RbdException e) {
+ s_logger.error("A Ceph RBD operation failed (" + e.getReturnValue() + "). The error was: " + e.getMessage());
+ newDisk = null;
+ } catch (IOException e) {
+ s_logger.error("Failed reading the temporary file during the conversion to RBD: " + e.getMessage());
+ newDisk = null;
+ }
+
} else {
+ /**
+ We let Qemu-Img do the work here. Although we could work with librbd and have that do the cloning
+ it doesn't benefit us. It's better to keep the current code in place which works
+ */
srcFile = new QemuImgFile(KVMPhysicalDisk.RBDStringBuilder(srcPool.getSourceHost(),
srcPool.getSourcePort(),
srcPool.getAuthUserName(),
@@ -812,17 +1020,19 @@ public class LibvirtStorageAdaptor implements StorageAdaptor {
destPool.getAuthSecret(),
destPath));
destFile.setFormat(destFormat);
- }
- if (srcFile != null && destFile != null) {
try {
qemu.convert(srcFile, destFile);
} catch (QemuImgException e) {
s_logger.error("Failed to convert " + srcFile.getFileName() + " to "
+ destFile.getFileName() + " the error was: " + e.getMessage());
+ newDisk = null;
}
}
+ if (newDisk == null) {
+ throw new CloudRuntimeException("Failed to copy " + disk.getPath() + " to " + name);
+ }
return newDisk;
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0da9a4a2/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index d7e80d6..8806ec2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -83,6 +83,7 @@
<cs.java-ipv6.version>0.10</cs.java-ipv6.version>
<cs.replace.properties>build/replace.properties</cs.replace.properties>
<cs.libvirt-java.version>0.4.9</cs.libvirt-java.version>
+ <cs.rados-java.version>0.1.0</cs.rados-java.version>
<cs.target.dir>target</cs.target.dir>
<cs.daemon.version>1.0.10</cs.daemon.version>
</properties>
[4/9] git commit: updated refs/heads/rbd-snap-clone to 7619076
Posted by wi...@apache.org.
debian: When building packages run a Maven clean first
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/2336d478
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/2336d478
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/2336d478
Branch: refs/heads/rbd-snap-clone
Commit: 2336d478beca8c3d17fbf76bbf09f915906bdea8
Parents: 1201d62
Author: Wido den Hollander <wi...@42on.com>
Authored: Thu May 23 23:19:03 2013 +0200
Committer: Wido den Hollander <wi...@42on.com>
Committed: Thu May 23 23:19:03 2013 +0200
----------------------------------------------------------------------
debian/rules | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2336d478/debian/rules
----------------------------------------------------------------------
diff --git a/debian/rules b/debian/rules
index e381b1a..48485bb 100755
--- a/debian/rules
+++ b/debian/rules
@@ -34,7 +34,7 @@ build: build-indep
build-indep: build-indep-stamp
build-indep-stamp: configure
- mvn package -Pawsapi -DskipTests -Dsystemvm \
+ mvn clean package -Pawsapi -DskipTests -Dsystemvm \
-Dcs.replace.properties=replace.properties.tmp \
${ACS_BUILD_OPTS}
touch $@
[3/9] git commit: updated refs/heads/rbd-snap-clone to 7619076
Posted by wi...@apache.org.
CLOUDSTACK-862 Updated documentation with the new features available in
the Nicira NVP plugin.
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/1201d623
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/1201d623
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/1201d623
Branch: refs/heads/rbd-snap-clone
Commit: 1201d623a7091517a1e26bc4b82c5daeea3c155f
Parents: 623a26e
Author: Hugo Trippaers <tr...@gmail.com>
Authored: Thu May 23 16:58:12 2013 +0200
Committer: Hugo Trippaers <tr...@gmail.com>
Committed: Thu May 23 22:48:40 2013 +0200
----------------------------------------------------------------------
docs/en-US/CloudStack_Nicira_NVP_Guide.xml | 1 +
docs/en-US/images/nvp-add-controller.png | Bin 0 -> 35928 bytes
docs/en-US/images/nvp-enable-provider.png | Bin 0 -> 32158 bytes
docs/en-US/images/nvp-network-offering.png | Bin 0 -> 104060 bytes
docs/en-US/images/nvp-physical-network-stt.png | Bin 0 -> 27317 bytes
docs/en-US/images/nvp-vpc-offering-edit.png | Bin 0 -> 29279 bytes
docs/en-US/plugin-niciranvp-about.xml | 2 +-
docs/en-US/plugin-niciranvp-devicemanagement.xml | 32 +---
docs/en-US/plugin-niciranvp-features.xml | 67 +++++++-
docs/en-US/plugin-niciranvp-guide.xml | 31 ----
docs/en-US/plugin-niciranvp-introduction.xml | 5 +-
docs/en-US/plugin-niciranvp-networkofferings.xml | 131 +++++++++++++++
docs/en-US/plugin-niciranvp-physicalnet.xml | 37 ++++
docs/en-US/plugin-niciranvp-preparations.xml | 11 +-
docs/en-US/plugin-niciranvp-provider.xml | 28 ++--
docs/en-US/plugin-niciranvp-revisions.xml | 14 ++
docs/en-US/plugin-niciranvp-tables.xml | 105 +++++++++---
docs/en-US/plugin-niciranvp-usage.xml | 11 +-
docs/en-US/plugin-niciranvp-vpc.xml | 30 ++++
docs/en-US/plugin-niciranvp-vpcfeatures.xml | 28 +++
docs/en-US/plugin-niciranvp-vpcnetworkoffering.xml | 81 +++++++++
docs/en-US/plugin-niciranvp-vpcoffering.xml | 38 ++++
22 files changed, 537 insertions(+), 115 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/1201d623/docs/en-US/CloudStack_Nicira_NVP_Guide.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/CloudStack_Nicira_NVP_Guide.xml b/docs/en-US/CloudStack_Nicira_NVP_Guide.xml
index 7f156d5..5431fc1 100644
--- a/docs/en-US/CloudStack_Nicira_NVP_Guide.xml
+++ b/docs/en-US/CloudStack_Nicira_NVP_Guide.xml
@@ -48,6 +48,7 @@
</bookinfo>
<xi:include href="plugin-niciranvp-about.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="plugin-niciranvp-usage.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="plugin-niciranvp-vpc.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
<xi:include href="plugin-niciranvp-troubleshooting.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="plugin-niciranvp-revisions.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
</book>
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/1201d623/docs/en-US/images/nvp-add-controller.png
----------------------------------------------------------------------
diff --git a/docs/en-US/images/nvp-add-controller.png b/docs/en-US/images/nvp-add-controller.png
new file mode 100644
index 0000000..e02d31f
Binary files /dev/null and b/docs/en-US/images/nvp-add-controller.png differ
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/1201d623/docs/en-US/images/nvp-enable-provider.png
----------------------------------------------------------------------
diff --git a/docs/en-US/images/nvp-enable-provider.png b/docs/en-US/images/nvp-enable-provider.png
new file mode 100644
index 0000000..0f2d02d
Binary files /dev/null and b/docs/en-US/images/nvp-enable-provider.png differ
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/1201d623/docs/en-US/images/nvp-network-offering.png
----------------------------------------------------------------------
diff --git a/docs/en-US/images/nvp-network-offering.png b/docs/en-US/images/nvp-network-offering.png
new file mode 100644
index 0000000..c2d25c4
Binary files /dev/null and b/docs/en-US/images/nvp-network-offering.png differ
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/1201d623/docs/en-US/images/nvp-physical-network-stt.png
----------------------------------------------------------------------
diff --git a/docs/en-US/images/nvp-physical-network-stt.png b/docs/en-US/images/nvp-physical-network-stt.png
new file mode 100644
index 0000000..2ce7853
Binary files /dev/null and b/docs/en-US/images/nvp-physical-network-stt.png differ
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/1201d623/docs/en-US/images/nvp-vpc-offering-edit.png
----------------------------------------------------------------------
diff --git a/docs/en-US/images/nvp-vpc-offering-edit.png b/docs/en-US/images/nvp-vpc-offering-edit.png
new file mode 100644
index 0000000..ff235e2
Binary files /dev/null and b/docs/en-US/images/nvp-vpc-offering-edit.png differ
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/1201d623/docs/en-US/plugin-niciranvp-about.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/plugin-niciranvp-about.xml b/docs/en-US/plugin-niciranvp-about.xml
index 8d2e20e..cfab83c 100644
--- a/docs/en-US/plugin-niciranvp-about.xml
+++ b/docs/en-US/plugin-niciranvp-about.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
<!ENTITY % xinclude SYSTEM "http://www.docbook.org/xml/4.4/xinclude.mod">
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/1201d623/docs/en-US/plugin-niciranvp-devicemanagement.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/plugin-niciranvp-devicemanagement.xml b/docs/en-US/plugin-niciranvp-devicemanagement.xml
index 57b8eee..761c39f 100644
--- a/docs/en-US/plugin-niciranvp-devicemanagement.xml
+++ b/docs/en-US/plugin-niciranvp-devicemanagement.xml
@@ -21,27 +21,15 @@
under the License.
-->
<section id="Device-management">
- <title>Device-management</title>
- <para>In &PRODUCT; 4.0.x each Nicira NVP setup is considered a "device" that can be added and removed from a physical network. To complete the configuration of the Nicira NVP plugin a device needs to be added to the physical network using the "addNiciraNVPDevice" API call. The plugin is now enabled on the physical network and any guest networks created on that network will be provisioned using the Nicira NVP Controller.</para>
- <para>The plugin introduces a set of new API calls to manage the devices, see below or refer to the API reference.</para>
- <itemizedlist>
- <listitem><para>addNiciraNvpDevice</para></listitem>
- <listitem>
- <itemizedlist>
- <listitem><para>physicalnetworkid: the UUID of the physical network on which the device is configured</para></listitem>
- <listitem><para>hostname: the IP address of the NVP controller</para></listitem>
- <listitem><para>username: the username for access to the NVP API</para></listitem>
- <listitem><para>password: the password for access to the NVP API</para></listitem>
- <listitem><para>transportzoneuuid: the UUID of the transportzone</para></listitem>
- </itemizedlist>
- </listitem>
- <listitem><para>deleteNiciraNVPDevice</para></listitem>
- <listitem>
- <itemizedlist>
- <listitem><para>nvpdeviceid: the UUID of the device</para></listitem>
- </itemizedlist>
- </listitem>
- <listitem><para>listNiciraNVPDevices</para></listitem>
- </itemizedlist>
+ <title>Device Management</title>
+ <para>In &PRODUCT; a Nicira NVP setup is considered a "device" that can be added and removed from a physical network. To complete the configuration of the Nicira NVP plugin a device needs to be added to the physical network. Press the "Add NVP Controller" button on the provider panel and enter the configuration details.</para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="./images/nvp-add-controller.png" />
+ </imageobject>
+ <textobject>
+ <phrase>nvp-physical-network-stt.png: a screenshot of the device configuration popup.</phrase>
+ </textobject>
+ </mediaobject>
</section>
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/1201d623/docs/en-US/plugin-niciranvp-features.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/plugin-niciranvp-features.xml b/docs/en-US/plugin-niciranvp-features.xml
index c346bfb..e439f1b 100644
--- a/docs/en-US/plugin-niciranvp-features.xml
+++ b/docs/en-US/plugin-niciranvp-features.xml
@@ -22,12 +22,63 @@
-->
<section id="Features-of-the-Nicira-NVP-Plugin">
<title>Features of the Nicira NVP Plugin</title>
- <para>In &PRODUCT; release 4.0.0-incubating this plugin supports the Connectivity service. This service is responsible for creating Layer 2 networks supporting the networks created by Guests. In other words when an tenant creates a new network, instead of the traditional VLAN a logical network will be created by sending the appropriate calls to the Nicira NVP Controller.</para>
- <para>The plugin has been tested with Nicira NVP versions 2.1.0, 2.2.0 and 2.2.1</para>
- <note><para>In &PRODUCT; 4.0.0-incubating only the XenServer hypervisor is supported for use in
- combination with Nicira NVP.</para>
- <para>In &PRODUCT; 4.1.0-incubating both KVM and XenServer hypervisors are
- supported.</para></note>
- <note><para>In &PRODUCT; 4.0.0-incubating the UI components for this plugin are not complete,
- configuration is done by sending commands to the API.</para></note>
+ <para>The following table lists the CloudStack network services provided by the Nicira NVP Plugin.</para>
+ <table>
+ <title>Supported Services</title>
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry>Network Service</entry>
+ <entry>CloudStack version</entry>
+ <entry>NVP version</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>Virtual Networking</entry>
+ <entry>>= 4.0</entry>
+ <entry>>= 2.2.1</entry>
+ </row>
+ <row>
+ <entry>Source NAT</entry>
+ <entry>>= 4.1</entry>
+ <entry>>= 3.0.1</entry>
+ </row>
+ <row>
+ <entry>Static NAT</entry>
+ <entry>>= 4.1</entry>
+ <entry>>= 3.0.1</entry>
+ </row>
+ <row>
+ <entry>Port Forwarding</entry>
+ <entry>>= 4.1</entry>
+ <entry>>= 3.0.1</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <note><para>The Virtual Networking service was originally called 'Connectivity' in CloudStack 4.0</para></note>
+ <para>The following hypervisors are supported by the Nicira NVP Plugin.</para>
+ <table>
+ <title>Supported Hypervisors</title>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>Hypervisor</entry>
+ <entry>CloudStack version</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>XenServer</entry>
+ <entry>>= 4.0</entry>
+ </row>
+ <row>
+ <entry>KVM</entry>
+ <entry>>= 4.1</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <note><para>Please refer to the Nicira NVP configuration guide on how to prepare the hypervisors for Nicira NVP integration.</para></note>
</section>
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/1201d623/docs/en-US/plugin-niciranvp-guide.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/plugin-niciranvp-guide.xml b/docs/en-US/plugin-niciranvp-guide.xml
deleted file mode 100644
index 89c9871..0000000
--- a/docs/en-US/plugin-niciranvp-guide.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
-%BOOK_ENTITIES;
-<!ENTITY % xinclude SYSTEM "http://www.docbook.org/xml/4.4/xinclude.mod">
-%xinclude;
-]>
-
-<!-- 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.
--->
-<chapter id="niciranvp-plugin-guide">
- <title>Plugin Guide for the Nicira NVP Plugin</title>
- <xi:include href="plugin-niciranvp-about.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="plugin-niciranvp-usage.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="plugin-niciranvp-troubleshooting.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
-</chapter>
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/1201d623/docs/en-US/plugin-niciranvp-introduction.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/plugin-niciranvp-introduction.xml b/docs/en-US/plugin-niciranvp-introduction.xml
index 9c1d42d..a06f123 100644
--- a/docs/en-US/plugin-niciranvp-introduction.xml
+++ b/docs/en-US/plugin-niciranvp-introduction.xml
@@ -22,5 +22,8 @@
-->
<section id="Introduction-to-the-Nicira-NVP-Plugin">
<title>Introduction to the Nicira NVP Plugin</title>
- <para>The Nicira NVP plugin allows CloudStack to use the Nicira solution for virtualized network as a provider for CloudStack networks and services.</para>
+ <para>The Nicira NVP plugin adds Nicira NVP as one of the available SDN implementations in
+ CloudStack. With the plugin an exisiting Nicira NVP setup can be used by CloudStack to
+ implement isolated guest networks and to provide additional services like routing and
+ NAT.</para>
</section>
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/1201d623/docs/en-US/plugin-niciranvp-networkofferings.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/plugin-niciranvp-networkofferings.xml b/docs/en-US/plugin-niciranvp-networkofferings.xml
new file mode 100644
index 0000000..b30437e
--- /dev/null
+++ b/docs/en-US/plugin-niciranvp-networkofferings.xml
@@ -0,0 +1,131 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
+%BOOK_ENTITIES;
+<!ENTITY % xinclude SYSTEM "http://www.docbook.org/xml/4.4/xinclude.mod">
+%xinclude;
+]>
+<!-- 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.
+-->
+<section id="network-offerings">
+ <title>Network Offerings</title>
+ <para>Using the Nicira NVP plugin requires a network offering with Virtual Networking enabled and configured to use the NiciraNvp element. Typical use cases combine services from the Virtual Router appliance and the Nicira NVP plugin.</para>
+ <table>
+ <title>Isolated network offering with regular services from the Virtual Router.</title>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>Service</entry>
+ <entry>Provider</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>VPN</entry>
+ <entry>VirtualRouter</entry>
+ </row>
+ <row>
+ <entry>DHCP</entry>
+ <entry>VirtualRouter</entry>
+ </row>
+ <row>
+ <entry>DNS</entry>
+ <entry>VirtualRouter</entry>
+ </row>
+ <row>
+ <entry>Firewall</entry>
+ <entry>VirtualRouter</entry>
+ </row>
+ <row>
+ <entry>Load Balancer</entry>
+ <entry>VirtualRouter</entry>
+ </row>
+ <row>
+ <entry>User Data</entry>
+ <entry>VirtualRouter</entry>
+ </row>
+ <row>
+ <entry>Source NAT</entry>
+ <entry>VirtualRouter</entry>
+ </row>
+ <row>
+ <entry>Static NAT</entry>
+ <entry>VirtualRouter</entry>
+ </row>
+ <row>
+ <entry>Post Forwarding</entry>
+ <entry>VirtualRouter</entry>
+ </row>
+ <row>
+ <entry>Virtual Networking</entry>
+ <entry>NiciraNVP</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="./images/nvp-network-offering.png" />
+ </imageobject>
+ <textobject>
+ <phrase>nvp-physical-network-stt.png: a screenshot of a network offering.</phrase>
+ </textobject>
+ </mediaobject>
+ <note><para>The tag in the network offering should be set to the name of the physical network with the NVP provider.</para></note>
+ <para>Isolated network with network services. The virtual router is still required to provide network services like dns and dhcp.</para>
+ <table>
+ <title>Isolated network offering with network services</title>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>Service</entry>
+ <entry>Provider</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>DHCP</entry>
+ <entry>VirtualRouter</entry>
+ </row>
+ <row>
+ <entry>DNS</entry>
+ <entry>VirtualRouter</entry>
+ </row>
+ <row>
+ <entry>User Data</entry>
+ <entry>VirtualRouter</entry>
+ </row>
+ <row>
+ <entry>Source NAT</entry>
+ <entry>NiciraNVP</entry>
+ </row>
+ <row>
+ <entry>Static NAT</entry>
+ <entry>NiciraNVP</entry>
+ </row>
+ <row>
+ <entry>Post Forwarding</entry>
+ <entry>NiciraNVP</entry>
+ </row>
+ <row>
+ <entry>Virtual Networking</entry>
+ <entry>NiciraNVP</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+</section>
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/1201d623/docs/en-US/plugin-niciranvp-physicalnet.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/plugin-niciranvp-physicalnet.xml b/docs/en-US/plugin-niciranvp-physicalnet.xml
new file mode 100644
index 0000000..d320290
--- /dev/null
+++ b/docs/en-US/plugin-niciranvp-physicalnet.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
+%BOOK_ENTITIES;
+<!ENTITY % xinclude SYSTEM "http://www.docbook.org/xml/4.4/xinclude.mod">
+%xinclude;
+]>
+<!-- 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.
+-->
+<section id="zone-configuration">
+ <title>Zone Configuration</title>
+ <para>&PRODUCT; needs to have at least one physical network with the isolation method set to "STT". This network should be enabled for the Guest traffic type.</para>
+ <note><para>The Guest traffic type should be configured with the traffic label that matches the name of
+ the Integration Bridge on the hypervisor. See the Nicira NVP User Guide for more details
+ on how to set this up in XenServer or KVM.</para></note>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="./images/nvp-physical-network-stt.png" />
+ </imageobject>
+ <textobject>
+ <phrase>nvp-physical-network-stt.png: a screenshot of a physical network with the STT isolation type</phrase>
+ </textobject>
+ </mediaobject>
+ </section>
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/1201d623/docs/en-US/plugin-niciranvp-preparations.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/plugin-niciranvp-preparations.xml b/docs/en-US/plugin-niciranvp-preparations.xml
index 762c941..6072559 100644
--- a/docs/en-US/plugin-niciranvp-preparations.xml
+++ b/docs/en-US/plugin-niciranvp-preparations.xml
@@ -22,17 +22,16 @@
-->
<section id="Prerequisites">
<title>Prerequisites</title>
- <para>Before enabling the Nicira NVP plugin the NVP Controller needs to be configured. Please review the NVP User Guide on how to do that. </para>
- <para>&PRODUCT; needs to have at least one physical network with the isolation method set to "STT". This network should be enabled for the Guest traffic type.</para>
- <note><para>The Guest traffic type should be configured with the traffic label that matches the name of
- the Integration Bridge on the hypervisor. See the Nicira NVP User Guide for more details
- on how to set this up in XenServer or KVM.</para></note>
+ <para>Before enabling the Nicira NVP plugin the NVP Controller needs to be configured. Please review the NVP User Guide on how to do that.</para>
<para>Make sure you have the following information ready:</para>
<itemizedlist>
<listitem><para>The IP address of the NVP Controller</para></listitem>
<listitem><para>The username to access the API</para></listitem>
<listitem><para>The password to access the API</para></listitem>
<listitem><para>The UUID of the Transport Zone that contains the hypervisors in this Zone</para></listitem>
- <listitem><para>The UUID of the Physical Network that will be used for the Guest networks</para></listitem>
+ <listitem>
+ <para>The UUID of the Gateway Service used to provide router and NAT services.</para>
+ </listitem>
</itemizedlist>
+ <note><para>The gateway service uuid is optional and is used for Layer 3 services only (SourceNat, StaticNat and PortForwarding)</para></note>
</section>
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/1201d623/docs/en-US/plugin-niciranvp-provider.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/plugin-niciranvp-provider.xml b/docs/en-US/plugin-niciranvp-provider.xml
index 80fb227..8694478 100644
--- a/docs/en-US/plugin-niciranvp-provider.xml
+++ b/docs/en-US/plugin-niciranvp-provider.xml
@@ -22,21 +22,15 @@
-->
<section id="Enabling-the-service-provider">
<title>Enabling the service provider</title>
- <para>To allow CloudStack to use the Nicira NVP Plugin the network service provider needs to be enabled on the physical network. The following sequence of API calls will enable the network service provider</para>
- <itemizedlist>
- <listitem><para>addNetworkServiceProvider</para></listitem>
- <listitem>
- <itemizedlist>
- <listitem><para>name = "NiciraNvp"</para></listitem>
- <listitem><para>physicalnetworkid = <the uuid of the physical network></para></listitem>
- </itemizedlist>
- </listitem>
- <listitem><para>updateNetworkServiceProvider</para></listitem>
- <listitem>
- <itemizedlist>
- <listitem><para>id = <the provider uuid returned by the previous call></para></listitem>
- <listitem><para>state = "Enabled"</para></listitem>
- </itemizedlist>
- </listitem>
- </itemizedlist>
+ <para>The Nicira NVP provider is disabled by default. Navigate to the "Network Service Providers" configuration of the physical network with the STT isolation type. Navigate to the Nicira NVP provider and press the "Enable Provider" button.</para>
+ <note><para>CloudStack 4.0 does not have the UI interface to configure the Nicira NVP plugin. Configuration needs to be done using the API directly.</para></note>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="./images/nvp-enable-provider.png" />
+ </imageobject>
+ <textobject>
+ <phrase>nvp-physical-network-stt.png: a screenshot of an enabled Nicira NVP provider</phrase>
+ </textobject>
+ </mediaobject>
+
</section>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/1201d623/docs/en-US/plugin-niciranvp-revisions.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/plugin-niciranvp-revisions.xml b/docs/en-US/plugin-niciranvp-revisions.xml
index b8e6935..b58d333 100644
--- a/docs/en-US/plugin-niciranvp-revisions.xml
+++ b/docs/en-US/plugin-niciranvp-revisions.xml
@@ -40,6 +40,20 @@
</simplelist>
</revdescription>
</revision>
+ <revision>
+ <revnumber>1-0</revnumber>
+ <date>Wed May 22 2013</date>
+ <author>
+ <firstname>Hugo</firstname>
+ <surname>Trippaers</surname>
+ <email>hugo@apache.org</email>
+ </author>
+ <revdescription>
+ <simplelist>
+ <member>Documentation updated for &PRODUCT; 4.1.0</member>
+ </simplelist>
+ </revdescription>
+ </revision>
</revhistory>
</simpara>
</appendix>
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/1201d623/docs/en-US/plugin-niciranvp-tables.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/plugin-niciranvp-tables.xml b/docs/en-US/plugin-niciranvp-tables.xml
index 4f81655..615f349 100644
--- a/docs/en-US/plugin-niciranvp-tables.xml
+++ b/docs/en-US/plugin-niciranvp-tables.xml
@@ -23,29 +23,84 @@
<section id="Database-tables">
<title>Database tables</title>
<para>The following tables are added to the cloud database for the Nicira NVP Plugin</para>
- <itemizedlist>
- <listitem><para>nicira_nvp_nic_map, contains a mapping from nic to logical switch port</para></listitem>
- <listitem>
- <itemizedlist>
- <listitem><para>id</para></listitem>
- <listitem><para>logicalswitch, uuid of the logical switch this port is connected to</para></listitem>
- <listitem><para>logicalswitchport, uuid of the logical switch port for this nic</para></listitem>
- <listitem><para>nic, the CloudStack uuid for this nic, reference to the nics table</para></listitem>
- </itemizedlist>
- </listitem>
- </itemizedlist>
- <itemizedlist>
- <listitem><para>external_nicira_nvp_devices, contains all configured devices</para></listitem>
- <listitem>
- <itemizedlist>
- <listitem><para>id</para></listitem>
- <listitem><para>uuid</para></listitem>
- <listitem><para>physical_network_id, the physical network this device is configured on</para></listitem>
- <listitem><para>provider_name, set to "NiciraNvp"</para></listitem>
- <listitem><para>device_name, display name for this device</para></listitem>
- <listitem><para>host_id, reference to the host table with the device configuration</para></listitem>
- </itemizedlist>
- </listitem>
- </itemizedlist>
-
+ <table>
+ <title>nicira_nvp_nic_map</title>
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry>id</entry>
+ <entry>auto incrementing id</entry>
+ </row>
+ <row>
+ <entry>logicalswitch</entry>
+ <entry>uuid of the logical switch this port is connected to</entry>
+ </row>
+ <row>
+ <entry>logicalswitchport</entry>
+ <entry>uuid of the logical switch port for this nic</entry>
+ </row>
+ <row>
+ <entry>nic</entry>
+ <entry>the &PRODUCT; uuid for this nic, reference to the nics table</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <table>
+ <title>external_nicira_nvp_devices</title>
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry>id</entry>
+ <entry>auto incrementing id</entry>
+ </row>
+ <row>
+ <entry>uuid</entry>
+ <entry>UUID identifying this device</entry>
+ </row>
+ <row>
+ <entry>physical_network_id</entry>
+ <entry>the physical network this device is configured on</entry>
+ </row>
+ <row>
+ <entry>provider_name</entry>
+ <entry>NiciraNVP</entry>
+ </row>
+ <row>
+ <entry>device_name</entry>
+ <entry>display name for this device</entry>
+ </row>
+ <row>
+ <entry>host_id</entry>
+ <entry>reference to the host table with the device configuration</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <table>
+ <title>nicira_nvp_router_map</title>
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry>id</entry>
+ <entry>auto incrementing id</entry>
+ </row>
+ <row>
+ <entry>logicalrouter_uuid</entry>
+ <entry>uuid of the logical router</entry>
+ </row>
+ <row>
+ <entry>network_id</entry>
+ <entry>id of the network this router is linked to</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <note>
+ <para>nicira_nvp_router_map is only available in &PRODUCT; 4.1 and above</para>
+ </note>
+
</section>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/1201d623/docs/en-US/plugin-niciranvp-usage.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/plugin-niciranvp-usage.xml b/docs/en-US/plugin-niciranvp-usage.xml
index 76f9a0b..9f04c38 100644
--- a/docs/en-US/plugin-niciranvp-usage.xml
+++ b/docs/en-US/plugin-niciranvp-usage.xml
@@ -21,10 +21,13 @@
under the License.
-->
<chapter id="Using-the-Nicira-NVP-Plugin" >
- <title>Using the Nicira NVP Plugin</title>
+ <title>Configuring the Nicira NVP Plugin</title>
<xi:include href="plugin-niciranvp-preparations.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
- <xi:include href="plugin-niciranvp-ui.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
- <xi:include href="plugin-niciranvp-provider.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
- <xi:include href="plugin-niciranvp-devicemanagement.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <xi:include href="plugin-niciranvp-physicalnet.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <xi:include href="plugin-niciranvp-provider.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+ <xi:include href="plugin-niciranvp-devicemanagement.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude"/>
+ <xi:include href="plugin-niciranvp-networkofferings.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude"/>
</chapter>
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/1201d623/docs/en-US/plugin-niciranvp-vpc.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/plugin-niciranvp-vpc.xml b/docs/en-US/plugin-niciranvp-vpc.xml
new file mode 100644
index 0000000..a43c5fa
--- /dev/null
+++ b/docs/en-US/plugin-niciranvp-vpc.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
+%BOOK_ENTITIES;
+<!ENTITY % xinclude SYSTEM "http://www.docbook.org/xml/4.4/xinclude.mod">
+%xinclude;
+]>
+<!-- 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.
+-->
+<chapter id="Using-the-Nicira-NVP-Plugin-With_VPC" >
+ <title>Using the Nicira NVP plugin with VPC</title>
+
+ <xi:include href="plugin-niciranvp-vpcfeatures.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <xi:include href="plugin-niciranvp-vpcoffering.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <xi:include href="plugin-niciranvp-vpcnetworkoffering.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+
+</chapter>
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/1201d623/docs/en-US/plugin-niciranvp-vpcfeatures.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/plugin-niciranvp-vpcfeatures.xml b/docs/en-US/plugin-niciranvp-vpcfeatures.xml
new file mode 100644
index 0000000..a8d8194
--- /dev/null
+++ b/docs/en-US/plugin-niciranvp-vpcfeatures.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
+%BOOK_ENTITIES;
+<!ENTITY % xinclude SYSTEM "http://www.docbook.org/xml/4.4/xinclude.mod">
+%xinclude;
+]>
+<!-- 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.
+-->
+<section id="vpc-features">
+ <title>Supported VPC features</title>
+ <para>The Nicira NVP plugin supports &PRODUCT; VPC to a certain extent. Starting with &PRODUCT; version 4.1 VPCs can be deployed using NVP isolated networks.</para>
+ <para>It is not possible to use a Nicira NVP Logical Router for as a VPC Router</para>
+ <para>It is not possible to connect a private gateway using a Nicira NVP Logical Switch</para>
+</section>
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/1201d623/docs/en-US/plugin-niciranvp-vpcnetworkoffering.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/plugin-niciranvp-vpcnetworkoffering.xml b/docs/en-US/plugin-niciranvp-vpcnetworkoffering.xml
new file mode 100644
index 0000000..141006e
--- /dev/null
+++ b/docs/en-US/plugin-niciranvp-vpcnetworkoffering.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
+%BOOK_ENTITIES;
+<!ENTITY % xinclude SYSTEM "http://www.docbook.org/xml/4.4/xinclude.mod">
+%xinclude;
+]>
+<!-- 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.
+-->
+<section id="nvp-vpc-network-offering">
+ <title>VPC Network Offerings</title>
+ <para>The VPC needs specific network offerings with the VPC flag enabled. Otherwise these network offerings are identical to regular network offerings. To allow VPC networks with a Nicira NVP isolated network the offerings need to support the Virtual Networking service with the NiciraNVP provider.</para>
+ <para>In a typical configuration two network offerings need to be created. One with the loadbalancing service enabled and one without loadbalancing.</para>
+ <table>
+ <title>VPC Network Offering with Loadbalancing</title>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>Service</entry>
+ <entry>Provider</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>VPN</entry>
+ <entry>VpcVirtualRouter</entry>
+ </row>
+ <row>
+ <entry>DHCP</entry>
+ <entry>VpcVirtualRouter</entry>
+ </row>
+ <row>
+ <entry>DNS</entry>
+ <entry>VpcVirtualRouter</entry>
+ </row>
+ <row>
+ <entry>Load Balancer</entry>
+ <entry>VpcVirtualRouter</entry>
+ </row>
+ <row>
+ <entry>User Data</entry>
+ <entry>VpcVirtualRouter</entry>
+ </row>
+ <row>
+ <entry>Source NAT</entry>
+ <entry>VpcVirtualRouter</entry>
+ </row>
+ <row>
+ <entry>Static NAT</entry>
+ <entry>VpcVirtualRouter</entry>
+ </row>
+ <row>
+ <entry>Post Forwarding</entry>
+ <entry>VpcVirtualRouter</entry>
+ </row>
+ <row>
+ <entry>NetworkACL</entry>
+ <entry>VpcVirtualRouter</entry>
+ </row>
+ <row>
+ <entry>Virtual Networking</entry>
+ <entry>NiciraNVP</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+</section>
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/1201d623/docs/en-US/plugin-niciranvp-vpcoffering.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/plugin-niciranvp-vpcoffering.xml b/docs/en-US/plugin-niciranvp-vpcoffering.xml
new file mode 100644
index 0000000..292621e
--- /dev/null
+++ b/docs/en-US/plugin-niciranvp-vpcoffering.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
+%BOOK_ENTITIES;
+<!ENTITY % xinclude SYSTEM "http://www.docbook.org/xml/4.4/xinclude.mod">
+%xinclude;
+]>
+<!-- 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.
+-->
+<section id="nvp-vpc-offering">
+ <title>VPC Offering with Nicira NVP</title>
+ <para>To allow a VPC to use the Nicira NVP plugin to provision networks, a new VPC offering needs to be created which allows the Virtual Networking service to be implemented by NiciraNVP.</para>
+ <para>This is not currently possible with the UI. The API does provide the proper calls to create a VPC offering with Virtual Networking enabled. However due to a limitation in the 4.1 API it is not possible to select the provider for this network service. To configure the VPC offering with the NiciraNVP provider edit the database table 'vpc_offering_service_map' and change the provider to NiciraNvp for the service 'Connectivity'</para>
+ <para>It is also possible to update the default VPC offering by adding a row to the
+ 'vpc_offering_service_map' with service 'Connectivity' and provider 'NiciraNvp'</para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="./images/nvp-vpc-offering-edit.png" />
+ </imageobject>
+ <textobject>
+ <phrase>nvp-physical-network-stt.png: a screenshot of the mysql table.</phrase>
+ </textobject>
+ </mediaobject>
+ <note><para>When creating a new VPC offering please note that the UI does not allow you to select a VPC offering yet. The VPC needs to be created using the API with the offering UUID.</para></note>
+</section>
[2/9] git commit: updated refs/heads/rbd-snap-clone to 7619076
Posted by wi...@apache.org.
CLOUDSTACK-2587: netscaler_pod_ref DB upgrade is missing from 3.0.2 to
4.x
added missing schema as part of 4.0 to 4.1 upgrade
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/623a26e4
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/623a26e4
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/623a26e4
Branch: refs/heads/rbd-snap-clone
Commit: 623a26e469ca7354a7dbe6b8954276985e289687
Parents: cc49230
Author: Murali Reddy <mu...@gmail.com>
Authored: Thu May 23 21:59:32 2013 +0530
Committer: Murali Reddy <mu...@gmail.com>
Committed: Thu May 23 22:28:17 2013 +0530
----------------------------------------------------------------------
setup/db/db/schema-40to410.sql | 12 ++++++++++++
1 files changed, 12 insertions(+), 0 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/623a26e4/setup/db/db/schema-40to410.sql
----------------------------------------------------------------------
diff --git a/setup/db/db/schema-40to410.sql b/setup/db/db/schema-40to410.sql
index b7b1c7a..381a4ce 100644
--- a/setup/db/db/schema-40to410.sql
+++ b/setup/db/db/schema-40to410.sql
@@ -1639,3 +1639,15 @@ INSERT IGNORE INTO `cloud`.`configuration` VALUES ('Usage', 'DEFAULT', 'manageme
INSERT IGNORE INTO `cloud`.`guest_os` (id, uuid, category_id, display_name) VALUES (163, UUID(), 10, 'Ubuntu 12.04 (32-bit)');
INSERT IGNORE INTO `cloud`.`guest_os` (id, uuid, category_id, display_name) VALUES (164, UUID(), 10, 'Ubuntu 12.04 (64-bit)');
+
+DROP TABLE IF EXISTS `cloud`.`netscaler_pod_ref`;
+CREATE TABLE `cloud`.`netscaler_pod_ref` (
+ `id` bigint unsigned NOT NULL auto_increment COMMENT 'id',
+ `external_load_balancer_device_id` bigint unsigned NOT NULL COMMENT 'id of external load balancer device',
+ `pod_id` bigint unsigned NOT NULL COMMENT 'pod id',
+ PRIMARY KEY (`id`),
+ CONSTRAINT `fk_ns_pod_ref__pod_id` FOREIGN KEY (`pod_id`) REFERENCES `cloud`.`host_pod_ref`(`id`) ON DELETE CASCADE,
+ CONSTRAINT `fk_ns_pod_ref__device_id` FOREIGN KEY (`external_load_balancer_device_id`) REFERENCES `external_load_balancer_devices`(`id`) ON DELETE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+INSERT IGNORE INTO `cloud`.`configuration` VALUES ('Advanced', 'DEFAULT', 'management-server', 'eip.use.multiple.netscalers' , 'false', 'Should be set to true, if there will be multiple NetScaler devices providing EIP service in a zone');
[9/9] git commit: updated refs/heads/rbd-snap-clone to 7619076
Posted by wi...@apache.org.
Depend on RADOS Java version 0.1.1
This has a Apache License version 2
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/76190760
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/76190760
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/76190760
Branch: refs/heads/rbd-snap-clone
Commit: 76190760c9c4f60f11c3f4458f2fada4e7445722
Parents: 0da9a4a
Author: Wido den Hollander <wi...@widodh.nl>
Authored: Wed May 22 14:08:15 2013 +0200
Committer: Wido den Hollander <wi...@42on.com>
Committed: Thu May 23 23:47:40 2013 +0200
----------------------------------------------------------------------
pom.xml | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/76190760/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 8806ec2..67d9576 100644
--- a/pom.xml
+++ b/pom.xml
@@ -83,7 +83,7 @@
<cs.java-ipv6.version>0.10</cs.java-ipv6.version>
<cs.replace.properties>build/replace.properties</cs.replace.properties>
<cs.libvirt-java.version>0.4.9</cs.libvirt-java.version>
- <cs.rados-java.version>0.1.0</cs.rados-java.version>
+ <cs.rados-java.version>0.1.1</cs.rados-java.version>
<cs.target.dir>target</cs.target.dir>
<cs.daemon.version>1.0.10</cs.daemon.version>
</properties>
[6/9] git commit: updated refs/heads/rbd-snap-clone to 7619076
Posted by wi...@apache.org.
CLOUDSTACK-2504: UI - create network offering dialog - pass specifyIpRanges=false for Isolated Network.
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/026c2cec
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/026c2cec
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/026c2cec
Branch: refs/heads/rbd-snap-clone
Commit: 026c2cec6d3cb42c32929c9ed3ee417b7771b667
Parents: e8fbee0
Author: Jessica Wang <je...@apache.org>
Authored: Thu May 23 14:34:26 2013 -0700
Committer: Jessica Wang <je...@apache.org>
Committed: Thu May 23 14:35:40 2013 -0700
----------------------------------------------------------------------
ui/scripts/configuration.js | 24 ++++++++++--------------
1 files changed, 10 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/026c2cec/ui/scripts/configuration.js
----------------------------------------------------------------------
diff --git a/ui/scripts/configuration.js b/ui/scripts/configuration.js
index 808b342..9932cdc 100644
--- a/ui/scripts/configuration.js
+++ b/ui/scripts/configuration.js
@@ -1919,26 +1919,22 @@
inputData['isPersistent'] = false;
}
else if (inputData['guestIpType'] == "Isolated") { //specifyVlan checkbox is shown
- if (inputData['specifyVlan'] == 'on') { //specifyVlan checkbox is checked
+ inputData['specifyIpRanges'] = false;
+
+ if (inputData['specifyVlan'] == 'on') { //specifyVlan checkbox is checked
inputData['specifyVlan'] = true;
- inputData['specifyIpRanges'] = true;
-
-
-
-
}
else { //specifyVlan checkbox is unchecked
inputData['specifyVlan'] = false;
- inputData['specifyIpRanges'] = false;
+
}
- if(inputData['isPersistent'] == 'on') { //It is a persistent network
- inputData['isPersistent'] = true;
- }
- else { //Isolated Network with Non-persistent network
- inputData['isPersistent'] = false;
- }
-
+ if(inputData['isPersistent'] == 'on') { //It is a persistent network
+ inputData['isPersistent'] = true;
+ }
+ else { //Isolated Network with Non-persistent network
+ inputData['isPersistent'] = false;
+ }
}
[7/9] git commit: updated refs/heads/rbd-snap-clone to 7619076
Posted by wi...@apache.org.
Fix a small typo in a log line
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/b1f4c8e8
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/b1f4c8e8
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/b1f4c8e8
Branch: refs/heads/rbd-snap-clone
Commit: b1f4c8e89af1d79f2d5cba03910e93b40e3c0859
Parents: 026c2ce
Author: Wido den Hollander <wi...@42on.com>
Authored: Thu May 23 23:46:55 2013 +0200
Committer: Wido den Hollander <wi...@42on.com>
Committed: Thu May 23 23:46:55 2013 +0200
----------------------------------------------------------------------
.../com/cloud/vm/VirtualMachineManagerImpl.java | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b1f4c8e8/server/src/com/cloud/vm/VirtualMachineManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java
index f487537..c65514b 100755
--- a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java
+++ b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java
@@ -358,7 +358,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
}
if (s_logger.isDebugEnabled()) {
- s_logger.debug("Allocaing disks for " + vm);
+ s_logger.debug("Allocating disks for " + vm);
}
if (template.getFormat() == ImageFormat.ISO) {