You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by gi...@apache.org on 2014/01/29 09:53:36 UTC

[01/50] git commit: updated refs/heads/marvin to df58f51

Updated Branches:
  refs/heads/marvin dedd41ed8 -> df58f51e3


CLOUDSTACK-5953: In hypervisor_capabilities, max_guests_limit are
not correct for XS 6.2 or other specific version hypervisor.


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/a735de8f
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/a735de8f
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/a735de8f

Branch: refs/heads/marvin
Commit: a735de8f85cc969d4b03b56eb7584955db9096f0
Parents: b25ee92
Author: Sanjay Tripathi <sa...@citrix.com>
Authored: Mon Jan 27 22:50:40 2014 +0530
Committer: Sanjay Tripathi <sa...@citrix.com>
Committed: Mon Jan 27 22:50:40 2014 +0530

----------------------------------------------------------------------
 setup/db/db/schema-430to440.sql | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/a735de8f/setup/db/db/schema-430to440.sql
----------------------------------------------------------------------
diff --git a/setup/db/db/schema-430to440.sql b/setup/db/db/schema-430to440.sql
index 0ce9202..3fa3402 100644
--- a/setup/db/db/schema-430to440.sql
+++ b/setup/db/db/schema-430to440.sql
@@ -24,6 +24,9 @@ SET foreign_key_checks = 0;
 
 ALTER TABLE `cloud`.`disk_offering` ADD `cache_mode` VARCHAR( 16 ) DEFAULT 'none' COMMENT 'The disk cache mode to use for disks created with this offering';
 
+UPDATE `cloud`.`hypervisor_capabilities` set max_guests_limit='150' WHERE hypervisor_version='6.1.0';
+UPDATE `cloud`.`hypervisor_capabilities` set max_guests_limit='500' WHERE hypervisor_version='6.2.0';
+
 DROP VIEW IF EXISTS `cloud`.`disk_offering_view`;
 CREATE VIEW `cloud`.`disk_offering_view` AS
     select
@@ -443,4 +446,4 @@ CREATE VIEW `cloud`.`user_vm_view` AS
            left join
         `cloud`.`user_vm_details` `custom_ram_size`  ON (((`custom_ram_size`.`vm_id` = `cloud`.`vm_instance`.`id`) and (`custom_ram_size`.`name` = 'memory')));
 
-INSERT INTO `cloud`.`configuration`(category, instance, component, name, value, description, default_value) VALUES ('NetworkManager', 'DEFAULT', 'management-server', 'vm.network.nic.max.secondary.ipaddresses', NULL, 'Specify the number of secondary ip addresses per nic per vm', '256') ON DUPLICATE KEY UPDATE category='NetworkManager';
\ No newline at end of file
+INSERT INTO `cloud`.`configuration`(category, instance, component, name, value, description, default_value) VALUES ('NetworkManager', 'DEFAULT', 'management-server', 'vm.network.nic.max.secondary.ipaddresses', NULL, 'Specify the number of secondary ip addresses per nic per vm', '256') ON DUPLICATE KEY UPDATE category='NetworkManager';


[28/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
findbugs: removed fields injected in parent(cherry picked from commit 866a539b067663b346bd8d087c578987a86fe834)

Signed-off-by: Daan Hoogland <dh...@schubergphilis.com>


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/0daca84e
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/0daca84e
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/0daca84e

Branch: refs/heads/marvin
Commit: 0daca84efff98e74a4d800441d52a55067e31518
Parents: a16759a
Author: Daan Hoogland <da...@onecht.net>
Authored: Sun Jan 26 16:49:18 2014 +0100
Committer: Daan Hoogland <dh...@schubergphilis.com>
Committed: Tue Jan 28 15:59:04 2014 +0100

----------------------------------------------------------------------
 .../kvm/discoverer/LibvirtServerDiscoverer.java        | 13 -------------
 1 file changed, 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0daca84e/server/src/com/cloud/hypervisor/kvm/discoverer/LibvirtServerDiscoverer.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/hypervisor/kvm/discoverer/LibvirtServerDiscoverer.java b/server/src/com/cloud/hypervisor/kvm/discoverer/LibvirtServerDiscoverer.java
index da1bb88..770099c 100644
--- a/server/src/com/cloud/hypervisor/kvm/discoverer/LibvirtServerDiscoverer.java
+++ b/server/src/com/cloud/hypervisor/kvm/discoverer/LibvirtServerDiscoverer.java
@@ -28,8 +28,6 @@ import javax.naming.ConfigurationException;
 
 import org.apache.log4j.Logger;
 
-import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
-
 import com.cloud.agent.AgentManager;
 import com.cloud.agent.Listener;
 import com.cloud.agent.api.AgentControlAnswer;
@@ -41,7 +39,6 @@ import com.cloud.agent.api.StartupCommand;
 import com.cloud.agent.api.StartupRoutingCommand;
 import com.cloud.configuration.Config;
 import com.cloud.dc.ClusterVO;
-import com.cloud.dc.dao.ClusterDao;
 import com.cloud.exception.AgentUnavailableException;
 import com.cloud.exception.DiscoveredWithErrorException;
 import com.cloud.exception.DiscoveryException;
@@ -49,10 +46,8 @@ import com.cloud.exception.OperationTimedoutException;
 import com.cloud.host.Host;
 import com.cloud.host.HostVO;
 import com.cloud.host.Status;
-import com.cloud.host.dao.HostDao;
 import com.cloud.hypervisor.Hypervisor;
 import com.cloud.hypervisor.Hypervisor.HypervisorType;
-import com.cloud.network.NetworkModel;
 import com.cloud.network.PhysicalNetworkSetupInfo;
 import com.cloud.resource.Discoverer;
 import com.cloud.resource.DiscovererBase;
@@ -70,17 +65,9 @@ public abstract class LibvirtServerDiscoverer extends DiscovererBase implements
     private String _kvmPublicNic;
     private String _kvmGuestNic;
     @Inject
-    HostDao _hostDao = null;
-    @Inject
-    ClusterDao _clusterDao;
-    @Inject
     ResourceManager _resourceMgr;
     @Inject
     AgentManager _agentMgr;
-    @Inject
-    ConfigurationDao _configDao;
-    @Inject
-    NetworkModel _networkMgr;
 
     @Override
     public abstract Hypervisor.HypervisorType getHypervisorType();


[04/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
Plugin API: Support multiple JS includes per plugin

For any plugin/module, allow including additional JS dependencies via
new plugin syntax.

To include JS files, instead of passing a function directly, pass an
array with the first element being a sub-list of the includes:

cloudStack.plugin.myPlugin = [
    ['file1', 'file2', 'fileN' ...], // These will be loaded before
                                     // plugin is executed
    function(plugin) { // The plugin entry point
        ...
    }
];

-- Where each item represents a JS file relative to the plugin folder
   and without the .js extension. Sub-folders are also supported, i.e.,
   'subfolder/file1'


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/b7d64958
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/b7d64958
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/b7d64958

Branch: refs/heads/marvin
Commit: b7d64958924c7d9445b195b595f7bc00555de2d5
Parents: 0502d2f
Author: Brian Federle <br...@citrix.com>
Authored: Mon Jan 27 12:33:46 2014 -0800
Committer: Brian Federle <br...@citrix.com>
Committed: Mon Jan 27 12:39:36 2014 -0800

----------------------------------------------------------------------
 ui/scripts/plugins.js | 49 ++++++++++++++++++++++++++++++++++------------
 1 file changed, 37 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b7d64958/ui/scripts/plugins.js
----------------------------------------------------------------------
diff --git a/ui/scripts/plugins.js b/ui/scripts/plugins.js
index afeae7c..82d9242 100644
--- a/ui/scripts/plugins.js
+++ b/ui/scripts/plugins.js
@@ -98,15 +98,37 @@
                     }
 
                     // Execute module
-                    cloudStack[type][id](
-                        $.extend(true, {}, cloudStack.pluginAPI, {
-                            pluginAPI: {
-                                extend: function(api) {
-                                    cloudStack.pluginAPI[id] = api;
+                    var target = cloudStack[type][id];
+
+                    if ($.isArray(target)) { // Load additional JS includes
+                        pluginTotal += target[0].length;
+                        require(
+                            $(target[0]).map(function(index, val) {
+                                return basePath + val;
+                            }).toArray(),
+                            function() {
+                                loadedPlugins = loadedPlugins + target[0].length;
+                                target[1](
+                                    $.extend(true, {}, cloudStack.pluginAPI, {
+                                        pluginAPI: {
+                                            extend: function(api) {
+                                                cloudStack.pluginAPI[id] = api;
+                                            }
+                                        }
+                                    })
+                                );
+                            });
+                    } else {
+                        target(
+                            $.extend(true, {}, cloudStack.pluginAPI, {
+                                pluginAPI: {
+                                    extend: function(api) {
+                                        cloudStack.pluginAPI[id] = api;
+                                    }
                                 }
-                            }
-                        })
-                    );
+                            })
+                        );
+                    }
 
                     if (pluginDictionary) {
                         // Callback for extending the dictionary with new entries
@@ -133,13 +155,16 @@
 
                     loadedPlugins = loadedPlugins + 1;
 
-                    if (loadedPlugins === pluginTotal) {
-                        $(window).trigger('cloudStack.pluginReady');
-                    }
-
                     loadCSS(css);
                 });
             }
         );
     });
+
+    var loadTimer = setInterval(function() {
+        if (loadedPlugins === pluginTotal) {
+            clearInterval(loadTimer);
+            $(window).trigger('cloudStack.pluginReady');
+        }
+    }, 100);
 }(jQuery, cloudStack, require));


[02/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
CLOUDSTACK-5956 remove persist flag during live migration


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/daeea46d
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/daeea46d
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/daeea46d

Branch: refs/heads/marvin
Commit: daeea46da0fb7ba49d8c18334d9427fb9b06d524
Parents: a735de8
Author: Marcus Sorensen <ma...@betterservers.com>
Authored: Mon Jan 27 11:04:05 2014 -0700
Committer: Marcus Sorensen <ma...@betterservers.com>
Committed: Mon Jan 27 11:04:05 2014 -0700

----------------------------------------------------------------------
 .../cloud/hypervisor/kvm/resource/LibvirtComputingResource.java | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/daeea46d/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 70975fa..1ea0989 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
@@ -2927,10 +2927,9 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
 
             dconn = new Connect("qemu+tcp://" + cmd.getDestinationIp() + "/system");
             /*
-             * Hard code lm flags: VIR_MIGRATE_LIVE(1<<0) and
-             * VIR_MIGRATE_PERSIST_DEST(1<<3)
+             * Hard code lm flag: VIR_MIGRATE_LIVE(1<<0)
              */
-            destDomain = dm.migrate(dconn, (1 << 0) | (1 << 3), xmlDesc, vmName, "tcp:" + cmd.getDestinationIp(), _migrateSpeed);
+            destDomain = dm.migrate(dconn, (1 << 0), xmlDesc, vmName, "tcp:" + cmd.getDestinationIp(), _migrateSpeed);
 
             _storagePoolMgr.disconnectPhysicalDisksViaVmSpec(cmd.getVirtualMachine());
         } catch (LibvirtException e) {


[03/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
CLOUDSTACK-5697 This patchset fixes a bug with the recently merged
vxlan code. Users can set a physical network to isolation type 'vxlan',
put public traffic on that physical network, and it will still attempt
to use 'vlan' isolation on the KVM hosts. This is going to be an issue
for other isolation types as well, but I'm not familiar with them, so
I'm just fixing vxlan for now.


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/0502d2f3
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/0502d2f3
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/0502d2f3

Branch: refs/heads/marvin
Commit: 0502d2f375ad1325de0d59023bdf7beb6ef7eaaa
Parents: daeea46
Author: Marcus Sorensen <ma...@betterservers.com>
Authored: Mon Jan 27 12:10:42 2014 -0700
Committer: Marcus Sorensen <ma...@betterservers.com>
Committed: Mon Jan 27 12:11:18 2014 -0700

----------------------------------------------------------------------
 api/src/com/cloud/network/NetworkService.java      |  2 +-
 api/src/com/cloud/network/Networks.java            | 17 ++++++++++++++++-
 .../org/apache/cloudstack/api/ApiConstants.java    |  1 +
 .../api/command/admin/usage/AddTrafficTypeCmd.java | 14 +++++++++++++-
 .../contrail/management/ManagementServerMock.java  |  6 +++---
 .../configuration/ConfigurationManagerImpl.java    |  2 +-
 .../src/com/cloud/network/NetworkServiceImpl.java  | 16 +++++++++++++++-
 .../com/cloud/network/guru/PublicNetworkGuru.java  | 14 ++++++++++----
 .../router/VirtualNetworkApplianceManagerImpl.java | 14 +++++++++++---
 .../test/com/cloud/vpc/MockNetworkManagerImpl.java |  4 ++--
 10 files changed, 73 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0502d2f3/api/src/com/cloud/network/NetworkService.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/network/NetworkService.java b/api/src/com/cloud/network/NetworkService.java
index 250121e..1731b11 100755
--- a/api/src/com/cloud/network/NetworkService.java
+++ b/api/src/com/cloud/network/NetworkService.java
@@ -110,7 +110,7 @@ public interface NetworkService {
 
     long findPhysicalNetworkId(long zoneId, String tag, TrafficType trafficType);
 
-    PhysicalNetworkTrafficType addTrafficTypeToPhysicalNetwork(Long physicalNetworkId, String trafficType, String xenLabel, String kvmLabel, String vmwareLabel,
+    PhysicalNetworkTrafficType addTrafficTypeToPhysicalNetwork(Long physicalNetworkId, String trafficType, String isolationMethod, String xenLabel, String kvmLabel, String vmwareLabel,
         String simulatorLabel, String vlan, String hypervLabel);
 
     PhysicalNetworkTrafficType getPhysicalNetworkTrafficType(Long id);

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0502d2f3/api/src/com/cloud/network/Networks.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/network/Networks.java b/api/src/com/cloud/network/Networks.java
index b2c04cd..1e4d229 100755
--- a/api/src/com/cloud/network/Networks.java
+++ b/api/src/com/cloud/network/Networks.java
@@ -94,7 +94,22 @@ public class Networks {
                 return uri.getSchemeSpecificPart();
             }
         },
-        Mido("mido", String.class), Pvlan("pvlan", String.class), Vxlan("vxlan", Long.class), UnDecided(null, null), OpenDaylight("opendaylight", String.class);
+        Mido("mido", String.class), Pvlan("pvlan", String.class),
+        Vxlan("vxlan", Long.class) {
+            @Override
+            public <T> URI toUri(T value) {
+                try {
+                    if (value.toString().contains("://"))
+                        return new URI(value.toString());
+                    else
+                        return new URI("vxlan://" + value.toString());
+                } catch (URISyntaxException e) {
+                    throw new CloudRuntimeException(
+                            "Unable to convert to broadcast URI: " + value);
+                }
+            }
+        },
+        UnDecided(null, null), OpenDaylight("opendaylight", String.class);
 
         private final String scheme;
         private final Class<?> type;

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0502d2f3/api/src/org/apache/cloudstack/api/ApiConstants.java
----------------------------------------------------------------------
diff --git a/api/src/org/apache/cloudstack/api/ApiConstants.java b/api/src/org/apache/cloudstack/api/ApiConstants.java
index 287fff3..d500303 100755
--- a/api/src/org/apache/cloudstack/api/ApiConstants.java
+++ b/api/src/org/apache/cloudstack/api/ApiConstants.java
@@ -344,6 +344,7 @@ public class ApiConstants {
     public static final String CAPACITY_IOPS = "capacityiops";
     public static final String NETWORK_SPEED = "networkspeed";
     public static final String BROADCAST_DOMAIN_RANGE = "broadcastdomainrange";
+    public static final String ISOLATION_METHOD = "isolationmethod";
     public static final String ISOLATION_METHODS = "isolationmethods";
     public static final String PHYSICAL_NETWORK_ID = "physicalnetworkid";
     public static final String DEST_PHYSICAL_NETWORK_ID = "destinationphysicalnetworkid";

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0502d2f3/api/src/org/apache/cloudstack/api/command/admin/usage/AddTrafficTypeCmd.java
----------------------------------------------------------------------
diff --git a/api/src/org/apache/cloudstack/api/command/admin/usage/AddTrafficTypeCmd.java b/api/src/org/apache/cloudstack/api/command/admin/usage/AddTrafficTypeCmd.java
index e6e18cb..0fcb8f8 100644
--- a/api/src/org/apache/cloudstack/api/command/admin/usage/AddTrafficTypeCmd.java
+++ b/api/src/org/apache/cloudstack/api/command/admin/usage/AddTrafficTypeCmd.java
@@ -77,6 +77,10 @@ public class AddTrafficTypeCmd extends BaseAsyncCreateCmd {
     @Parameter(name = ApiConstants.VLAN, type = CommandType.STRING, description = "The VLAN id to be used for Management traffic by VMware host")
     private String vlan;
 
+    @Parameter(name=ApiConstants.ISOLATION_METHOD, type=CommandType.STRING, description="Used if physical network has multiple isolation types and traffic type is public."
+        + " Choose which isolation method. Valid options currently 'vlan' or 'vxlan', defaults to 'vlan'.")
+    private String isolationMethod;
+
     /////////////////////////////////////////////////////
     /////////////////// Accessors ///////////////////////
     /////////////////////////////////////////////////////
@@ -118,6 +122,14 @@ public class AddTrafficTypeCmd extends BaseAsyncCreateCmd {
         return vlan;
     }
 
+    public String getIsolationMethod() {
+        if (isolationMethod != null && !isolationMethod.isEmpty()) {
+            return isolationMethod;
+        } else {
+            return "vlan";
+        }
+    }
+
     /////////////////////////////////////////////////////
     /////////////// API Implementation///////////////////
     /////////////////////////////////////////////////////
@@ -148,7 +160,7 @@ public class AddTrafficTypeCmd extends BaseAsyncCreateCmd {
     @Override
     public void create() throws ResourceAllocationException {
         PhysicalNetworkTrafficType result =
-            _networkService.addTrafficTypeToPhysicalNetwork(getPhysicalNetworkId(), getTrafficType(), getXenLabel(), getKvmLabel(), getVmwareLabel(),
+            _networkService.addTrafficTypeToPhysicalNetwork(getPhysicalNetworkId(), getTrafficType(), getIsolationMethod(), getXenLabel(), getKvmLabel(), getVmwareLabel(),
                 getSimulatorLabel(), getVlan(), getHypervLabel());
         if (result != null) {
             setEntityId(result.getId());

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0502d2f3/plugins/network-elements/juniper-contrail/test/org/apache/cloudstack/network/contrail/management/ManagementServerMock.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/juniper-contrail/test/org/apache/cloudstack/network/contrail/management/ManagementServerMock.java b/plugins/network-elements/juniper-contrail/test/org/apache/cloudstack/network/contrail/management/ManagementServerMock.java
index e16eedb..50419ea 100644
--- a/plugins/network-elements/juniper-contrail/test/org/apache/cloudstack/network/contrail/management/ManagementServerMock.java
+++ b/plugins/network-elements/juniper-contrail/test/org/apache/cloudstack/network/contrail/management/ManagementServerMock.java
@@ -327,7 +327,7 @@ public class ManagementServerMock {
             _znet = _networkService.getPhysicalNetwork(id);
             List<PhysicalNetworkVO> nets = _physicalNetworkDao.listByZoneAndTrafficType(_zone.getId(), TrafficType.Public);
             if (nets == null || nets.isEmpty()) {
-                _networkService.addTrafficTypeToPhysicalNetwork(_znet.getId(), TrafficType.Public.toString(), null, null, null, null, null, null);
+                _networkService.addTrafficTypeToPhysicalNetwork(_znet.getId(), TrafficType.Public.toString(), "vlan", null, null, null, null, null, null);
             }
         } catch (InvalidParameterValueException e) {
             List<String> isolationMethods = new ArrayList<String>();
@@ -337,7 +337,7 @@ public class ManagementServerMock {
                     "znet");
             List<PhysicalNetworkVO> nets = _physicalNetworkDao.listByZoneAndTrafficType(_zone.getId(), TrafficType.Public);
             if (nets == null || nets.isEmpty()) {
-                _networkService.addTrafficTypeToPhysicalNetwork(_znet.getId(), TrafficType.Public.toString(), null, null, null, null, null, null);
+                _networkService.addTrafficTypeToPhysicalNetwork(_znet.getId(), TrafficType.Public.toString(), "vlan", null, null, null, null, null, null);
             }
         }
         if (_znet.getState() != PhysicalNetwork.State.Enabled) {
@@ -353,7 +353,7 @@ public class ManagementServerMock {
             }
         }
         if (!found) {
-            _networkService.addTrafficTypeToPhysicalNetwork(_znet.getId(), TrafficType.Guest.toString(), null, null, null, null, null, null);
+            _networkService.addTrafficTypeToPhysicalNetwork(_znet.getId(), TrafficType.Guest.toString(), "vlan", null, null, null, null, null, null);
         }
 
         Pair<List<? extends PhysicalNetworkServiceProvider>, Integer> providers =

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0502d2f3/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
index 9d148fa..f0c7f35 100755
--- a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
+++ b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
@@ -1689,7 +1689,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
                                 _networkModel.getDefaultPhysicalNetworkByZoneAndTrafficType(zoneId, TrafficType.Storage);
                             } catch (InvalidParameterValueException noStorage) {
                                 PhysicalNetworkTrafficTypeVO mgmtTraffic = _trafficTypeDao.findBy(mgmtPhyNetwork.getId(), TrafficType.Management);
-                                _networkSvc.addTrafficTypeToPhysicalNetwork(mgmtPhyNetwork.getId(), TrafficType.Storage.toString(), mgmtTraffic.getXenNetworkLabel(),
+                                _networkSvc.addTrafficTypeToPhysicalNetwork(mgmtPhyNetwork.getId(), TrafficType.Storage.toString(), "vlan", mgmtTraffic.getXenNetworkLabel(),
                                         mgmtTraffic.getKvmNetworkLabel(), mgmtTraffic.getVmwareNetworkLabel(), mgmtTraffic.getSimulatorNetworkLabel(), mgmtTraffic.getVlan(),
                                         mgmtTraffic.getHypervNetworkLabel());
                                 s_logger.info("No storage traffic type was specified by admin, create default storage traffic on physical network " + mgmtPhyNetwork.getId()

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0502d2f3/server/src/com/cloud/network/NetworkServiceImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/NetworkServiceImpl.java b/server/src/com/cloud/network/NetworkServiceImpl.java
index 399f086..d02f176 100755
--- a/server/src/com/cloud/network/NetworkServiceImpl.java
+++ b/server/src/com/cloud/network/NetworkServiceImpl.java
@@ -3534,7 +3534,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService {
     @Override
     @DB
     @ActionEvent(eventType = EventTypes.EVENT_TRAFFIC_TYPE_CREATE, eventDescription = "Creating Physical Network TrafficType", create = true)
-    public PhysicalNetworkTrafficType addTrafficTypeToPhysicalNetwork(Long physicalNetworkId, String trafficTypeStr, String xenLabel, String kvmLabel, String vmwareLabel,
+    public PhysicalNetworkTrafficType addTrafficTypeToPhysicalNetwork(Long physicalNetworkId, String trafficTypeStr, String isolationMethod, String xenLabel, String kvmLabel, String vmwareLabel,
             String simulatorLabel, String vlan, String hypervLabel) {
 
         // verify input parameters
@@ -3590,6 +3590,20 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService {
                     vlan, hypervLabel);
             pNetworktrafficType = _pNTrafficTypeDao.persist(pNetworktrafficType);
 
+            // For public traffic, get isolation method of physical network and update the public network accordingly
+            // each broadcast type will individually need to be qualified for support of public traffic
+            List<String> isolationMethods = network.getIsolationMethods();
+            if ((isolationMethods.size() == 1 && isolationMethods.get(0).toLowerCase().equals("vxlan"))
+                || (isolationMethod != null && isolationMethods.contains(isolationMethod) && isolationMethod.toLowerCase().equals("vxlan"))) {
+                // find row in networks table that is defined as 'Public', created when zone was deployed
+                NetworkVO publicNetwork = _networksDao.listByZoneAndTrafficType(network.getDataCenterId(),TrafficType.Public).get(0);
+                if (publicNetwork != null) {
+                    s_logger.debug("setting public network " + publicNetwork + " to broadcast type vxlan");
+                    publicNetwork.setBroadcastDomainType(BroadcastDomainType.Vxlan);
+                    _networksDao.persist(publicNetwork);
+                }
+            }
+
             return pNetworktrafficType;
         } catch (Exception ex) {
             s_logger.warn("Exception: ", ex);

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0502d2f3/server/src/com/cloud/network/guru/PublicNetworkGuru.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/guru/PublicNetworkGuru.java b/server/src/com/cloud/network/guru/PublicNetworkGuru.java
index 34e97d3..95d7790 100755
--- a/server/src/com/cloud/network/guru/PublicNetworkGuru.java
+++ b/server/src/com/cloud/network/guru/PublicNetworkGuru.java
@@ -103,7 +103,7 @@ public class PublicNetworkGuru extends AdapterBase implements NetworkGuru {
 
         if (offering.getTrafficType() == TrafficType.Public) {
             NetworkVO ntwk =
-                new NetworkVO(offering.getTrafficType(), Mode.Static, BroadcastDomainType.Vlan, offering.getId(), State.Setup, plan.getDataCenterId(),
+                new NetworkVO(offering.getTrafficType(), Mode.Static, network.getBroadcastDomainType(), offering.getId(), State.Setup, plan.getDataCenterId(),
                     plan.getPhysicalNetworkId());
             return ntwk;
         } else {
@@ -122,9 +122,15 @@ public class PublicNetworkGuru extends AdapterBase implements NetworkGuru {
             nic.setIp4Address(ip.getAddress().toString());
             nic.setGateway(ip.getGateway());
             nic.setNetmask(ip.getNetmask());
-            nic.setIsolationUri(IsolationType.Vlan.toUri(ip.getVlanTag()));
-            nic.setBroadcastUri(BroadcastDomainType.Vlan.toUri(ip.getVlanTag()));
-            nic.setBroadcastType(BroadcastDomainType.Vlan);
+            if (network.getBroadcastDomainType() == BroadcastDomainType.Vxlan) {
+                nic.setIsolationUri(BroadcastDomainType.Vxlan.toUri(ip.getVlanTag()));
+                nic.setBroadcastUri(BroadcastDomainType.Vxlan.toUri(ip.getVlanTag()));
+                nic.setBroadcastType(BroadcastDomainType.Vxlan);
+            } else {
+                nic.setIsolationUri(IsolationType.Vlan.toUri(ip.getVlanTag()));
+                nic.setBroadcastUri(BroadcastDomainType.Vlan.toUri(ip.getVlanTag()));
+                nic.setBroadcastType(BroadcastDomainType.Vlan);
+            }
             nic.setFormat(AddressFormat.Ip4);
             nic.setReservationId(String.valueOf(ip.getVlanTag()));
             nic.setMacAddress(ip.getMacAddress());

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0502d2f3/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
index d7c7310..13291d0 100755
--- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
+++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
@@ -1834,9 +1834,17 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V
             defaultNic.setGateway(sourceNatIp.getGateway());
             defaultNic.setNetmask(sourceNatIp.getNetmask());
             defaultNic.setMacAddress(sourceNatIp.getMacAddress());
-            defaultNic.setBroadcastType(BroadcastDomainType.Vlan);
-            defaultNic.setBroadcastUri(BroadcastDomainType.Vlan.toUri(sourceNatIp.getVlanTag()));
-            defaultNic.setIsolationUri(IsolationType.Vlan.toUri(sourceNatIp.getVlanTag()));
+            // get broadcast from public network
+            Network pubNet = _networkDao.findById(sourceNatIp.getNetworkId());
+            if (pubNet.getBroadcastDomainType() == BroadcastDomainType.Vxlan) {
+                defaultNic.setBroadcastType(BroadcastDomainType.Vxlan);
+                defaultNic.setBroadcastUri(BroadcastDomainType.Vxlan.toUri(sourceNatIp.getVlanTag()));
+                defaultNic.setIsolationUri(BroadcastDomainType.Vxlan.toUri(sourceNatIp.getVlanTag()));
+            } else {
+                defaultNic.setBroadcastType(BroadcastDomainType.Vlan);
+                defaultNic.setBroadcastUri(BroadcastDomainType.Vlan.toUri(sourceNatIp.getVlanTag()));
+                defaultNic.setIsolationUri(IsolationType.Vlan.toUri(sourceNatIp.getVlanTag()));
+            }
             if (hasGuestNetwork) {
                 defaultNic.setDeviceId(2);
             }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0502d2f3/server/test/com/cloud/vpc/MockNetworkManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/test/com/cloud/vpc/MockNetworkManagerImpl.java b/server/test/com/cloud/vpc/MockNetworkManagerImpl.java
index 846e2f5..2267883 100644
--- a/server/test/com/cloud/vpc/MockNetworkManagerImpl.java
+++ b/server/test/com/cloud/vpc/MockNetworkManagerImpl.java
@@ -404,10 +404,10 @@ public class MockNetworkManagerImpl extends ManagerBase implements NetworkOrches
     }
 
     /* (non-Javadoc)
-     * @see com.cloud.network.NetworkService#addTrafficTypeToPhysicalNetwork(java.lang.Long, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String)
+     * @see com.cloud.network.NetworkService#addTrafficTypeToPhysicalNetwork(java.lang.Long, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String)
      */
     @Override
-    public PhysicalNetworkTrafficType addTrafficTypeToPhysicalNetwork(Long physicalNetworkId, String trafficType, String xenLabel, String kvmLabel, String vmwareLabel,
+    public PhysicalNetworkTrafficType addTrafficTypeToPhysicalNetwork(Long physicalNetworkId, String trafficType, String isolationMethod, String xenLabel, String kvmLabel, String vmwareLabel,
         String simulatorLabel, String vlan, String hypervLabel) {
         // TODO Auto-generated method stub
         return null;


[32/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
findbugs: throw exceptions when found(cherry picked from commit
9772693dca9a91a438078de11b1be1e6044aa6f3)

Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/be21822c
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/be21822c
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/be21822c

Branch: refs/heads/marvin
Commit: be21822cbaca8bf0597781018cfe844252e6ed73
Parents: 5d8e8fd
Author: Daan Hoogland <da...@onecht.net>
Authored: Tue Jan 28 17:39:02 2014 +0100
Committer: Daan Hoogland <dh...@schubergphilis.com>
Committed: Tue Jan 28 17:39:02 2014 +0100

----------------------------------------------------------------------
 server/src/com/cloud/projects/ProjectManagerImpl.java | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/be21822c/server/src/com/cloud/projects/ProjectManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/projects/ProjectManagerImpl.java b/server/src/com/cloud/projects/ProjectManagerImpl.java
index 5e7d9a9..5a0ed1c 100755
--- a/server/src/com/cloud/projects/ProjectManagerImpl.java
+++ b/server/src/com/cloud/projects/ProjectManagerImpl.java
@@ -624,6 +624,7 @@ public class ProjectManagerImpl extends ManagerBase implements ProjectManager {
                 domainUuid = domain.getUuid();
             }
             ex.addProxyObject(domainUuid, "domainId");
+            throw ex;
         }
 
         //verify permissions


[08/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
Enable static NAT dialog: Fix search filter not working


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/c4b3e4c0
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/c4b3e4c0
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/c4b3e4c0

Branch: refs/heads/marvin
Commit: c4b3e4c0cc8cf87de0e166fa7ae424ae9be76c63
Parents: 9f18b07
Author: Brian Federle <br...@citrix.com>
Authored: Mon Jan 27 13:38:02 2014 -0800
Committer: Brian Federle <br...@citrix.com>
Committed: Mon Jan 27 13:38:02 2014 -0800

----------------------------------------------------------------------
 ui/scripts/network.js | 5 +++++
 1 file changed, 5 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c4b3e4c0/ui/scripts/network.js
----------------------------------------------------------------------
diff --git a/ui/scripts/network.js b/ui/scripts/network.js
index 4e1ce05..291def0 100755
--- a/ui/scripts/network.js
+++ b/ui/scripts/network.js
@@ -2382,6 +2382,7 @@
 
                                         listView: $.extend(true, {}, cloudStack.sections.instances, {
                                             listView: {
+                                                advSearchFields: null, // Not supported in dialogs right now due to display issues
                                                 filters: false,
                                                 subselect: {
                                                     label: 'label.use.vm.ip',
@@ -2394,6 +2395,10 @@
                                                         listAll: true
                                                     };
 
+                                                    if (args.filterBy.search.value) {
+                                                        data.name = args.filterBy.search.value;
+                                                    }
+
                                                     var $tierSelect = $(".ui-dialog-content").find('.tier-select select');
 
                                                     // if $tierSelect is not initialized, return; tierSelect() will refresh listView and come back here later


[10/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
CLOUDSTACK-5941 User Vm deployment on HyperV is failing due to change in the userdata script location and moved to json model


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/39447cce
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/39447cce
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/39447cce

Branch: refs/heads/marvin
Commit: 39447cce6ec973e84abc04e3af96f2a027a4632a
Parents: 7ac4893
Author: Rajesh Battala <ra...@citrix.com>
Authored: Tue Jan 28 07:02:11 2014 +0530
Committer: Rajesh Battala <ra...@citrix.com>
Committed: Tue Jan 28 07:03:08 2014 +0530

----------------------------------------------------------------------
 .../resource/HypervDirectConnectResource.java   | 62 ++++----------------
 1 file changed, 12 insertions(+), 50 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/39447cce/plugins/hypervisors/hyperv/src/com/cloud/hypervisor/hyperv/resource/HypervDirectConnectResource.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/hyperv/src/com/cloud/hypervisor/hyperv/resource/HypervDirectConnectResource.java b/plugins/hypervisors/hyperv/src/com/cloud/hypervisor/hyperv/resource/HypervDirectConnectResource.java
index e9647ad..2f64590 100644
--- a/plugins/hypervisors/hyperv/src/com/cloud/hypervisor/hyperv/resource/HypervDirectConnectResource.java
+++ b/plugins/hypervisors/hyperv/src/com/cloud/hypervisor/hyperv/resource/HypervDirectConnectResource.java
@@ -36,13 +36,13 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.UUID;
 
 import javax.annotation.PostConstruct;
 import javax.ejb.Local;
 import javax.inject.Inject;
 import javax.naming.ConfigurationException;
 
+import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.lang.StringEscapeUtils;
 import org.apache.http.HttpResponse;
 import org.apache.http.HttpStatus;
@@ -1120,73 +1120,35 @@ public class HypervDirectConnectResource extends ServerResourceBase implements S
         if (s_logger.isInfoEnabled()) {
             s_logger.info("Executing resource VmDataCommand: " + s_gson.toJson(cmd));
         }
-        String routerPrivateIpAddress = cmd.getAccessDetail(NetworkElementCommand.ROUTER_IP);
         String controlIp = getRouterSshControlIp(cmd);
+        Map<String, List<String[]>> data = new HashMap<String, List<String[]>>();
+        data.put(cmd.getVmIpAddress(), cmd.getVmData());
 
-        String vmIpAddress = cmd.getVmIpAddress();
-        List<String[]> vmData = cmd.getVmData();
-        String[] vmDataArgs = new String[vmData.size() * 2 + 4];
-        vmDataArgs[0] = "routerIP";
-        vmDataArgs[1] = routerPrivateIpAddress;
-        vmDataArgs[2] = "vmIP";
-        vmDataArgs[3] = vmIpAddress;
-        int i = 4;
-        for (String[] vmDataEntry : vmData) {
-            String folder = vmDataEntry[0];
-            String file = vmDataEntry[1];
-            String contents = (vmDataEntry[2] != null) ? vmDataEntry[2] : "none";
+        String json = new Gson().toJson(data);
+        s_logger.debug("VM data JSON IS:" + json);
 
-            vmDataArgs[i] = folder + "," + file;
-            vmDataArgs[i + 1] = contents;
-            i += 2;
-        }
+        json = Base64.encodeBase64String(json.getBytes());
 
-        String content = encodeDataArgs(vmDataArgs);
-        String tmpFileName = UUID.randomUUID().toString();
-
-        if (s_logger.isDebugEnabled()) {
-            s_logger.debug("Run vm_data command on domain router " + cmd.getAccessDetail(NetworkElementCommand.ROUTER_IP) + ", data: " + content);
-        }
+        String args = "-d " + json;
 
         try {
-            SshHelper.scpTo(controlIp, DEFAULT_DOMR_SSHPORT, "root", getSystemVMKeyFile(), null, "/tmp", content.getBytes(), tmpFileName, null);
-
-            try {
-                Pair<Boolean, String> result =
-                    SshHelper.sshExecute(controlIp, DEFAULT_DOMR_SSHPORT, "root", getSystemVMKeyFile(), null, "/root/userdata.py " + tmpFileName);
-
-                if (!result.first()) {
-                    s_logger.error("vm_data command on domain router " + controlIp + " failed. messge: " + result.second());
-                    return new Answer(cmd, false, "VmDataCommand failed due to " + result.second());
-                }
-            } finally {
-
-                SshHelper.sshExecute(controlIp, DEFAULT_DOMR_SSHPORT, "root", getSystemVMKeyFile(), null, "rm /tmp/" + tmpFileName);
+            Pair<Boolean, String> result = SshHelper.sshExecute(controlIp, DEFAULT_DOMR_SSHPORT, "root", getSystemVMKeyFile(), null, "/opt/cloud/bin/vmdata.py " + args);
+            if (!result.first()) {
+                s_logger.error("vm_data command on domain router " + controlIp + " failed. messge: " + result.second());
+                return new Answer(cmd, false, "VmDataCommand failed due to " + result.second());
             }
 
             if (s_logger.isInfoEnabled()) {
                 s_logger.info("vm_data command on domain router " + controlIp + " completed");
             }
-
         } catch (Throwable e) {
-            String msg = "VmDataCommand failed due to " + e;
+            String msg = "VmDataCommand failed due to " + e.getMessage();
             s_logger.error(msg, e);
             return new Answer(cmd, false, msg);
         }
         return new Answer(cmd);
     }
 
-    private String encodeDataArgs(String[] dataArgs) {
-        StringBuilder sb = new StringBuilder();
-
-        for (String arg : dataArgs) {
-            sb.append(arg);
-            sb.append("\n");
-        }
-
-        return sb.toString();
-    }
-
     protected Answer execute(DhcpEntryCommand cmd) {
         if (s_logger.isInfoEnabled()) {
             s_logger.info("Executing resource DhcpEntryCommand: " + s_gson.toJson(cmd));


[29/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
Findbugs: different issues solved(cherry picked from commit
0b13f8e59db1e681e1dff0baa828bb0711842e9f)

Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/fae05560
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/fae05560
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/fae05560

Branch: refs/heads/marvin
Commit: fae05560218ef3bcb962bd424ae5dbf5cb8ede68
Parents: 0daca84
Author: Daan Hoogland <da...@onecht.net>
Authored: Tue Jan 28 16:30:04 2014 +0100
Committer: Daan Hoogland <dh...@schubergphilis.com>
Committed: Tue Jan 28 16:30:04 2014 +0100

----------------------------------------------------------------------
 .../com/cloud/api/query/vo/UserVmJoinVO.java    | 23 ++++----
 .../com/cloud/consoleproxy/AgentHookBase.java   |  5 +-
 .../src/com/cloud/dc/DedicatedResourceVO.java   | 15 +++--
 .../com/cloud/network/IpAddressManagerImpl.java | 60 +++++++++++---------
 .../src/com/cloud/network/NetworkModelImpl.java |  7 ++-
 .../cloud/network/guru/ControlNetworkGuru.java  |  4 +-
 .../com/cloud/network/vpc/VpcManagerImpl.java   |  4 +-
 .../com/cloud/template/TemplateManagerImpl.java |  4 +-
 8 files changed, 70 insertions(+), 52 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/fae05560/server/src/com/cloud/api/query/vo/UserVmJoinVO.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/query/vo/UserVmJoinVO.java b/server/src/com/cloud/api/query/vo/UserVmJoinVO.java
index 2df49ec..9e4fc21 100644
--- a/server/src/com/cloud/api/query/vo/UserVmJoinVO.java
+++ b/server/src/com/cloud/api/query/vo/UserVmJoinVO.java
@@ -35,6 +35,7 @@ import com.cloud.server.ResourceTag.ResourceObjectType;
 import com.cloud.storage.Storage.StoragePoolType;
 import com.cloud.storage.Volume;
 import com.cloud.utils.db.GenericDao;
+import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.vm.VirtualMachine;
 import com.cloud.vm.VirtualMachine.State;
 
@@ -47,10 +48,10 @@ public class UserVmJoinVO extends BaseViewVO implements ControlledViewEntity {
     private long id;
 
     @Column(name = "name", updatable = false, nullable = false, length = 255)
-    private String name = null;
+    private final String name = null;
 
     @Column(name = "display_name", updatable = false, nullable = false, length = 255)
-    private String displayName = null;
+    private final String displayName = null;
 
     @Column(name = "account_id")
     private long accountId;
@@ -59,7 +60,7 @@ public class UserVmJoinVO extends BaseViewVO implements ControlledViewEntity {
     private String accountUuid;
 
     @Column(name = "account_name")
-    private String accountName = null;
+    private final String accountName = null;
 
     @Column(name = "account_type")
     private short accountType;
@@ -71,10 +72,10 @@ public class UserVmJoinVO extends BaseViewVO implements ControlledViewEntity {
     private String domainUuid;
 
     @Column(name = "domain_name")
-    private String domainName = null;
+    private final String domainName = null;
 
     @Column(name = "domain_path")
-    private String domainPath = null;
+    private final String domainPath = null;
 
     @Column(name = "instance_group_id")
     private long instanceGroupId;
@@ -96,7 +97,7 @@ public class UserVmJoinVO extends BaseViewVO implements ControlledViewEntity {
      */
     @Enumerated(value = EnumType.STRING)
     @Column(name = "state", updatable = true, nullable = false, length = 32)
-    private State state = null;
+    private final State state = null;
 
     @Column(name = GenericDao.CREATED_COLUMN)
     private Date created;
@@ -148,7 +149,7 @@ public class UserVmJoinVO extends BaseViewVO implements ControlledViewEntity {
     private String dataCenterUuid;
 
     @Column(name = "data_center_name")
-    private String dataCenterName = null;
+    private final String dataCenterName = null;
 
     @Column(name = "security_group_enabled")
     private boolean securityGroupEnabled;
@@ -233,7 +234,7 @@ public class UserVmJoinVO extends BaseViewVO implements ControlledViewEntity {
     private String volumeUuid;
 
     @Column(name = "volume_device_id")
-    private Long volumeDeviceId = null;
+    private final Long volumeDeviceId = null;
 
     @Column(name = "volume_type")
     @Enumerated(EnumType.STRING)
@@ -745,9 +746,11 @@ public class UserVmJoinVO extends BaseViewVO implements ControlledViewEntity {
     }
 
     public String getDetail(String name) {
-        assert (details != null) : "Did you forget to load the details?";
+        if (details == null) {
+            throw new CloudRuntimeException("No details to get. Did you forget to load the details?");
+        }
 
-        return details != null ? details.get(name) : null;
+        return details.get(name);
     }
 
     public String getUserData() {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/fae05560/server/src/com/cloud/consoleproxy/AgentHookBase.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/consoleproxy/AgentHookBase.java b/server/src/com/cloud/consoleproxy/AgentHookBase.java
index 9dfffd4..2e0bada 100644
--- a/server/src/com/cloud/consoleproxy/AgentHookBase.java
+++ b/server/src/com/cloud/consoleproxy/AgentHookBase.java
@@ -49,6 +49,7 @@ import com.cloud.host.dao.HostDao;
 import com.cloud.servlet.ConsoleProxyPasswordBasedEncryptor;
 import com.cloud.servlet.ConsoleProxyServlet;
 import com.cloud.utils.Ternary;
+import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.vm.VirtualMachine;
 import com.cloud.vm.dao.VMInstanceDao;
 
@@ -192,7 +193,9 @@ public abstract class AgentHookBase implements AgentHook {
 
         assert (ksBits != null);
         if (ksBits == null) {
-            s_logger.error("Could not find and construct a valid SSL certificate");
+            String msg = "Could not find and construct a valid SSL certificate";
+            s_logger.error(msg);
+            throw new CloudRuntimeException(msg);
         }
         cmd = new StartConsoleProxyAgentHttpHandlerCommand(ksBits, storePassword);
         cmd.setEncryptorPassword(getEncryptorPassword());

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/fae05560/server/src/com/cloud/dc/DedicatedResourceVO.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/dc/DedicatedResourceVO.java b/server/src/com/cloud/dc/DedicatedResourceVO.java
index 9948f50..41bdfec 100644
--- a/server/src/com/cloud/dc/DedicatedResourceVO.java
+++ b/server/src/com/cloud/dc/DedicatedResourceVO.java
@@ -29,6 +29,11 @@ import javax.persistence.Table;
 @Table(name = "dedicated_resources")
 public class DedicatedResourceVO implements DedicatedResources {
 
+    /**
+     * 
+     */
+    private static final long serialVersionUID = -6659510127145101917L;
+
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
     @Column(name = "id")
@@ -59,7 +64,7 @@ public class DedicatedResourceVO implements DedicatedResources {
     private long affinityGroupId;
 
     public DedicatedResourceVO() {
-        this.uuid = UUID.randomUUID().toString();
+        uuid = UUID.randomUUID().toString();
     }
 
     public DedicatedResourceVO(Long dataCenterId, Long podId, Long clusterId, Long hostId, Long domainId, Long accountId, long affinityGroupId) {
@@ -69,7 +74,7 @@ public class DedicatedResourceVO implements DedicatedResources {
         this.hostId = hostId;
         this.domainId = domainId;
         this.accountId = accountId;
-        this.uuid = UUID.randomUUID().toString();
+        uuid = UUID.randomUUID().toString();
         this.affinityGroupId = affinityGroupId;
     }
 
@@ -115,7 +120,7 @@ public class DedicatedResourceVO implements DedicatedResources {
     }
 
     public DedicatedResourceVO(long dedicatedResourceId) {
-        this.id = dedicatedResourceId;
+        id = dedicatedResourceId;
     }
 
     @Override
@@ -138,7 +143,7 @@ public class DedicatedResourceVO implements DedicatedResources {
 
     @Override
     public String getUuid() {
-        return this.uuid;
+        return uuid;
     }
 
     public void setUuid(String uuid) {
@@ -153,7 +158,7 @@ public class DedicatedResourceVO implements DedicatedResources {
     @Override
     public boolean equals(Object obj) {
         if (obj instanceof DedicatedResourceVO) {
-            return ((DedicatedResourceVO)obj).getId() == this.getId();
+            return ((DedicatedResourceVO)obj).getId() == getId();
         } else {
             return false;
         }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/fae05560/server/src/com/cloud/network/IpAddressManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/IpAddressManagerImpl.java b/server/src/com/cloud/network/IpAddressManagerImpl.java
index 6596074..09f73a4 100644
--- a/server/src/com/cloud/network/IpAddressManagerImpl.java
+++ b/server/src/com/cloud/network/IpAddressManagerImpl.java
@@ -17,6 +17,7 @@
 package com.cloud.network;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -28,6 +29,8 @@ import java.util.UUID;
 
 import javax.inject.Inject;
 
+import org.apache.log4j.Logger;
+
 import org.apache.cloudstack.acl.ControlledEntity.ACLType;
 import org.apache.cloudstack.acl.SecurityChecker.AccessType;
 import org.apache.cloudstack.context.CallContext;
@@ -39,7 +42,6 @@ import org.apache.cloudstack.region.PortableIp;
 import org.apache.cloudstack.region.PortableIpDao;
 import org.apache.cloudstack.region.PortableIpVO;
 import org.apache.cloudstack.region.Region;
-import org.apache.log4j.Logger;
 
 import com.cloud.agent.AgentManager;
 import com.cloud.alert.AlertManager;
@@ -570,8 +572,9 @@ public class IpAddressManagerImpl extends ManagerBase implements IpAddressManage
 
         IPAddressVO ip = markIpAsUnavailable(addrId);
 
-        assert (ip != null) : "Unable to mark the ip address id=" + addrId + " as unavailable.";
         if (ip == null) {
+            String msg = "Unable to mark the ip address id=" + addrId + " as unavailable.";
+            s_logger.error(msg);
             return true;
         }
 
@@ -684,10 +687,10 @@ public class IpAddressManagerImpl extends ManagerBase implements IpAddressManage
                 if (dedicatedVlanDbIds != null && !dedicatedVlanDbIds.isEmpty()) {
                     fetchFromDedicatedRange = true;
                     sc.setParameters("vlanId", dedicatedVlanDbIds.toArray());
-                    errorMessage.append(", vlanId id=" + dedicatedVlanDbIds.toArray());
+                    errorMessage.append(", vlanId id=" + Arrays.toString(dedicatedVlanDbIds.toArray()));
                 } else if (nonDedicatedVlanDbIds != null && !nonDedicatedVlanDbIds.isEmpty()) {
                     sc.setParameters("vlanId", nonDedicatedVlanDbIds.toArray());
-                    errorMessage.append(", vlanId id=" + nonDedicatedVlanDbIds.toArray());
+                    errorMessage.append(", vlanId id=" + Arrays.toString(nonDedicatedVlanDbIds.toArray()));
                 } else {
                     if (podId != null) {
                         InsufficientAddressCapacityException ex = new InsufficientAddressCapacityException("Insufficient address capacity", Pod.class, podId);
@@ -727,7 +730,7 @@ public class IpAddressManagerImpl extends ManagerBase implements IpAddressManage
                     if (useSystemIps && nonDedicatedVlanDbIds != null && !nonDedicatedVlanDbIds.isEmpty()) {
                         fetchFromDedicatedRange = false;
                         sc.setParameters("vlanId", nonDedicatedVlanDbIds.toArray());
-                        errorMessage.append(", vlanId id=" + nonDedicatedVlanDbIds.toArray());
+                        errorMessage.append(", vlanId id=" + Arrays.toString(nonDedicatedVlanDbIds.toArray()));
                         addrs = _ipAddressDao.lockRows(sc, filter, true);
                     }
                 }
@@ -852,6 +855,11 @@ public class IpAddressManagerImpl extends ManagerBase implements IpAddressManage
     public PublicIp assignDedicateIpAddress(Account owner, final Long guestNtwkId, final Long vpcId, final long dcId, final boolean isSourceNat)
             throws ConcurrentOperationException, InsufficientAddressCapacityException {
 
+        if (owner == null) {
+            s_logger.error("No account to assign an ip to.");
+            return null;
+        }
+
         final long ownerId = owner.getId();
 
         PublicIp ip = null;
@@ -883,13 +891,11 @@ public class IpAddressManagerImpl extends ManagerBase implements IpAddressManage
 
             return ip;
         } finally {
-            if (owner != null) {
-                if (s_logger.isDebugEnabled()) {
-                    s_logger.debug("Releasing lock account " + ownerId);
-                }
-
-                _accountDao.releaseFromLockTable(ownerId);
+            if (s_logger.isDebugEnabled()) {
+                s_logger.debug("Releasing lock account " + ownerId);
             }
+            _accountDao.releaseFromLockTable(ownerId);
+
             if (ip == null) {
                 s_logger.error("Unable to get source nat ip address for account " + ownerId);
             }
@@ -1218,7 +1224,7 @@ public class IpAddressManagerImpl extends ManagerBase implements IpAddressManage
 
         s_logger.debug("Associating ip " + ipToAssoc + " to network " + network);
 
-        IPAddressVO ip = _ipAddressDao.findById(ipId);
+        IPAddressVO ip = ipToAssoc; //_ipAddressDao.findById(ipId);
         //update ip address with networkId
         ip.setAssociatedWithNetworkId(networkId);
         ip.setSourceNat(isSourceNat);
@@ -1235,18 +1241,16 @@ public class IpAddressManagerImpl extends ManagerBase implements IpAddressManage
             return ip;
         } finally {
             if (!success && releaseOnFailure) {
-                if (ip != null) {
-                    try {
-                        s_logger.warn("Failed to associate ip address, so releasing ip from the database " + ip);
-                        _ipAddressDao.markAsUnavailable(ip.getId());
-                        if (!applyIpAssociations(network, true)) {
-                            // if fail to apply ip assciations again, unassign ip address without updating resource
-                            // count and generating usage event as there is no need to keep it in the db
-                            _ipAddressDao.unassignIpAddress(ip.getId());
-                        }
-                    } catch (Exception e) {
-                        s_logger.warn("Unable to disassociate ip address for recovery", e);
+                try {
+                    s_logger.warn("Failed to associate ip address, so releasing ip from the database " + ip);
+                    _ipAddressDao.markAsUnavailable(ip.getId());
+                    if (!applyIpAssociations(network, true)) {
+                        // if fail to apply ip assciations again, unassign ip address without updating resource
+                        // count and generating usage event as there is no need to keep it in the db
+                        _ipAddressDao.unassignIpAddress(ip.getId());
                     }
+                } catch (Exception e) {
+                    s_logger.warn("Unable to disassociate ip address for recovery", e);
                 }
             }
         }
@@ -1327,7 +1331,7 @@ public class IpAddressManagerImpl extends ManagerBase implements IpAddressManage
         PublicIp publicIp = PublicIp.createFromAddrAndVlan(ipToAssoc, _vlanDao.findById(ipToAssoc.getVlanId()));
         ipList.add(publicIp);
         Map<PublicIpAddress, Set<Service>> ipToServices = _networkModel.getIpToServices(ipList, false, true);
-        if (ipToServices != null & !ipToServices.isEmpty()) {
+        if (ipToServices != null && !ipToServices.isEmpty()) {
             Set<Service> services = ipToServices.get(publicIp);
             if (services != null && !services.isEmpty()) {
                 throw new InvalidParameterValueException("IP " + ipToAssoc + " has services and rules associated in the network " + networkId);
@@ -1368,7 +1372,7 @@ public class IpAddressManagerImpl extends ManagerBase implements IpAddressManage
         PublicIp publicIp = PublicIp.createFromAddrAndVlan(ip, _vlanDao.findById(ip.getVlanId()));
         ipList.add(publicIp);
         Map<PublicIpAddress, Set<Service>> ipToServices = _networkModel.getIpToServices(ipList, false, true);
-        if (ipToServices != null & !ipToServices.isEmpty()) {
+        if (ipToServices != null && !ipToServices.isEmpty()) {
             Set<Service> ipServices = ipToServices.get(publicIp);
             if (ipServices != null && !ipServices.isEmpty()) {
                 return false;
@@ -1671,14 +1675,14 @@ public class IpAddressManagerImpl extends ManagerBase implements IpAddressManage
 
     @Override
     public boolean applyStaticNats(List<? extends StaticNat> staticNats, boolean continueOnError, boolean forRevoke) throws ResourceUnavailableException {
-        Network network = _networksDao.findById(staticNats.get(0).getNetworkId());
-        boolean success = true;
-
         if (staticNats == null || staticNats.size() == 0) {
             s_logger.debug("There are no static nat rules for the network elements");
             return true;
         }
 
+        Network network = _networksDao.findById(staticNats.get(0).getNetworkId());
+        boolean success = true;
+
         // get the list of public ip's owned by the network
         List<IPAddressVO> userIps = _ipAddressDao.listByAssociatedNetwork(network.getId(), null);
         List<PublicIp> publicIps = new ArrayList<PublicIp>();

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/fae05560/server/src/com/cloud/network/NetworkModelImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/NetworkModelImpl.java b/server/src/com/cloud/network/NetworkModelImpl.java
index 52a08e1..68807d3 100755
--- a/server/src/com/cloud/network/NetworkModelImpl.java
+++ b/server/src/com/cloud/network/NetworkModelImpl.java
@@ -1017,14 +1017,14 @@ public class NetworkModelImpl extends ManagerBase implements NetworkModel {
         List<NetworkOfferingServiceMapVO> map = _ntwkOfferingSrvcDao.listByNetworkOfferingId(networkOfferingId);
 
         for (NetworkOfferingServiceMapVO instance : map) {
-            String service = instance.getService();
+            Service service = Network.Service.getService(instance.getService());
             Set<Provider> providers;
             providers = serviceProviderMap.get(service);
             if (providers == null) {
                 providers = new HashSet<Provider>();
             }
             providers.add(Provider.getProvider(instance.getProvider()));
-            serviceProviderMap.put(Service.getService(service), providers);
+            serviceProviderMap.put(service, providers);
         }
 
         return serviceProviderMap;
@@ -1533,6 +1533,9 @@ public class NetworkModelImpl extends ManagerBase implements NetworkModel {
 
     @Override
     public void checkNetworkPermissions(Account owner, Network network) {
+        if (network == null) {
+            throw new CloudRuntimeException("no network to check permissions for.");
+        }
         // Perform account permission check
         if (network.getGuestType() != Network.GuestType.Shared || (network.getGuestType() == Network.GuestType.Shared && network.getAclType() == ACLType.Account)) {
             AccountVO networkOwner = _accountDao.findById(network.getAccountId());

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/fae05560/server/src/com/cloud/network/guru/ControlNetworkGuru.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/guru/ControlNetworkGuru.java b/server/src/com/cloud/network/guru/ControlNetworkGuru.java
index a6e2180..13ff385 100755
--- a/server/src/com/cloud/network/guru/ControlNetworkGuru.java
+++ b/server/src/com/cloud/network/guru/ControlNetworkGuru.java
@@ -224,12 +224,12 @@ public class ControlNetworkGuru extends PodBasedNetworkGuru implements NetworkGu
 
         Map<String, String> dbParams = _configDao.getConfiguration(params);
 
-        _cidr = dbParams.get(Config.ControlCidr);
+        _cidr = dbParams.get(Config.ControlCidr.toString());
         if (_cidr == null) {
             _cidr = "169.254.0.0/16";
         }
 
-        _gateway = dbParams.get(Config.ControlGateway);
+        _gateway = dbParams.get(Config.ControlGateway.toString());
         if (_gateway == null) {
             _gateway = NetUtils.getLinkLocalGateway();
         }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/fae05560/server/src/com/cloud/network/vpc/VpcManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/vpc/VpcManagerImpl.java b/server/src/com/cloud/network/vpc/VpcManagerImpl.java
index 2face90..51e476f 100644
--- a/server/src/com/cloud/network/vpc/VpcManagerImpl.java
+++ b/server/src/com/cloud/network/vpc/VpcManagerImpl.java
@@ -424,14 +424,14 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis
         List<VpcOfferingServiceMapVO> map = _vpcOffSvcMapDao.listByVpcOffId(vpcOffId);
 
         for (VpcOfferingServiceMapVO instance : map) {
-            String service = instance.getService();
+            Service service = Service.getService(instance.getService());
             Set<Provider> providers;
             providers = serviceProviderMap.get(service);
             if (providers == null) {
                 providers = new HashSet<Provider>();
             }
             providers.add(Provider.getProvider(instance.getProvider()));
-            serviceProviderMap.put(Service.getService(service), providers);
+            serviceProviderMap.put(service, providers);
         }
 
         return serviceProviderMap;

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/fae05560/server/src/com/cloud/template/TemplateManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/template/TemplateManagerImpl.java b/server/src/com/cloud/template/TemplateManagerImpl.java
index ac641a2..56232d2 100755
--- a/server/src/com/cloud/template/TemplateManagerImpl.java
+++ b/server/src/com/cloud/template/TemplateManagerImpl.java
@@ -425,7 +425,7 @@ public class TemplateManagerImpl extends ManagerBase implements TemplateManager,
         if (isISO) {
             desc = Upload.Type.ISO.toString();
         }
-        eventId = eventId == null ? 0 : eventId;
+        eventId = (eventId == null ? 0 : eventId);
 
         if (!_accountMgr.isRootAdmin(caller.getType()) && _disableExtraction) {
             throw new PermissionDeniedException("Extraction has been disabled by admin");
@@ -1785,7 +1785,7 @@ public class TemplateManagerImpl extends ManagerBase implements TemplateManager,
         }
 
         // Don't allow to modify system template
-        if (id == Long.valueOf(1)) {
+        if (Long.valueOf(1).equals(id)) {
             InvalidParameterValueException ex = new InvalidParameterValueException("Unable to update template/iso of specified id");
             ex.addProxyObject(String.valueOf(id), "templateId");
             throw ex;


[46/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
List view: tests for filter dropdown


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/3ac181e3
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/3ac181e3
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/3ac181e3

Branch: refs/heads/marvin
Commit: 3ac181e396c2564df66947184048565d4b199716
Parents: ebcf6a1
Author: Brian Federle <br...@citrix.com>
Authored: Tue Jan 28 15:48:33 2014 -0800
Committer: Brian Federle <br...@citrix.com>
Committed: Tue Jan 28 15:48:44 2014 -0800

----------------------------------------------------------------------
 ui/tests/test.widget.listView.js | 40 +++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3ac181e3/ui/tests/test.widget.listView.js
----------------------------------------------------------------------
diff --git a/ui/tests/test.widget.listView.js b/ui/tests/test.widget.listView.js
index 84f914b..43c42f9 100644
--- a/ui/tests/test.widget.listView.js
+++ b/ui/tests/test.widget.listView.js
@@ -202,4 +202,44 @@
         equal($listView.find('table.body tbody tr td').size(), 2, 'Correct number of data body columns present');
         ok(!$listView.find('table.body tbody td.fieldHidden').size(), 'Hidden field not present');
     });
+
+    test('Filter dropdown', function() {
+        var $listView = listView({
+            listView: {
+                fields: {
+                    state: { label: 'State' }
+                },
+                filters: {
+                    on: { label: 'FilterOnLabel' },
+                    off: { label: 'FilterOffLabel' }
+                },
+                dataProvider: function(args) {
+                    var filterBy = args.filterBy.kind;
+                    var data = filterBy === 'on' ? [{ state: 'on' }] : [{ state: 'off' }];
+
+                    args.response.success({
+                        data: data
+                    });
+
+                    start();
+                }
+            }
+        });
+        
+        var $filters = $listView.find('.filters select');
+
+        var testFilterDropdownContent = function() {
+            equal($filters.find('option').size(), 2, 'Correct # of filters present');
+            equal($filters.find('option:first').html(), 'FilterOnLabel', 'Filter on label present');
+            equal($filters.find('option:last').html(), 'FilterOffLabel', 'Filter off label present');
+        };
+
+        testFilterDropdownContent();
+        equal($filters.find('option').val(), 'on', 'Correct default filter active');
+        equal($listView.find('tbody td.state span').html(), 'on', '"on" data item visible');
+        ok($filters.val('off').trigger('change'), 'Change filter to "off"');
+        equal($listView.find('tbody td.state span').html(), 'off', '"off" data item visible');
+        equal($filters.val(), 'off', 'Correct filter active');
+        testFilterDropdownContent();
+    });
 }());


[24/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
findbugs: null check for gateway and netmask instead of gateway
twice(cherry picked from commit
d30ddf6d59732fa30855811e7fe0aa639ee3849a)

Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/53feecaa
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/53feecaa
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/53feecaa

Branch: refs/heads/marvin
Commit: 53feecaa76b7c4a10e1bbe8280b6f28c638b18f8
Parents: a71871d
Author: Daan Hoogland <da...@onecht.net>
Authored: Tue Jan 28 14:53:11 2014 +0100
Committer: Daan Hoogland <dh...@schubergphilis.com>
Committed: Tue Jan 28 14:53:11 2014 +0100

----------------------------------------------------------------------
 .../com/cloud/configuration/ConfigurationManagerImpl.java    | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/53feecaa/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
index f0c7f35..2003716 100755
--- a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
+++ b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
@@ -36,6 +36,8 @@ import javax.ejb.Local;
 import javax.inject.Inject;
 import javax.naming.ConfigurationException;
 
+import org.apache.log4j.Logger;
+
 import org.apache.cloudstack.acl.SecurityChecker;
 import org.apache.cloudstack.affinity.AffinityGroup;
 import org.apache.cloudstack.affinity.AffinityGroupService;
@@ -83,7 +85,6 @@ import org.apache.cloudstack.region.dao.RegionDao;
 import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao;
 import org.apache.cloudstack.storage.datastore.db.StoragePoolDetailsDao;
 import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
-import org.apache.log4j.Logger;
 
 import com.cloud.alert.AlertManager;
 import com.cloud.api.ApiDBUtils;
@@ -2640,8 +2641,9 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
                 }
             }
             return NetUtils.supersetOrSubset.neitherSubetNorSuperset;
-        } else if (newVlanGateway == null || newVlanGateway == null) {
-            throw new InvalidParameterValueException("either both netmask and gateway should be passed or both should me omited.");
+        } else if (newVlanGateway == null || newVlanNetmask == null) {
+            throw new InvalidParameterValueException(
+                    "either both netmask and gateway should be passed or both should me omited.");
         } else {
             if (!NetUtils.sameSubnet(startIP, newVlanGateway, newVlanNetmask)) {
                 throw new InvalidParameterValueException("The start ip and gateway do not belong to the same subnet");


[14/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
These are additional fixes to make Juniper Contrail plugin work


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/cc981250
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/cc981250
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/cc981250

Branch: refs/heads/marvin
Commit: cc98125067575f305ea7621df28c70785128750a
Parents: 4583bac
Author: Sachchidanand Vaidya <va...@juniper.net>
Authored: Wed Jan 8 00:26:46 2014 -0800
Committer: Hugo Trippaers <ht...@schubergphilis.com>
Committed: Tue Jan 28 08:58:22 2014 +0000

----------------------------------------------------------------------
 .../network-elements/juniper-contrail/pom.xml   |   6 +
 .../cloudstack/contrail/module.properties       |  18 +++
 .../contrail/spring-contrail-context.xml        |  50 ++++++++
 .../management/ContrailElementImpl.java         |   7 --
 .../IntegrationTestConfiguration.java           |  73 +++++++++--
 .../contrail/management/MockAccountManager.java |   3 -
 .../test/resources/commonContext.xml            | 126 ++++++-------------
 7 files changed, 172 insertions(+), 111 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/cc981250/plugins/network-elements/juniper-contrail/pom.xml
----------------------------------------------------------------------
diff --git a/plugins/network-elements/juniper-contrail/pom.xml b/plugins/network-elements/juniper-contrail/pom.xml
index ae6961e..8c6877d 100644
--- a/plugins/network-elements/juniper-contrail/pom.xml
+++ b/plugins/network-elements/juniper-contrail/pom.xml
@@ -83,6 +83,12 @@
       <version>${project.version}</version>
     </dependency>
     <dependency>
+      <groupId>org.apache.cloudstack</groupId>
+      <artifactId>cloud-framework-spring-lifecycle</artifactId>
+      <version>${project.version}</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
       <groupId>com.google.guava</groupId>
       <artifactId>guava</artifactId>
     </dependency>

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/cc981250/plugins/network-elements/juniper-contrail/resources/META-INF/cloudstack/contrail/module.properties
----------------------------------------------------------------------
diff --git a/plugins/network-elements/juniper-contrail/resources/META-INF/cloudstack/contrail/module.properties b/plugins/network-elements/juniper-contrail/resources/META-INF/cloudstack/contrail/module.properties
new file mode 100644
index 0000000..ced0f3a
--- /dev/null
+++ b/plugins/network-elements/juniper-contrail/resources/META-INF/cloudstack/contrail/module.properties
@@ -0,0 +1,18 @@
+# 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.
+name=contrail
+parent=network
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/cc981250/plugins/network-elements/juniper-contrail/resources/META-INF/cloudstack/contrail/spring-contrail-context.xml
----------------------------------------------------------------------
diff --git a/plugins/network-elements/juniper-contrail/resources/META-INF/cloudstack/contrail/spring-contrail-context.xml b/plugins/network-elements/juniper-contrail/resources/META-INF/cloudstack/contrail/spring-contrail-context.xml
new file mode 100644
index 0000000..4614af7
--- /dev/null
+++ b/plugins/network-elements/juniper-contrail/resources/META-INF/cloudstack/contrail/spring-contrail-context.xml
@@ -0,0 +1,50 @@
+<!--
+  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.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:context="http://www.springframework.org/schema/context"
+       xmlns:aop="http://www.springframework.org/schema/aop"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans
+                      http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
+                      http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
+                      http://www.springframework.org/schema/context
+                      http://www.springframework.org/schema/context/spring-context-3.0.xsd"
+                      >
+  <bean id="ContrailManager"
+	class="org.apache.cloudstack.network.contrail.management.ContrailManagerImpl"/>
+  <bean id="ContrailElement"
+	class="org.apache.cloudstack.network.contrail.management.ContrailElementImpl">
+    <property name="name" value="ContrailElement"/>
+  </bean>
+
+  <bean id="ContrailGuru"
+	class="org.apache.cloudstack.network.contrail.management.ContrailGuru">
+    <property name="name" value="ContrailGuru"/>
+  </bean>
+
+  <bean id="ServerDBSync"
+	class="org.apache.cloudstack.network.contrail.management.ServerDBSyncImpl"/>
+  <bean id="ServerEventHandler"
+	class="org.apache.cloudstack.network.contrail.management.ServerEventHandlerImpl"/>
+  <bean id="EventUtils"
+	class="org.apache.cloudstack.network.contrail.management.EventUtils"/>
+  <bean id="ServiceManager"
+	class="org.apache.cloudstack.network.contrail.management.ServiceManagerImpl"/>
+
+</beans>

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/cc981250/plugins/network-elements/juniper-contrail/src/org/apache/cloudstack/network/contrail/management/ContrailElementImpl.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/juniper-contrail/src/org/apache/cloudstack/network/contrail/management/ContrailElementImpl.java b/plugins/network-elements/juniper-contrail/src/org/apache/cloudstack/network/contrail/management/ContrailElementImpl.java
index 092e4bc..05723b0 100644
--- a/plugins/network-elements/juniper-contrail/src/org/apache/cloudstack/network/contrail/management/ContrailElementImpl.java
+++ b/plugins/network-elements/juniper-contrail/src/org/apache/cloudstack/network/contrail/management/ContrailElementImpl.java
@@ -26,7 +26,6 @@ import java.util.Set;
 
 import javax.ejb.Local;
 import javax.inject.Inject;
-import javax.naming.ConfigurationException;
 
 import org.apache.log4j.Logger;
 import org.springframework.stereotype.Component;
@@ -90,12 +89,6 @@ public class ContrailElementImpl extends AdapterBase
     ServerDBSync _dbSync;
     private static final Logger s_logger = Logger.getLogger(ContrailElement.class);
 
-    @Override
-    public boolean configure(String name, Map<String, Object> params) throws ConfigurationException {
-        s_logger.debug("configure");
-        return true;
-    }
-
     // PluggableService
     @Override
     public List<Class<?>> getCommands() {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/cc981250/plugins/network-elements/juniper-contrail/test/org/apache/cloudstack/network/contrail/management/IntegrationTestConfiguration.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/juniper-contrail/test/org/apache/cloudstack/network/contrail/management/IntegrationTestConfiguration.java b/plugins/network-elements/juniper-contrail/test/org/apache/cloudstack/network/contrail/management/IntegrationTestConfiguration.java
index 416653d..1a53c17 100644
--- a/plugins/network-elements/juniper-contrail/test/org/apache/cloudstack/network/contrail/management/IntegrationTestConfiguration.java
+++ b/plugins/network-elements/juniper-contrail/test/org/apache/cloudstack/network/contrail/management/IntegrationTestConfiguration.java
@@ -45,14 +45,17 @@ import org.apache.cloudstack.affinity.dao.AffinityGroupDomainMapDaoImpl;
 import org.apache.cloudstack.affinity.dao.AffinityGroupVMMapDaoImpl;
 import org.apache.cloudstack.context.CallContext;
 import org.apache.cloudstack.engine.datacenter.entity.api.db.dao.DcDetailsDaoImpl;
+import org.apache.cloudstack.engine.orchestration.NetworkOrchestrator;
 import org.apache.cloudstack.engine.orchestration.service.VolumeOrchestrationService;
 import org.apache.cloudstack.engine.service.api.OrchestrationService;
 import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager;
+import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreProvider;
 import org.apache.cloudstack.engine.subsystem.api.storage.EndPointSelector;
 import org.apache.cloudstack.engine.subsystem.api.storage.StoragePoolAllocator;
 import org.apache.cloudstack.engine.subsystem.api.storage.TemplateDataFactory;
 import org.apache.cloudstack.engine.subsystem.api.storage.TemplateService;
 import org.apache.cloudstack.engine.subsystem.api.storage.VolumeDataFactory;
+import org.apache.cloudstack.engine.subsystem.api.storage.VolumeService;
 import org.apache.cloudstack.framework.config.ConfigDepot;
 import org.apache.cloudstack.framework.config.ConfigDepotAdmin;
 import org.apache.cloudstack.framework.config.dao.ConfigurationDaoImpl;
@@ -65,6 +68,7 @@ import org.apache.cloudstack.framework.jobs.impl.AsyncJobManagerImpl;
 import org.apache.cloudstack.framework.jobs.impl.AsyncJobMonitor;
 import org.apache.cloudstack.framework.jobs.impl.SyncQueueManager;
 import org.apache.cloudstack.lb.dao.ApplicationLoadBalancerRuleDaoImpl;
+import org.apache.cloudstack.network.element.InternalLoadBalancerElement;
 import org.apache.cloudstack.network.lb.ApplicationLoadBalancerService;
 import org.apache.cloudstack.network.lb.InternalLoadBalancerVMManager;
 import org.apache.cloudstack.network.lb.InternalLoadBalancerVMService;
@@ -73,6 +77,9 @@ import org.apache.cloudstack.region.PortableIpDaoImpl;
 import org.apache.cloudstack.region.PortableIpRangeDaoImpl;
 import org.apache.cloudstack.region.RegionManager;
 import org.apache.cloudstack.region.dao.RegionDaoImpl;
+import org.apache.cloudstack.spring.lifecycle.registry.ExtensionRegistry;
+import org.apache.cloudstack.storage.datastore.PrimaryDataStoreProviderManager;
+import org.apache.cloudstack.storage.image.datastore.ImageStoreProviderManager;
 import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDaoImpl;
 import org.apache.cloudstack.storage.image.db.ImageStoreDaoImpl;
 import org.apache.cloudstack.storage.image.db.TemplateDataStoreDaoImpl;
@@ -120,6 +127,7 @@ import com.cloud.dc.dao.AccountVlanMapDaoImpl;
 import com.cloud.dc.dao.ClusterDaoImpl;
 import com.cloud.dc.dao.DataCenterDao;
 import com.cloud.dc.dao.DataCenterDaoImpl;
+import com.cloud.dc.dao.DataCenterDetailsDaoImpl;
 import com.cloud.dc.dao.DataCenterIpAddressDaoImpl;
 import com.cloud.dc.dao.DataCenterLinkLocalIpAddressDaoImpl;
 import com.cloud.dc.dao.DataCenterVnetDaoImpl;
@@ -141,11 +149,11 @@ import com.cloud.host.dao.HostDetailsDaoImpl;
 import com.cloud.host.dao.HostTagsDaoImpl;
 import com.cloud.hypervisor.HypervisorGuruManagerImpl;
 import com.cloud.hypervisor.dao.HypervisorCapabilitiesDaoImpl;
+import com.cloud.hypervisor.XenServerGuru;
 import com.cloud.network.ExternalDeviceUsageManager;
 import com.cloud.network.IpAddress;
 import com.cloud.network.IpAddressManagerImpl;
 import com.cloud.network.Ipv6AddressManagerImpl;
-import com.cloud.network.NetworkModelImpl;
 import com.cloud.network.NetworkServiceImpl;
 import com.cloud.network.NetworkUsageService;
 import com.cloud.network.StorageNetworkManager;
@@ -161,6 +169,7 @@ import com.cloud.network.as.dao.CounterDaoImpl;
 import com.cloud.network.dao.AccountGuestVlanMapDaoImpl;
 import com.cloud.network.dao.FirewallRulesCidrsDaoImpl;
 import com.cloud.network.dao.FirewallRulesDaoImpl;
+import com.cloud.network.dao.IPAddressDaoImpl;
 import com.cloud.network.dao.IPAddressDao;
 import com.cloud.network.dao.LBHealthCheckPolicyDaoImpl;
 import com.cloud.network.dao.LBStickinessPolicyDaoImpl;
@@ -183,7 +192,11 @@ import com.cloud.network.dao.Site2SiteVpnGatewayDaoImpl;
 import com.cloud.network.dao.UserIpv6AddressDaoImpl;
 import com.cloud.network.dao.VirtualRouterProviderDaoImpl;
 import com.cloud.network.dao.VpnUserDaoImpl;
+import com.cloud.network.element.FirewallServiceProvider;
+import com.cloud.network.element.NetworkACLServiceProvider;
+import com.cloud.network.element.PortForwardingServiceProvider;
 import com.cloud.network.element.Site2SiteVpnServiceProvider;
+import com.cloud.network.element.VpcProvider;
 import com.cloud.network.firewall.FirewallManagerImpl;
 import com.cloud.network.lb.LoadBalancingRulesManagerImpl;
 import com.cloud.network.router.VpcVirtualNetworkApplianceManagerImpl;
@@ -234,7 +247,7 @@ import com.cloud.storage.VolumeApiService;
 import com.cloud.storage.dao.DiskOfferingDaoImpl;
 import com.cloud.storage.dao.GuestOSCategoryDaoImpl;
 import com.cloud.storage.dao.GuestOSDaoImpl;
-import com.cloud.storage.dao.LaunchPermissionDao;
+import com.cloud.storage.dao.LaunchPermissionDaoImpl;
 import com.cloud.storage.dao.SnapshotDaoImpl;
 import com.cloud.storage.dao.SnapshotPolicyDaoImpl;
 import com.cloud.storage.dao.StoragePoolDetailsDaoImpl;
@@ -271,10 +284,13 @@ import com.cloud.utils.db.Transaction;
 import com.cloud.utils.db.TransactionCallbackNoReturn;
 import com.cloud.utils.db.TransactionStatus;
 import com.cloud.vm.ItWorkDaoImpl;
+import com.cloud.vm.UserVmManagerImpl;
+import com.cloud.vm.VirtualMachineManagerImpl;
 import com.cloud.vm.dao.ConsoleProxyDaoImpl;
 import com.cloud.vm.dao.DomainRouterDaoImpl;
 import com.cloud.vm.dao.InstanceGroupDaoImpl;
 import com.cloud.vm.dao.InstanceGroupVMMapDaoImpl;
+import com.cloud.vm.dao.NicDaoImpl;
 import com.cloud.vm.dao.NicIpAliasDaoImpl;
 import com.cloud.vm.dao.NicSecondaryIpDaoImpl;
 import com.cloud.vm.dao.SecondaryStorageVmDaoImpl;
@@ -291,19 +307,19 @@ import com.cloud.vm.snapshot.dao.VMSnapshotDaoImpl;
     AsyncJobJournalDaoImpl.class, AsyncJobManagerImpl.class, AutoScalePolicyConditionMapDaoImpl.class, AutoScalePolicyDaoImpl.class, AutoScaleVmGroupDaoImpl.class,
     AutoScaleVmGroupPolicyMapDaoImpl.class, AutoScaleVmProfileDaoImpl.class, CapacityDaoImpl.class, ClusterDaoImpl.class, ClusterDetailsDaoImpl.class,
     ConditionDaoImpl.class, ConfigurationDaoImpl.class, ConfigurationManagerImpl.class, ConfigurationServerImpl.class, ConsoleProxyDaoImpl.class,
-    ContrailElementImpl.class, ContrailGuru.class, ContrailManagerImpl.class, CounterDaoImpl.class, DataCenterDaoImpl.class, DataCenterIpAddressDaoImpl.class,
+    ContrailElementImpl.class, ContrailGuru.class, ContrailManagerImpl.class, CounterDaoImpl.class, DataCenterDaoImpl.class, DataCenterDetailsDaoImpl.class, DataCenterIpAddressDaoImpl.class,
     DataCenterJoinDaoImpl.class, DataCenterLinkLocalIpAddressDaoImpl.class, DataCenterVnetDaoImpl.class, DcDetailsDaoImpl.class, DedicatedResourceDaoImpl.class,
     DiskOfferingDaoImpl.class, DiskOfferingJoinDaoImpl.class, DomainDaoImpl.class, DomainManagerImpl.class, DomainRouterDaoImpl.class, DomainRouterJoinDaoImpl.class,
-    EventDaoImpl.class, EventJoinDaoImpl.class, EventUtils.class, EventUtils.class, FirewallManagerImpl.class, FirewallRulesCidrsDaoImpl.class,
+    EventDaoImpl.class, EventJoinDaoImpl.class, EventUtils.class, ExtensionRegistry.class, FirewallManagerImpl.class, FirewallRulesCidrsDaoImpl.class,
     FirewallRulesDaoImpl.class, GuestOSCategoryDaoImpl.class, GuestOSDaoImpl.class, HostDaoImpl.class, HostDetailsDaoImpl.class, HostJoinDaoImpl.class,
     HostPodDaoImpl.class, HostTagsDaoImpl.class, HostTransferMapDaoImpl.class, HypervisorCapabilitiesDaoImpl.class, HypervisorGuruManagerImpl.class,
  ImageStoreDaoImpl.class, ImageStoreJoinDaoImpl.class, InstanceGroupDaoImpl.class, InstanceGroupJoinDaoImpl.class,
-    InstanceGroupVMMapDaoImpl.class, IpAddressManagerImpl.class, Ipv6AddressManagerImpl.class, ItWorkDaoImpl.class, LBHealthCheckPolicyDaoImpl.class,
-    LBStickinessPolicyDaoImpl.class, LaunchPermissionDao.class, LoadBalancerDaoImpl.class, LoadBalancerVMMapDaoImpl.class, LoadBalancingRulesManagerImpl.class,
+    InstanceGroupVMMapDaoImpl.class, InternalLoadBalancerElement.class, IPAddressDaoImpl.class, IpAddressManagerImpl.class, Ipv6AddressManagerImpl.class, ItWorkDaoImpl.class, LBHealthCheckPolicyDaoImpl.class,
+    LBStickinessPolicyDaoImpl.class, LaunchPermissionDaoImpl.class, LoadBalancerDaoImpl.class, LoadBalancerVMMapDaoImpl.class, LoadBalancingRulesManagerImpl.class,
     ManagementServerHostDaoImpl.class, MockAccountManager.class, NetworkACLDaoImpl.class, NetworkACLItemDaoImpl.class, NetworkACLManagerImpl.class,
-    NetworkAccountDaoImpl.class, NetworkDaoImpl.class, NetworkDomainDaoImpl.class, NetworkModelImpl.class, NetworkOfferingDaoImpl.class,
-    NetworkOfferingDetailsDaoImpl.class, NetworkOfferingServiceMapDaoImpl.class, NetworkOpDaoImpl.class, NetworkRuleConfigDaoImpl.class, NetworkServiceImpl.class,
-    NetworkServiceMapDaoImpl.class, NicIpAliasDaoImpl.class, NicSecondaryIpDaoImpl.class, PhysicalNetworkDaoImpl.class, PhysicalNetworkServiceProviderDaoImpl.class,
+    NetworkAccountDaoImpl.class, NetworkDaoImpl.class, NetworkDomainDaoImpl.class, NetworkOfferingDaoImpl.class,
+    NetworkOfferingDetailsDaoImpl.class, NetworkOfferingServiceMapDaoImpl.class, NetworkOpDaoImpl.class, NetworkOrchestrator.class, NetworkRuleConfigDaoImpl.class, NetworkServiceImpl.class,
+    NetworkServiceMapDaoImpl.class, NicDaoImpl.class, NicIpAliasDaoImpl.class, NicSecondaryIpDaoImpl.class, PhysicalNetworkDaoImpl.class, PhysicalNetworkServiceProviderDaoImpl.class,
     PhysicalNetworkTrafficTypeDaoImpl.class, PlannerHostReservationDaoImpl.class, PodVlanDaoImpl.class, PodVlanMapDaoImpl.class, PortForwardingRulesDaoImpl.class,
     PortableIpDaoImpl.class, PortableIpRangeDaoImpl.class, PrimaryDataStoreDaoImpl.class, PrivateIpDaoImpl.class, ProjectAccountDaoImpl.class,
     ProjectAccountJoinDaoImpl.class, ProjectInvitationDaoImpl.class, ProjectDaoImpl.class, ProjectInvitationJoinDaoImpl.class, ProjectJoinDaoImpl.class,
@@ -315,11 +331,11 @@ import com.cloud.vm.snapshot.dao.VMSnapshotDaoImpl;
     SnapshotDaoImpl.class, SnapshotPolicyDaoImpl.class, StaticRouteDaoImpl.class, StatsCollector.class, StoragePoolDetailsDaoImpl.class, StoragePoolHostDaoImpl.class,
     StoragePoolJoinDaoImpl.class, SyncQueueItemDaoImpl.class, TemplateDataStoreDaoImpl.class, TemplateJoinDaoImpl.class, UploadDaoImpl.class, UsageEventDaoImpl.class,
     UserAccountJoinDaoImpl.class, UserDaoImpl.class, UserIpv6AddressDaoImpl.class, UserStatisticsDaoImpl.class, UserStatsLogDaoImpl.class,
-    UserVmCloneSettingDaoImpl.class, UserVmDaoImpl.class, UserVmDetailsDaoImpl.class, UserVmJoinDaoImpl.class, VMInstanceDaoImpl.class, VMSnapshotDaoImpl.class,
-    VMTemplateDaoImpl.class, VMTemplateDetailsDaoImpl.class, VMTemplateHostDaoImpl.class, VMTemplateZoneDaoImpl.class, VirtualRouterProviderDaoImpl.class,
+    UserVmCloneSettingDaoImpl.class, UserVmDaoImpl.class, UserVmDetailsDaoImpl.class, UserVmJoinDaoImpl.class, UserVmManagerImpl.class, VMInstanceDaoImpl.class, VMSnapshotDaoImpl.class,
+    VMTemplateDaoImpl.class, VMTemplateDetailsDaoImpl.class, VMTemplateHostDaoImpl.class, VMTemplateZoneDaoImpl.class, VirtualMachineManagerImpl.class, VirtualRouterProviderDaoImpl.class,
     VlanDaoImpl.class, VmDiskStatisticsDaoImpl.class, VmRulesetLogDaoImpl.class, VolumeDaoImpl.class, VolumeHostDaoImpl.class, VolumeJoinDaoImpl.class, VpcDaoImpl.class,
     VpcGatewayDaoImpl.class, VpcManagerImpl.class, VpcOfferingDaoImpl.class, VpcOfferingServiceMapDaoImpl.class, VpcServiceMapDaoImpl.class,
-    VpcVirtualNetworkApplianceManagerImpl.class, VpnUserDaoImpl.class}, includeFilters = {@Filter(value = IntegrationTestConfiguration.ComponentFilter.class,
+    VpcVirtualNetworkApplianceManagerImpl.class, VpnUserDaoImpl.class, XenServerGuru.class}, includeFilters = {@Filter(value = IntegrationTestConfiguration.ComponentFilter.class,
                                                                                                   type = FilterType.CUSTOM)}, useDefaultFilters = false)
 @Configuration
 public class IntegrationTestConfiguration {
@@ -711,5 +727,36 @@ public class IntegrationTestConfiguration {
     public VolumeOrchestrationService volumeOrchestrationService() {
         return Mockito.mock(VolumeOrchestrationService.class);
     }
-
+    @Bean
+    public FirewallServiceProvider firewallServiceProvider() {
+        return Mockito.mock(FirewallServiceProvider.class);
+    }
+    @Bean
+    public PortForwardingServiceProvider portForwardingServiceProvider() {
+        return Mockito.mock(PortForwardingServiceProvider.class);
+    }
+    @Bean
+    public NetworkACLServiceProvider networkACLServiceProvider() {
+        return Mockito.mock(NetworkACLServiceProvider.class);
+    }
+    @Bean
+    public VpcProvider vpcProvier() {
+        return Mockito.mock(VpcProvider.class);
+    }
+    @Bean
+    public VolumeService volumeService() {
+        return Mockito.mock(VolumeService.class);
+    }
+    @Bean
+    public PrimaryDataStoreProviderManager privateDataStoreProviderManager() {
+        return Mockito.mock(PrimaryDataStoreProviderManager.class);
+    }
+    @Bean
+    public ImageStoreProviderManager imageStoreProviderManager() {
+        return Mockito.mock(ImageStoreProviderManager.class);
+    }
+    @Bean
+    public DataStoreProvider dataStoreProvider() {
+        return Mockito.mock(DataStoreProvider.class);
+    }
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/cc981250/plugins/network-elements/juniper-contrail/test/org/apache/cloudstack/network/contrail/management/MockAccountManager.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/juniper-contrail/test/org/apache/cloudstack/network/contrail/management/MockAccountManager.java b/plugins/network-elements/juniper-contrail/test/org/apache/cloudstack/network/contrail/management/MockAccountManager.java
index 2f81688..fa7be58 100644
--- a/plugins/network-elements/juniper-contrail/test/org/apache/cloudstack/network/contrail/management/MockAccountManager.java
+++ b/plugins/network-elements/juniper-contrail/test/org/apache/cloudstack/network/contrail/management/MockAccountManager.java
@@ -34,7 +34,6 @@ import org.apache.cloudstack.api.command.admin.user.RegisterCmd;
 import org.apache.cloudstack.api.command.admin.user.UpdateUserCmd;
 import org.apache.cloudstack.context.CallContext;
 
-import com.cloud.api.query.dao.AccountJoinDao;
 import com.cloud.api.query.vo.ControlledViewEntity;
 import com.cloud.configuration.ResourceLimit;
 import com.cloud.configuration.dao.ResourceCountDao;
@@ -69,8 +68,6 @@ public class MockAccountManager extends ManagerBase implements AccountManager {
     ResourceCountDao _resourceCountDao;
 
     @Inject
-    AccountJoinDao _accountJoinDao;
-    @Inject
     UserDao _userDao;
 
     UserVO _systemUser;

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/cc981250/plugins/network-elements/juniper-contrail/test/resources/commonContext.xml
----------------------------------------------------------------------
diff --git a/plugins/network-elements/juniper-contrail/test/resources/commonContext.xml b/plugins/network-elements/juniper-contrail/test/resources/commonContext.xml
index eef908f..6f46f6d 100644
--- a/plugins/network-elements/juniper-contrail/test/resources/commonContext.xml
+++ b/plugins/network-elements/juniper-contrail/test/resources/commonContext.xml
@@ -23,6 +23,7 @@
   <!-- <context:component-scan base-package="org.apache.cloudstack, com.cloud" /> -->
   <!-- @DB support -->
 
+  <bean id="componentContext" class="com.cloud.utils.component.ComponentContext"/>
   <bean id="transactionContextBuilder" class="com.cloud.utils.db.TransactionContextBuilder" />
   <bean id="actionEventInterceptor" class="com.cloud.event.ActionEventInterceptor" />
   <bean id="contrailEventInterceptor"
@@ -40,103 +41,52 @@
 
   <bean id="eventBus" class="org.apache.cloudstack.framework.messagebus.MessageBusBase" />
 
-  <bean id="eventDaoImpl" class="com.cloud.event.dao.EventDaoImpl" />
 
-  <bean id="actionEventUtils" class="com.cloud.event.ActionEventUtils" />
-  <bean id="usageEventDaoImpl" class="com.cloud.event.dao.UsageEventDaoImpl" />
-
-  <!--<bean id="eventUtils" class="com.cloud.event.EventUtils" /> -->
-
-  <bean id="accountDaoImpl" class="com.cloud.user.dao.AccountDaoImpl" />
-  <bean id="accountDetailsDaoImpl" class="com.cloud.user.AccountDetailsDaoImpl" />
-  <bean id="accountJoinDaoImpl" class="com.cloud.api.query.dao.AccountJoinDaoImpl" />
-  <bean id="accountVlanMapDaoImpl" class="com.cloud.dc.dao.AccountVlanMapDaoImpl" />
-  <bean id="launchPermissionDaoImpl" class="com.cloud.storage.dao.LaunchPermissionDaoImpl" />
-  <bean id="primaryDataStoreDaoImpl"
-    class="org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDaoImpl" />
-  <bean id="iPAddressDaoImpl" class="com.cloud.network.dao.IPAddressDaoImpl" />
-  <bean id="apiResponseHelper" class="com.cloud.api.ApiResponseHelper" />
-  <bean id="nicDaoImpl" class="com.cloud.vm.dao.NicDaoImpl" />
-
-  <bean id="componentContext" class="com.cloud.utils.component.ComponentContext" />
-
-  <bean id="IntegrationTestConfiguration"
-    class="org.apache.cloudstack.network.contrail.management.IntegrationTestConfiguration" />
-
-  <bean id="HypervisorGuru" class="com.cloud.hypervisor.XenServerGuru" />
-
-  <!-- Management traffic -->
-  <bean id="PodBasedNetworkGuru" class="com.cloud.network.guru.PodBasedNetworkGuru" />
-
-  <bean id="ControlNetworkGuru" class="com.cloud.network.guru.ControlNetworkGuru" />
-
-  <bean id="PublicNetworkGuru" class="com.cloud.network.guru.PublicNetworkGuru" />
-
-  <bean id="StorageNetworkGuru" class="com.cloud.network.guru.StorageNetworkGuru" />
-
-  <bean id="DirectNetworkGuru" class="com.cloud.network.guru.DirectNetworkGuru" />
-
-  <bean id="VpcVirtualRouterElement" class="com.cloud.network.element.VpcVirtualRouterElement" />
-
-  <bean id="VirtualRouterElement" class="com.cloud.network.element.VirtualRouterElement" />
-
-  <!-- <bean id="Ipv6AddressManager" class="com.cloud.network.Ipv6AddressManagerImpl"/> -->
-
-
-  <bean id="com.cloud.network.security.SecurityGroupManager" class="com.cloud.network.security.SecurityGroupManagerImpl" />
-
-  <bean id="SecurityGroupElement" class="com.cloud.network.element.SecurityGroupElement" />
-
-  <bean id="InternalLbVm"
-    class="org.apache.cloudstack.network.element.InternalLoadBalancerElement">
-    <property name="name" value="InternalLbVm" />
+  <!-- registry definition -->
+  <bean id="networkGurusRegistry"
+        class="org.apache.cloudstack.spring.lifecycle.registry.ExtensionRegistry">
+  </bean>
+  <bean id="networkElementsRegistry"
+        class="org.apache.cloudstack.spring.lifecycle.registry.ExtensionRegistry">
   </bean>
-  <!-- <bean id="UserAuthenticator" class="com.cloud.server.auth.PlainTextUserAuthenticator"/> 
-    <bean id="ManagementServer" class="com.cloud.server.ManagementServerImpl"/> <bean 
-    id="SecondaryStorageVmManager" class="com.cloud.storage.secondary.SecondaryStorageManagerImpl"/> 
-    <bean id="PodAllocator" class="com.cloud.agent.manager.allocator.impl.UserConcentratedAllocator"/> -->
-  <bean id="com.cloud.vm.UserVmManager" class="com.cloud.vm.UserVmManagerImpl" />
-
-  <bean id="com.cloud.vm.VirtualMachineManager" class="com.cloud.vm.VirtualMachineManagerImpl" />
-
-  <!-- <bean id="com.cloud.vm.dao.UserVmDao" class="com.cloud.vm.dao.UserVmDaoImpl"/> -->
-  <bean id="ContrailElement"
-    class="org.apache.cloudstack.network.contrail.management.ContrailElementImpl" />
-
-  <bean id="ContrailGuru" class="org.apache.cloudstack.network.contrail.management.ContrailGuru" />
 
-  <bean id="networkElements" class="com.cloud.utils.component.AdapterList">
-    <property name="Adapters">
-      <list>
-        <ref bean="ContrailElement" />
-        <ref bean="VirtualRouterElement" />
-        <ref bean="SecurityGroupElement" />
-        <ref bean="VpcVirtualRouterElement" />
-        <ref bean="InternalLbVm" />
-      </list>
-    </property>
+  <bean id="ipDeployersRegistry"
+        class="org.apache.cloudstack.spring.lifecycle.registry.ExtensionRegistry">
   </bean>
 
-  <bean id="networkGurus" class="com.cloud.utils.component.AdapterList">
-    <property name="Adapters">
-      <list>
-        <ref bean="ContrailGuru" />
-        <ref bean="PublicNetworkGuru" />
-        <ref bean="PodBasedNetworkGuru" />
-        <ref bean="ControlNetworkGuru" />
-        <ref bean="StorageNetworkGuru" />
-      </list>
-    </property>
+  <bean id="dhcpProvidersRegistry"
+        class="org.apache.cloudstack.spring.lifecycle.registry.ExtensionRegistry">
   </bean>
 
+  <!-- registry -->
+  <bean class="org.apache.cloudstack.spring.lifecycle.registry.RegistryLifecycle">
+    <property name="registry" ref="networkElementsRegistry" />
+    <property name="typeClass" value="com.cloud.network.element.NetworkElement" />
+  </bean>
 
-  <bean id="networkModelImpl" class="com.cloud.network.NetworkModelImpl">
-    <property name="NetworkElements" value="#{networkElements.Adapters}" />
+  <bean class="org.apache.cloudstack.spring.lifecycle.registry.RegistryLifecycle">
+    <property name="registry" ref="networkGurusRegistry" />
+    <property name="typeClass" value="com.cloud.network.guru.NetworkGuru" />
+   </bean>
+ 
+  <!-- registry users -->
+  <bean id="NetworkModel" class="com.cloud.network.NetworkModelImpl">
+    <property name="networkElements" value="#{networkElementsRegistry.registered}" />
   </bean>
 
-  <bean id="networkOrchestrator" class="org.apache.cloudstack.engine.orchestration.NetworkOrchestrator">
-    <property name="NetworkElements" value="#{networkElements.Adapters}" />
-    <property name="NetworkGurus" value="#{networkGurus.Adapters}" />
+  <bean id="networkServiceImpl" class="com.cloud.network.NetworkServiceImpl">
+    <property name="networkGurus" value="#{networkGurusRegistry.registered}" />
   </bean>
 
-</beans>
+  <bean id="networkOrchestrator"
+        class="org.apache.cloudstack.engine.orchestration.NetworkOrchestrator">
+    <property name="networkGurus" value="#{networkGurusRegistry.registered}" />
+    <property name="networkElements" value="#{networkElementsRegistry.registered}" />
+    <property name="ipDeployers" value="#{ipDeployersRegistry.registered}" />
+    <property name="dhcpProviders" value="#{dhcpProvidersRegistry.registered}" />
+   </bean>
+
+  <bean id="IntegrationTestConfiguration"
+	class="org.apache.cloudstack.network.contrail.management.IntegrationTestConfiguration"/>
+
+  </beans>


[13/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
CLOUDSTACK-5796. [VMware] Size column is not getting updated in snapshot_store_ref table when a snapshot is backed up in secondary storage.
Calculate and update the size of a backed up snapshot. This snapshot size is in turn used to update the secondary_storage count for an account.


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/4583bac0
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/4583bac0
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/4583bac0

Branch: refs/heads/marvin
Commit: 4583bac05bb3c2df2e7f199599765eb297023bf8
Parents: 39447cc
Author: Likitha Shetty <li...@citrix.com>
Authored: Mon Jan 27 17:52:16 2014 +0530
Committer: Likitha Shetty <li...@citrix.com>
Committed: Tue Jan 28 09:21:05 2014 +0530

----------------------------------------------------------------------
 .../resource/VmwareStorageProcessor.java        | 21 ++++++++++++++++++--
 1 file changed, 19 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/4583bac0/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java b/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java
index 0ed09c4..6157bd6 100644
--- a/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java
+++ b/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java
@@ -957,7 +957,7 @@ public class VmwareStorageProcessor implements StorageProcessor {
 
         String backupUuid = UUID.randomUUID().toString();
         Pair<String, String[]> snapshotInfo = exportVolumeToSecondaryStroage(vmMo, volumePath, secStorageUrl, installPath, backupUuid, workerVmName);
-        return new Ternary<String, String, String[]>(backupUuid + "/" + backupUuid, snapshotInfo.first(), snapshotInfo.second());
+        return new Ternary<String, String, String[]>(backupUuid, snapshotInfo.first(), snapshotInfo.second());
     }
 
     @Override
@@ -1040,8 +1040,25 @@ public class VmwareStorageProcessor implements StorageProcessor {
                     answer = new CopyCmdAnswer(details);
                 } else {
                     details = "Successfully backedUp the snapshot with Uuid: " + snapshotUuid + " to secondary storage.";
+
+                    // Get snapshot physical size
+                    long physicalSize = 0l;
+                    String secondaryMountPoint = mountService.getMountPoint(secondaryStorageUrl);
+                    String snapshotDir =  destSnapshot.getPath() + "/" + snapshotBackupUuid;
+                    File[] files = new File(secondaryMountPoint + "/" + snapshotDir).listFiles();
+                    if(files != null) {
+                        for(File file : files) {
+                            String fileName = file.getName();
+                            if(fileName.toLowerCase().startsWith(snapshotBackupUuid) && fileName.toLowerCase().endsWith(".vmdk")) {
+                                physicalSize = new File(secondaryMountPoint + "/" + snapshotDir + "/" + fileName).length();
+                                break;
+                            }
+                        }
+                    }
+
                     SnapshotObjectTO newSnapshot = new SnapshotObjectTO();
-                    newSnapshot.setPath(destSnapshot.getPath() + "/" + snapshotBackupUuid);
+                    newSnapshot.setPath(snapshotDir + "/" + snapshotBackupUuid);
+                    newSnapshot.setPhysicalSize(physicalSize);
                     answer = new CopyCmdAnswer(newSnapshot);
                 }
             } finally {


[19/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/cloudstack.git

Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/9eae5f69
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/9eae5f69
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/9eae5f69

Branch: refs/heads/marvin
Commit: 9eae5f6929da28182a5218199f4bccaf30f4f7f0
Parents: 4f6638d 95bd04e
Author: Daan Hoogland <dh...@schubergphilis.com>
Authored: Tue Jan 28 13:49:42 2014 +0100
Committer: Daan Hoogland <dh...@schubergphilis.com>
Committed: Tue Jan 28 13:49:42 2014 +0100

----------------------------------------------------------------------
 server/src/com/cloud/api/query/dao/UserVmJoinDaoImpl.java | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
----------------------------------------------------------------------



[43/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
findbugs: comparison of wrapper objects

Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/bd2acd1e
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/bd2acd1e
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/bd2acd1e

Branch: refs/heads/marvin
Commit: bd2acd1eff5d84630318cef0cde2c81204d07586
Parents: 547aa36
Author: Daan Hoogland <da...@onecht.net>
Authored: Tue Jan 28 23:20:45 2014 +0100
Committer: Daan Hoogland <da...@gmail.com>
Committed: Tue Jan 28 23:20:45 2014 +0100

----------------------------------------------------------------------
 server/src/com/cloud/server/StatsCollector.java | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bd2acd1e/server/src/com/cloud/server/StatsCollector.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/server/StatsCollector.java b/server/src/com/cloud/server/StatsCollector.java
index 95ae047..601ab12 100755
--- a/server/src/com/cloud/server/StatsCollector.java
+++ b/server/src/com/cloud/server/StatsCollector.java
@@ -839,11 +839,11 @@ public class StatsCollector extends ManagerBase implements ComponentMethodInterc
                                 Double sum = avgCounter.get(counter_count);
                                 Double avg = sum / currentVM;
                                 Operator op = conditionVO.getRelationalOperator();
-                                boolean bConditionCheck = ((op == com.cloud.network.as.Condition.Operator.EQ) && (thresholdPercent == avg))
-                                    || ((op == com.cloud.network.as.Condition.Operator.GE) && (avg >= thresholdPercent))
-                                    || ((op == com.cloud.network.as.Condition.Operator.GT) && (avg > thresholdPercent))
-                                    || ((op == com.cloud.network.as.Condition.Operator.LE) && (avg <= thresholdPercent))
-                                    || ((op == com.cloud.network.as.Condition.Operator.LT) && (avg < thresholdPercent));
+                                boolean bConditionCheck = ((op == com.cloud.network.as.Condition.Operator.EQ) && (thresholdPercent.equals(avg)))
+                                    || ((op == com.cloud.network.as.Condition.Operator.GE) && (avg.doubleValue() >= thresholdPercent.doubleValue()))
+                                    || ((op == com.cloud.network.as.Condition.Operator.GT) && (avg.doubleValue() > thresholdPercent.doubleValue()))
+                                    || ((op == com.cloud.network.as.Condition.Operator.LE) && (avg.doubleValue() <= thresholdPercent.doubleValue()))
+                                    || ((op == com.cloud.network.as.Condition.Operator.LT) && (avg.doubleValue() < thresholdPercent.doubleValue()));
 
                                 if (!bConditionCheck) {
                                     bValid = false;


[37/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
CLOUDSTACK-5968 last patch fixes setting low currentMemory during
overprovision, this one explicitly tells libvirt we dont want a
balloon device (won't use it anyway, and will just suck up a percent
of vm memory)


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/05189361
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/05189361
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/05189361

Branch: refs/heads/marvin
Commit: 05189361b79e9ebd33486cf8d564a5e85a6747d8
Parents: 0c28b66
Author: Marcus Sorensen <ma...@betterservers.com>
Authored: Tue Jan 28 11:50:40 2014 -0700
Committer: Marcus Sorensen <ma...@betterservers.com>
Committed: Tue Jan 28 11:51:23 2014 -0700

----------------------------------------------------------------------
 .../kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java    | 2 ++
 1 file changed, 2 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/05189361/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java
index 9fd058f..5aeacda 100644
--- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java
+++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java
@@ -162,6 +162,8 @@ public class LibvirtVMDef {
             }
             if (_memBalloning) {
                 resBuidler.append("<devices>\n" + "<memballoon model='virtio'/>\n" + "</devices>\n");
+            } else {
+                resBuidler.append("<devices>\n" + "<memballoon model='none'/>\n" + "</devices>\n");
             }
             if (_vcpu != -1) {
                 resBuidler.append("<vcpu>" + _vcpu + "</vcpu>\n");


[23/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
CLOUDSTACK-5900: Failed to delete template/ISO that failed to download.


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/d7ee7a74
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/d7ee7a74
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/d7ee7a74

Branch: refs/heads/marvin
Commit: d7ee7a74315fd13b1fd3e4701e8810788aa1e680
Parents: 53feeca
Author: Sanjay Tripathi <sa...@citrix.com>
Authored: Tue Jan 28 19:09:26 2014 +0530
Committer: Sanjay Tripathi <sa...@citrix.com>
Committed: Tue Jan 28 19:21:10 2014 +0530

----------------------------------------------------------------------
 .../resource/NfsSecondaryStorageResource.java       | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/d7ee7a74/services/secondary-storage/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java
----------------------------------------------------------------------
diff --git a/services/secondary-storage/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java b/services/secondary-storage/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java
index 30722e2..4d11dd3 100755
--- a/services/secondary-storage/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java
+++ b/services/secondary-storage/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java
@@ -1716,16 +1716,16 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
                 parent += File.separator;
             }
             String absoluteTemplatePath = parent + relativeTemplatePath;
-            File tmpltParent = new File(absoluteTemplatePath).getParentFile();
+            File tmpltDir = new File(absoluteTemplatePath);
             String details = null;
-            if (!tmpltParent.exists()) {
-                details = "template parent directory " + tmpltParent.getName() + " doesn't exist";
+            if (!tmpltDir.exists()) {
+                details = "template parent directory " + tmpltDir.getName() + " doesn't exist";
                 s_logger.debug(details);
                 return new Answer(cmd, true, details);
             }
-            File[] tmpltFiles = tmpltParent.listFiles();
+            File[] tmpltFiles = tmpltDir.listFiles();
             if (tmpltFiles == null || tmpltFiles.length == 0) {
-                details = "No files under template parent directory " + tmpltParent.getName();
+                details = "No files under template parent directory " + tmpltDir.getName();
                 s_logger.debug(details);
             } else {
                 boolean found = false;
@@ -1751,12 +1751,12 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
                 }
 
                 if (!found) {
-                    details = "Can not find template.properties under " + tmpltParent.getName();
+                    details = "Can not find template.properties under " + tmpltDir.getName();
                     s_logger.debug(details);
                 }
             }
-            if (!tmpltParent.delete()) {
-                details = "Unable to delete directory " + tmpltParent.getName() + " under Template path " + relativeTemplatePath;
+            if (!tmpltDir.delete()) {
+                details = "Unable to delete directory " + tmpltDir.getName() + " under Template path " + relativeTemplatePath;
                 s_logger.debug(details);
                 return new Answer(cmd, false, details);
             }


[09/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
Enable static NAT dialog search: Use 'keyword' instead of 'name'


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/ce0dc3b3
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/ce0dc3b3
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/ce0dc3b3

Branch: refs/heads/marvin
Commit: ce0dc3b306c4bd9917255769f9b8014ff23c21b7
Parents: c4b3e4c
Author: Brian Federle <br...@citrix.com>
Authored: Mon Jan 27 13:41:11 2014 -0800
Committer: Brian Federle <br...@citrix.com>
Committed: Mon Jan 27 13:41:11 2014 -0800

----------------------------------------------------------------------
 ui/scripts/network.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ce0dc3b3/ui/scripts/network.js
----------------------------------------------------------------------
diff --git a/ui/scripts/network.js b/ui/scripts/network.js
index 291def0..e4cd8b0 100755
--- a/ui/scripts/network.js
+++ b/ui/scripts/network.js
@@ -2396,7 +2396,7 @@
                                                     };
 
                                                     if (args.filterBy.search.value) {
-                                                        data.name = args.filterBy.search.value;
+                                                        data.keyword = args.filterBy.search.value;
                                                     }
 
                                                     var $tierSelect = $(".ui-dialog-content").find('.tier-select select');


[35/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
CLOUDSTACK-5968 create vm.memballoon.disable agent parameter


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/1530c162
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/1530c162
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/1530c162

Branch: refs/heads/marvin
Commit: 1530c162e58abd8e572a89d2a2706de00bd49e26
Parents: 29e2238
Author: Marcus Sorensen <ma...@betterservers.com>
Authored: Tue Jan 28 10:44:44 2014 -0700
Committer: Marcus Sorensen <ma...@betterservers.com>
Committed: Tue Jan 28 10:44:44 2014 -0700

----------------------------------------------------------------------
 agent/conf/agent.properties                                  | 4 ++++
 .../hypervisor/kvm/resource/LibvirtComputingResource.java    | 8 +++++++-
 2 files changed, 11 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/1530c162/agent/conf/agent.properties
----------------------------------------------------------------------
diff --git a/agent/conf/agent.properties b/agent/conf/agent.properties
index 5f5f368..a7376b6 100644
--- a/agent/conf/agent.properties
+++ b/agent/conf/agent.properties
@@ -114,3 +114,7 @@ domr.scripts.dir=scripts/network/domr/kvm
 # for examples:"Conroe" "Penryn", "Nehalem", "Westmere", "pentiumpro" and so
 # on,run virsh capabilities for more details.
 # guest.cpu.model=
+#
+# vm.memballoon.disable=true
+# Disable memory ballooning on vm guests for overcommit, by default overcommit
+# feature enables balloon and sets currentMemory to a minimum value.

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/1530c162/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 1ea0989..fd0078c 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
@@ -424,6 +424,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
     private boolean _canBridgeFirewall;
     protected String _localStoragePath;
     protected String _localStorageUUID;
+    protected boolean _noMemBalloon = false;
     protected String _guestCpuMode;
     protected String _guestCpuModel;
     private final Map<String, String> _pifs = new HashMap<String, String>();
@@ -771,6 +772,11 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
         value = (String)params.get("cmds.timeout");
         _cmdsTimeout = NumbersUtil.parseInt(value, 7200) * 1000;
 
+        value = (String) params.get("vm.memballoon.disable");
+        if (Boolean.parseBoolean(value)) {
+            _noMemBalloon = true;
+        }
+
         value = (String)params.get("host.reserved.mem.mb");
         _dom0MinMem = NumbersUtil.parseInt(value, 0) * 1024 * 1024;
 
@@ -3426,7 +3432,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
 
         GuestResourceDef grd = new GuestResourceDef();
 
-        if (vmTO.getMinRam() != vmTO.getMaxRam()) {
+        if (vmTO.getMinRam() != vmTO.getMaxRam() && !_noMemBalloon) {
             grd.setMemBalloning(true);
             grd.setCurrentMem(vmTO.getMinRam() / 1024);
             grd.setMemorySize(vmTO.getMaxRam() / 1024);


[40/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
CLOUDSTACK-5970: UI > network menu > guest network section > select non-VPC isolated network with SourceNAT enabled > IP Address section > select sourceNAT IP > show Configuration tab.


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/23f3047e
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/23f3047e
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/23f3047e

Branch: refs/heads/marvin
Commit: 23f3047e7d4e0d53f830a9a316d9ec37cbfd0b3f
Parents: 18a3d3c
Author: Jessica Wang <je...@apache.org>
Authored: Tue Jan 28 11:42:55 2014 -0800
Committer: Jessica Wang <je...@apache.org>
Committed: Tue Jan 28 11:44:09 2014 -0800

----------------------------------------------------------------------
 ui/scripts/network.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/23f3047e/ui/scripts/network.js
----------------------------------------------------------------------
diff --git a/ui/scripts/network.js b/ui/scripts/network.js
index e4cd8b0..0aa5473 100755
--- a/ui/scripts/network.js
+++ b/ui/scripts/network.js
@@ -2226,7 +2226,7 @@
                                 }
                             }
 
-                            if (ipAddress.issourcenat) {
+                            if (ipAddress.vpcid != null && ipAddress.issourcenat) { //don't show Configuration(ipRules) tab on VPC sourceNAT IP
                                 disableIpRules = true;
                             }
                             


[47/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
List view: tests for field pre-filter


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/ebcf6a1d
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/ebcf6a1d
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/ebcf6a1d

Branch: refs/heads/marvin
Commit: ebcf6a1da88c4d750f9342df45fc409be80c9759
Parents: 16a9171
Author: Brian Federle <br...@citrix.com>
Authored: Tue Jan 28 14:54:30 2014 -0800
Committer: Brian Federle <br...@citrix.com>
Committed: Tue Jan 28 15:48:44 2014 -0800

----------------------------------------------------------------------
 ui/tests/test.widget.listView.js | 38 ++++++++++++++++++++++++++++++-----
 1 file changed, 33 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ebcf6a1d/ui/tests/test.widget.listView.js
----------------------------------------------------------------------
diff --git a/ui/tests/test.widget.listView.js b/ui/tests/test.widget.listView.js
index 3640a5a..84f914b 100644
--- a/ui/tests/test.widget.listView.js
+++ b/ui/tests/test.widget.listView.js
@@ -104,7 +104,7 @@
                 },
                 dataProvider: function(args) {
                     args.response.success({ data: [] });
-                    
+
                     ok(true, 'Data provider called');
                     start();
                 }
@@ -128,7 +128,7 @@
                             { fieldA: 'FieldDataA', fieldB: 'FieldDataB' }
                         ]
                     });
-                    
+
                     start();
                 }
             }
@@ -146,7 +146,7 @@
             { fieldA: 'FieldDataA2', fieldB: 'FieldDataB2' },
             { fieldA: 'FieldDataA3', fieldB: 'FieldDataB3' }
         ];
-        
+
         var $listView = listView({
             listView: {
                 fields: {
@@ -157,7 +157,7 @@
                     args.response.success({
                         data: testData
                     });
-                    
+
                     start();
                 }
             }
@@ -169,9 +169,37 @@
             var $tr = $listView.find('table.body tbody tr').filter(function() {
                 return $(this).index() === index;
             });
-            
+
             equal($tr.find('td.fieldA > span').html(), 'FieldDataA' + (index + 1), 'FieldDataA' + (index + 1) + ' present');
             equal($tr.find('td.fieldB > span').html(), 'FieldDataB' + (index + 1), 'FieldDataB' + (index + 1) + ' present');
         });
     });
+
+    test('Field pre-filter', function() {
+        var $listView = listView({
+            listView: {
+                fields: {
+                    fieldA: { label: 'TestFieldA' },
+                    fieldB: { label: 'TestFieldB' },
+                    fieldHidden: { label: 'TestFieldHidden' }
+                },
+                preFilter: function(args) {
+                    return ['fieldHidden'];
+                },
+                dataProvider: function(args) {
+                    args.response.success({
+                        data: [
+                            { fieldA: 'FieldDataA', fieldB: 'FieldDataB', fieldHidden: 'FieldDataHidden' }
+                        ]
+                    });
+
+                    start();
+                }
+            }
+        });
+
+        equal($listView.find('table tr th').size(), 2, 'Correct number of header columns present');
+        equal($listView.find('table.body tbody tr td').size(), 2, 'Correct number of data body columns present');
+        ok(!$listView.find('table.body tbody td.fieldHidden').size(), 'Hidden field not present');
+    });
 }());


[12/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
CLOUDSTACK-5561 Support of multiple public vlans on VR running in HyperV


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/807dc091
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/807dc091
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/807dc091

Branch: refs/heads/marvin
Commit: 807dc091382fbf6fbd4b8fc53e7cdb414078ea2e
Parents: ce0dc3b
Author: Rajesh Battala <ra...@citrix.com>
Authored: Tue Jan 28 06:40:47 2014 +0530
Committer: Rajesh Battala <ra...@citrix.com>
Committed: Tue Jan 28 07:03:08 2014 +0530

----------------------------------------------------------------------
 .../com/cloud/agent/api/GetVmConfigAnswer.java  |  68 +++++
 .../com/cloud/agent/api/GetVmConfigCommand.java |  46 ++++
 .../agent/api/ModifyVmNicConfigAnswer.java      |  36 +++
 .../agent/api/ModifyVmNicConfigCommand.java     |  42 +++
 .../DotNet/ServerResource/AgentShell/App.config |   2 +-
 .../HypervResource/CloudStackTypes.cs           |  18 ++
 .../HypervResource/HypervResourceController.cs  | 100 +++++++
 .../HypervResource/IWmiCallsV2.cs               |   1 +
 .../ServerResource/HypervResource/WmiCallsV2.cs |  62 +++++
 .../hypervisor/hyperv/guru/HypervGuru.java      | 113 ++++++++
 .../hyperv/manager/HypervManager.java           |   1 +
 .../hyperv/manager/HypervManagerImpl.java       |  20 +-
 .../resource/HypervDirectConnectResource.java   | 258 ++++++++++++++-----
 .../VirtualNetworkApplianceManagerImpl.java     |   2 +-
 .../debian/config/opt/cloud/bin/ipassoc.sh      |   3 +-
 15 files changed, 697 insertions(+), 75 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/807dc091/core/src/com/cloud/agent/api/GetVmConfigAnswer.java
----------------------------------------------------------------------
diff --git a/core/src/com/cloud/agent/api/GetVmConfigAnswer.java b/core/src/com/cloud/agent/api/GetVmConfigAnswer.java
new file mode 100644
index 0000000..46e003e
--- /dev/null
+++ b/core/src/com/cloud/agent/api/GetVmConfigAnswer.java
@@ -0,0 +1,68 @@
+// 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.
+package com.cloud.agent.api;
+
+import java.util.List;
+
+public class GetVmConfigAnswer extends Answer {
+
+    String vmName;
+    List<NicDetails> nics;
+
+    protected GetVmConfigAnswer() {
+    }
+
+    public GetVmConfigAnswer(String vmName, List<NicDetails> nics) {
+        this.vmName = vmName;
+        this.nics = nics;
+    }
+
+    public String getVmName() {
+        return vmName;
+    }
+
+    public List<NicDetails> getNics() {
+        return nics;
+    }
+
+    public class NicDetails {
+        String macAddress;
+        int vlanid;
+
+        public NicDetails() {
+        }
+
+        public NicDetails(String macAddress, int vlanid) {
+            this.macAddress = macAddress;
+            this.vlanid = vlanid;
+        }
+
+        public String getMacAddress() {
+            return macAddress;
+        }
+
+        public int getVlanid() {
+            return vlanid;
+        }
+
+    }
+
+    @Override
+    public boolean executeInSequence() {
+        return false;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/807dc091/core/src/com/cloud/agent/api/GetVmConfigCommand.java
----------------------------------------------------------------------
diff --git a/core/src/com/cloud/agent/api/GetVmConfigCommand.java b/core/src/com/cloud/agent/api/GetVmConfigCommand.java
new file mode 100644
index 0000000..9133bd6
--- /dev/null
+++ b/core/src/com/cloud/agent/api/GetVmConfigCommand.java
@@ -0,0 +1,46 @@
+// 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.
+package com.cloud.agent.api;
+
+
+import java.util.List;
+
+import com.cloud.agent.api.to.NicTO;
+
+public class GetVmConfigCommand extends Command {
+    String vmName;
+    List<NicTO> nics;
+    protected GetVmConfigCommand() {
+    }
+
+    public GetVmConfigCommand(String vmName) {
+        this.vmName = vmName;
+    }
+
+    public String getVmName() {
+        return vmName;
+    }
+
+    public void setNics(List<NicTO> nics){
+        this.nics = nics;
+    }
+
+    @Override
+    public boolean executeInSequence() {
+        return false;
+    }
+}

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/807dc091/core/src/com/cloud/agent/api/ModifyVmNicConfigAnswer.java
----------------------------------------------------------------------
diff --git a/core/src/com/cloud/agent/api/ModifyVmNicConfigAnswer.java b/core/src/com/cloud/agent/api/ModifyVmNicConfigAnswer.java
new file mode 100644
index 0000000..1140485
--- /dev/null
+++ b/core/src/com/cloud/agent/api/ModifyVmNicConfigAnswer.java
@@ -0,0 +1,36 @@
+// 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.
+package com.cloud.agent.api;
+
+public class ModifyVmNicConfigAnswer extends Answer {
+    String vmName;
+    protected ModifyVmNicConfigAnswer() {
+    }
+
+    public ModifyVmNicConfigAnswer(String vmName) {
+        this.vmName = vmName;
+    }
+
+    public String getVmName() {
+        return vmName;
+    }
+
+    @Override
+    public boolean executeInSequence() {
+        return false;
+    }
+}

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/807dc091/core/src/com/cloud/agent/api/ModifyVmNicConfigCommand.java
----------------------------------------------------------------------
diff --git a/core/src/com/cloud/agent/api/ModifyVmNicConfigCommand.java b/core/src/com/cloud/agent/api/ModifyVmNicConfigCommand.java
new file mode 100644
index 0000000..0230bec
--- /dev/null
+++ b/core/src/com/cloud/agent/api/ModifyVmNicConfigCommand.java
@@ -0,0 +1,42 @@
+// 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.
+package com.cloud.agent.api;
+
+
+public class ModifyVmNicConfigCommand extends Command {
+    String vmName;
+    int vlan;
+    String macAddress;
+    protected ModifyVmNicConfigCommand() {
+    }
+
+    public ModifyVmNicConfigCommand(String vmName, int vlan, String macAddress) {
+        this.vmName = vmName;
+        this.vlan = vlan;
+        this.macAddress = macAddress;
+    }
+
+    public String getVmName() {
+        return vmName;
+    }
+
+
+    @Override
+    public boolean executeInSequence() {
+        return false;
+    }
+}

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/807dc091/plugins/hypervisors/hyperv/DotNet/ServerResource/AgentShell/App.config
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/hyperv/DotNet/ServerResource/AgentShell/App.config b/plugins/hypervisors/hyperv/DotNet/ServerResource/AgentShell/App.config
index b783dfe..3ec08bd 100644
--- a/plugins/hypervisors/hyperv/DotNet/ServerResource/AgentShell/App.config
+++ b/plugins/hypervisors/hyperv/DotNet/ServerResource/AgentShell/App.config
@@ -96,7 +96,7 @@
         <value>2048</value>
       </setting>
       <setting name="private_ip_address" serializeAs="String">
-        <value>10.102.192.150</value>
+        <value>0.0.0.0</value>
       </setting>
     </CloudStack.Plugin.AgentShell.AgentSettings>
    </applicationSettings>

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/807dc091/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/CloudStackTypes.cs
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/CloudStackTypes.cs b/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/CloudStackTypes.cs
index d54295c..c336a38 100644
--- a/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/CloudStackTypes.cs
+++ b/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/CloudStackTypes.cs
@@ -690,6 +690,20 @@ namespace HypervResource
         public String entityType;
     }
 
+    public class NicDetails
+    {
+        [JsonProperty("macAddress")]
+        public string macaddress;
+        [JsonProperty("vlanid")]
+        public int vlanid;
+        public NicDetails() { }
+        public NicDetails(String macaddress, int vlanid)
+        {
+            this.macaddress = macaddress;
+            this.vlanid = vlanid;
+        }
+    }
+
     /// <summary>
     /// Fully qualified named for a number of types used in CloudStack.  Used to specify the intended type for JSON serialised objects. 
     /// </summary>
@@ -738,6 +752,10 @@ namespace HypervResource
         public const string GetVmDiskStatsCommand = "com.cloud.agent.api.GetVmDiskStatsCommand";
         public const string GetVmStatsAnswer = "com.cloud.agent.api.GetVmStatsAnswer";
         public const string GetVmStatsCommand = "com.cloud.agent.api.GetVmStatsCommand";
+        public const string GetVmConfigCommand = "com.cloud.agent.api.GetVmConfigCommand";
+        public const string GetVmConfigAnswer = "com.cloud.agent.api.GetVmConfigAnswer";
+        public const string ModifyVmNicConfigCommand = "com.cloud.agent.api.ModifyVmNicConfigCommand";
+        public const string ModifyVmNicConfigAnswer = "com.cloud.agent.api.ModifyVmNicConfigAnswer";
         public const string GetVncPortAnswer = "com.cloud.agent.api.GetVncPortAnswer";
         public const string GetVncPortCommand = "com.cloud.agent.api.GetVncPortCommand";
         public const string HostStatsEntry = "com.cloud.agent.api.HostStatsEntry";

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/807dc091/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/HypervResourceController.cs
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/HypervResourceController.cs b/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/HypervResourceController.cs
index f7787c3..ebb3bce 100644
--- a/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/HypervResourceController.cs
+++ b/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/HypervResourceController.cs
@@ -982,6 +982,24 @@ namespace HypervResource
             return true;
         }
 
+        // POST api/HypervResource/PlugNicCommand
+        [HttpPost]
+        [ActionName(CloudStackTypes.PlugNicCommand)]
+        public JContainer PlugNicCommand([FromBody]dynamic cmd)
+        {
+            using (log4net.NDC.Push(Guid.NewGuid().ToString()))
+            {
+                logger.Info(CloudStackTypes.PlugNicCommand + cmd.ToString());
+                object ansContent = new
+                {
+                    result = true,
+                    details = "instead of plug, change he network settings",
+                    contextMap = contextMap
+                };
+                return ReturnCloudStackTypedJArray(ansContent, CloudStackTypes.PlugNicAnswer);
+            }
+        }
+
 
         // POST api/HypervResource/CleanupNetworkRulesCmd
         [HttpPost]
@@ -1264,6 +1282,88 @@ namespace HypervResource
             }
         }
 
+        // POST api/HypervResource/ModifyVmVnicVlanCommand
+        [HttpPost]
+        [ActionName(CloudStackTypes.ModifyVmNicConfigCommand)]
+        public JContainer ModifyVmNicConfigCommand([FromBody]dynamic cmd)
+        {
+
+            using (log4net.NDC.Push(Guid.NewGuid().ToString()))
+            {
+                logger.Info(CloudStackTypes.ModifyVmNicConfigCommand + cmd.ToString());
+                bool result = false;
+                String vmName = cmd.vmName;
+                uint vlan = (uint)cmd.vlan;
+                string macAddress = cmd.macAddress;
+                wmiCallsV2.ModifyVmVLan(vmName, vlan, macAddress);
+
+                result = true;
+
+                object ansContent = new
+                {
+                    vmName = vmName,
+                    result = result,
+                    contextMap = contextMap
+                };
+                return ReturnCloudStackTypedJArray(ansContent, CloudStackTypes.ModifyVmNicConfigAnswer);
+            }
+
+        }
+
+        // POST api/HypervResource/GetVmConfigCommand
+        [HttpPost]
+        [ActionName(CloudStackTypes.GetVmConfigCommand)]
+        public JContainer GetVmConfigCommand([FromBody]dynamic cmd)
+        {
+            using (log4net.NDC.Push(Guid.NewGuid().ToString()))
+            {
+                logger.Info(CloudStackTypes.GetVmConfigCommand + cmd.ToString());
+                bool result = false;
+                String vmName = cmd.vmName;
+                ComputerSystem vm = wmiCallsV2.GetComputerSystem(vmName);
+                List<NicDetails> nicDetails = new List<NicDetails>();
+                var nicSettingsViaVm = wmiCallsV2.GetEthernetPortSettings(vm);
+                NicDetails nic = null;
+                String[] macAddress = new String[nicSettingsViaVm.Length];
+                int index = 0;
+                foreach (SyntheticEthernetPortSettingData item in nicSettingsViaVm)
+                {
+                    macAddress[index++] = item.Address;
+                }
+
+                index = 0;
+                var ethernetConnections = wmiCallsV2.GetEthernetConnections(vm);
+                int vlanid = 1;
+                foreach (EthernetPortAllocationSettingData item in ethernetConnections)
+                {
+                    EthernetSwitchPortVlanSettingData vlanSettings = wmiCallsV2.GetVlanSettings(item);
+                    if (vlanSettings == null)
+                    {
+                        vlanid = -1;
+                    }
+                    else
+                    {
+                        vlanid = vlanSettings.AccessVlanId;
+                    }
+                    nic = new NicDetails(macAddress[index++], vlanid);
+                    nicDetails.Add(nic);
+                }
+
+                result = true;
+
+                object ansContent = new
+                {
+                    vmName = vmName,
+                    nics = nicDetails,
+                    result = result,
+                    contextMap = contextMap
+                };
+                return ReturnCloudStackTypedJArray(ansContent, CloudStackTypes.GetVmConfigAnswer);
+            }
+        }
+
+
+
         // POST api/HypervResource/GetVmStatsCommand
         [HttpPost]
         [ActionName(CloudStackTypes.GetVmStatsCommand)]

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/807dc091/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/IWmiCallsV2.cs
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/IWmiCallsV2.cs b/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/IWmiCallsV2.cs
index 5f814c5..9042d7c 100644
--- a/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/IWmiCallsV2.cs
+++ b/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/IWmiCallsV2.cs
@@ -66,5 +66,6 @@ namespace HypervResource
         void patchSystemVmIso(string vmName, string systemVmIso);
         void SetState(ComputerSystem vm, ushort requiredState);
         Dictionary<String, VmState> GetVmSync(String privateIpAddress);
+        void ModifyVmVLan(string vmName, uint vlanid, string mac);
     }
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/807dc091/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/WmiCallsV2.cs
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/WmiCallsV2.cs b/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/WmiCallsV2.cs
index 2e3aca5..b9694f0 100644
--- a/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/WmiCallsV2.cs
+++ b/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/WmiCallsV2.cs
@@ -443,6 +443,7 @@ namespace HypervResource
                 nicCount++;
             }
 
+
             // pass the boot args for the VM using KVP component.
             // We need to pass the boot args to system vm's to get them configured with cloudstack configuration.
             // Add new user data
@@ -909,6 +910,37 @@ namespace HypervResource
             return new ResourceAllocationSettingData((ManagementBaseObject)defaultDiskDriveSettings.LateBoundObject.Clone());
         }
 
+
+        // Modify the systemvm nic's VLAN id
+        public void ModifyVmVLan(string vmName, uint vlanid, String mac)
+        {
+            ComputerSystem vm = GetComputerSystem(vmName);
+            SyntheticEthernetPortSettingData[] nicSettingsViaVm = GetEthernetPortSettings(vm);
+            // Obtain controller for Hyper-V virtualisation subsystem
+            VirtualSystemManagementService vmMgmtSvc = GetVirtualisationSystemManagementService();
+            string normalisedMAC = string.Join("", (mac.Split(new char[] { ':' })));
+            int index = 0;
+            foreach (SyntheticEthernetPortSettingData item in nicSettingsViaVm)
+            {
+                if (normalisedMAC.ToLower().Equals(item.Address.ToLower()))
+                {
+                    break;
+                }
+                index++;
+            }
+
+            //TODO: make sure the index wont be out of range.
+
+            EthernetPortAllocationSettingData[] ethernetConnections = GetEthernetConnections(vm);
+            EthernetSwitchPortVlanSettingData vlanSettings = GetVlanSettings(ethernetConnections[index]);
+
+            //Assign configuration to new NIC
+            vlanSettings.LateBoundObject["AccessVlanId"] = vlanid;
+            vlanSettings.LateBoundObject["OperationMode"] = 1;
+            ModifyFeatureVmResources(vmMgmtSvc, vm, new String[] {
+                vlanSettings.LateBoundObject.GetText(TextFormat.CimDtd20)});
+        }
+
         public void AttachIso(string displayName, string iso)
         {
             logger.DebugFormat("Got request to attach iso {0} to vm {1}", iso, displayName);
@@ -1420,6 +1452,36 @@ namespace HypervResource
             return vSwitch;
         }
 
+
+        private static void ModifyFeatureVmResources(VirtualSystemManagementService vmMgmtSvc, ComputerSystem vm, string[] resourceSettings)
+        {
+            // Resource settings are changed through the management service
+            System.Management.ManagementPath jobPath;
+            System.Management.ManagementPath[] results;
+
+            var ret_val = vmMgmtSvc.ModifyFeatureSettings(
+                resourceSettings,
+                out jobPath,
+                out results);
+
+            // If the Job is done asynchronously
+            if (ret_val == ReturnCode.Started)
+            {
+                JobCompleted(jobPath);
+            }
+            else if (ret_val != ReturnCode.Completed)
+            {
+                var errMsg = string.Format(
+                    "Failed to update VM {0} (GUID {1}) due to {2} (ModifyVirtualSystem call), existing VM not deleted",
+                    vm.ElementName,
+                    vm.Name,
+                    ReturnCode.ToString(ret_val));
+                var ex = new WmiException(errMsg);
+                logger.Error(errMsg, ex);
+                throw ex;
+            }
+        }
+
         private static void ModifyVmResources(VirtualSystemManagementService vmMgmtSvc, ComputerSystem vm, string[] resourceSettings)
         {
             // Resource settings are changed through the management service

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/807dc091/plugins/hypervisors/hyperv/src/com/cloud/hypervisor/hyperv/guru/HypervGuru.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/hyperv/src/com/cloud/hypervisor/hyperv/guru/HypervGuru.java b/plugins/hypervisors/hyperv/src/com/cloud/hypervisor/hyperv/guru/HypervGuru.java
index 5845038..1d9e7f6 100644
--- a/plugins/hypervisors/hyperv/src/com/cloud/hypervisor/hyperv/guru/HypervGuru.java
+++ b/plugins/hypervisors/hyperv/src/com/cloud/hypervisor/hyperv/guru/HypervGuru.java
@@ -16,15 +16,30 @@
 // under the License.
 package com.cloud.hypervisor.hyperv.guru;
 
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
 import javax.ejb.Local;
 import javax.inject.Inject;
 
+import com.cloud.agent.api.to.NicTO;
 import com.cloud.agent.api.to.VirtualMachineTO;
 import com.cloud.hypervisor.Hypervisor.HypervisorType;
 import com.cloud.hypervisor.HypervisorGuru;
 import com.cloud.hypervisor.HypervisorGuruBase;
 import com.cloud.storage.GuestOSVO;
 import com.cloud.storage.dao.GuestOSDao;
+import com.cloud.exception.InsufficientAddressCapacityException;
+import com.cloud.hypervisor.hyperv.manager.HypervManager;
+import com.cloud.network.NetworkModel;
+import com.cloud.network.Networks.TrafficType;
+import com.cloud.network.dao.NetworkDao;
+import com.cloud.network.dao.NetworkVO;
+import com.cloud.utils.exception.CloudRuntimeException;
+import com.cloud.vm.NicProfile;
+import com.cloud.vm.VirtualMachine;
 import com.cloud.vm.VirtualMachineProfile;
 
 /**
@@ -35,6 +50,9 @@ public class HypervGuru extends HypervisorGuruBase implements HypervisorGuru {
 
     @Inject
     private GuestOSDao _guestOsDao;
+    @Inject HypervManager _hypervMgr;
+    @Inject NetworkDao _networkDao;
+    @Inject NetworkModel _networkMgr;
 
     @Override
     public final HypervisorType getHypervisorType() {
@@ -51,6 +69,78 @@ public class HypervGuru extends HypervisorGuruBase implements HypervisorGuru {
     @Override
     public final VirtualMachineTO implement(VirtualMachineProfile vm) {
         VirtualMachineTO to = toVirtualMachineTO(vm);
+        List<NicProfile> nicProfiles = vm.getNics();
+
+        if(vm.getVirtualMachine().getType() ==  VirtualMachine.Type.DomainRouter) {
+
+            NicProfile publicNicProfile = null;
+            for(NicProfile nicProfile : nicProfiles) {
+                if(nicProfile.getTrafficType() == TrafficType.Public) {
+                    publicNicProfile = nicProfile;
+                    break;
+                }
+            }
+
+            if(publicNicProfile != null) {
+                NicTO[] nics = to.getNics();
+
+                // reserve extra NICs
+                NicTO[] expandedNics = new NicTO[nics.length +  _hypervMgr.getRouterExtraPublicNics()];
+                int i = 0;
+                int deviceId = -1;
+                for(i = 0; i < nics.length; i++) {
+                    expandedNics[i] = nics[i];
+                    if(nics[i].getDeviceId() > deviceId)
+                        deviceId = nics[i].getDeviceId();
+                }
+                deviceId++;
+
+                long networkId = publicNicProfile.getNetworkId();
+                NetworkVO network = _networkDao.findById(networkId);
+
+                for(; i < nics.length + _hypervMgr.getRouterExtraPublicNics(); i++) {
+                    NicTO nicTo = new NicTO();
+                    nicTo.setDeviceId(deviceId++);
+                    nicTo.setBroadcastType(publicNicProfile.getBroadcastType());
+                    nicTo.setType(publicNicProfile.getTrafficType());
+                    nicTo.setIp("0.0.0.0");
+                    nicTo.setNetmask("255.255.255.255");
+                    nicTo.setName(publicNicProfile.getName());
+
+                    try {
+                        String mac = _networkMgr.getNextAvailableMacAddressInNetwork(networkId);
+                        nicTo.setMac(mac);
+                    } catch (InsufficientAddressCapacityException e) {
+                        throw new CloudRuntimeException("unable to allocate mac address on network: " + networkId);
+                    }
+                    nicTo.setDns1(publicNicProfile.getDns1());
+                    nicTo.setDns2(publicNicProfile.getDns2());
+                    if (publicNicProfile.getGateway() != null) {
+                        nicTo.setGateway(publicNicProfile.getGateway());
+                    } else {
+                        nicTo.setGateway(network.getGateway());
+                    }
+                    nicTo.setDefaultNic(false);
+                    nicTo.setBroadcastUri(publicNicProfile.getBroadCastUri());
+                    nicTo.setIsolationuri(publicNicProfile.getIsolationUri());
+
+                    Integer networkRate = _networkMgr.getNetworkRate(network.getId(), null);
+                    nicTo.setNetworkRateMbps(networkRate);
+
+                    expandedNics[i] = nicTo;
+                }
+                to.setNics(expandedNics);
+            }
+
+            StringBuffer sbMacSequence = new StringBuffer();
+            for(NicTO nicTo : sortNicsByDeviceId(to.getNics())) {
+                sbMacSequence.append(nicTo.getMac()).append("|");
+            }
+            sbMacSequence.deleteCharAt(sbMacSequence.length() - 1);
+            String bootArgs = to.getBootArgs();
+            to.setBootArgs(bootArgs + " nic_macs=" + sbMacSequence.toString());
+
+        }
 
         // Determine the VM's OS description
         GuestOSVO guestOS = _guestOsDao.findById(vm.getVirtualMachine().getGuestOSId());
@@ -59,6 +149,29 @@ public class HypervGuru extends HypervisorGuruBase implements HypervisorGuru {
         return to;
     }
 
+    private NicTO[] sortNicsByDeviceId(NicTO[] nics) {
+
+        List<NicTO> listForSort = new ArrayList<NicTO>();
+        for (NicTO nic : nics) {
+            listForSort.add(nic);
+        }
+        Collections.sort(listForSort, new Comparator<NicTO>() {
+
+            @Override
+            public int compare(NicTO arg0, NicTO arg1) {
+                if (arg0.getDeviceId() < arg1.getDeviceId()) {
+                    return -1;
+                } else if (arg0.getDeviceId() == arg1.getDeviceId()) {
+                    return 0;
+                }
+
+                return 1;
+            }
+        });
+
+        return listForSort.toArray(new NicTO[0]);
+    }
+
     @Override
     public final boolean trackVmHostChange() {
         return false;

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/807dc091/plugins/hypervisors/hyperv/src/com/cloud/hypervisor/hyperv/manager/HypervManager.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/hyperv/src/com/cloud/hypervisor/hyperv/manager/HypervManager.java b/plugins/hypervisors/hyperv/src/com/cloud/hypervisor/hyperv/manager/HypervManager.java
index 9030e29..5821fe4 100644
--- a/plugins/hypervisors/hyperv/src/com/cloud/hypervisor/hyperv/manager/HypervManager.java
+++ b/plugins/hypervisors/hyperv/src/com/cloud/hypervisor/hyperv/manager/HypervManager.java
@@ -21,4 +21,5 @@ import com.cloud.utils.component.Manager;
 
 public interface HypervManager extends Manager {
     public String prepareSecondaryStorageStore(long zoneId);
+    int getRouterExtraPublicNics();
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/807dc091/plugins/hypervisors/hyperv/src/com/cloud/hypervisor/hyperv/manager/HypervManagerImpl.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/hyperv/src/com/cloud/hypervisor/hyperv/manager/HypervManagerImpl.java b/plugins/hypervisors/hyperv/src/com/cloud/hypervisor/hyperv/manager/HypervManagerImpl.java
index a30eb7d..71a619a 100644
--- a/plugins/hypervisors/hyperv/src/com/cloud/hypervisor/hyperv/manager/HypervManagerImpl.java
+++ b/plugins/hypervisors/hyperv/src/com/cloud/hypervisor/hyperv/manager/HypervManagerImpl.java
@@ -45,6 +45,8 @@ import com.cloud.utils.NumbersUtil;
 import com.cloud.utils.db.GlobalLock;
 import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.utils.script.Script;
+import com.cloud.vm.dao.NicDao;
+import com.cloud.vm.dao.VMInstanceDao;
 
 @Local(value = {HypervManager.class})
 public class HypervManagerImpl implements HypervManager {
@@ -60,10 +62,11 @@ public class HypervManagerImpl implements HypervManager {
     Map<String, String> _storageMounts = new HashMap<String, String>();
     StorageLayer _storage;
 
-    @Inject
-    ConfigurationDao _configDao;
-    @Inject
-    DataStoreManager _dataStoreMgr;
+    @Inject ConfigurationDao _configDao;
+    @Inject DataStoreManager _dataStoreMgr;
+    @Inject VMInstanceDao _vminstanceDao;
+    @Inject NicDao _nicDao;
+    int _routerExtraPublicNics = 2;
 
     @Override
     public boolean configure(String name, Map<String, Object> params) throws ConfigurationException {
@@ -77,7 +80,7 @@ public class HypervManagerImpl implements HypervManager {
             _storage = new JavaStorageLayer();
             _storage.configure("StorageLayer", params);
         }
-
+        _routerExtraPublicNics = NumbersUtil.parseInt(_configDao.getValue(Config.RouterExtraPublicNics.key()), 2);
         return true;
     }
 
@@ -373,4 +376,9 @@ public class HypervManagerImpl implements HypervManager {
             }
         }
     }
-}
+
+    @Override
+    public int getRouterExtraPublicNics() {
+        return _routerExtraPublicNics;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/807dc091/plugins/hypervisors/hyperv/src/com/cloud/hypervisor/hyperv/resource/HypervDirectConnectResource.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/hyperv/src/com/cloud/hypervisor/hyperv/resource/HypervDirectConnectResource.java b/plugins/hypervisors/hyperv/src/com/cloud/hypervisor/hyperv/resource/HypervDirectConnectResource.java
index d6ffa1d..e9647ad 100644
--- a/plugins/hypervisors/hyperv/src/com/cloud/hypervisor/hyperv/resource/HypervDirectConnectResource.java
+++ b/plugins/hypervisors/hyperv/src/com/cloud/hypervisor/hyperv/resource/HypervDirectConnectResource.java
@@ -71,7 +71,12 @@ import com.cloud.agent.api.CheckS2SVpnConnectionsCommand;
 import com.cloud.agent.api.Command;
 import com.cloud.agent.api.GetDomRVersionAnswer;
 import com.cloud.agent.api.GetDomRVersionCmd;
+import com.cloud.agent.api.GetVmConfigAnswer;
+import com.cloud.agent.api.GetVmConfigAnswer.NicDetails;
+import com.cloud.agent.api.GetVmConfigCommand;
 import com.cloud.agent.api.HostVmStateReportEntry;
+import com.cloud.agent.api.ModifyVmNicConfigAnswer;
+import com.cloud.agent.api.ModifyVmNicConfigCommand;
 import com.cloud.agent.api.NetworkUsageAnswer;
 import com.cloud.agent.api.NetworkUsageCommand;
 import com.cloud.agent.api.PingCommand;
@@ -117,11 +122,13 @@ import com.cloud.agent.api.to.PortForwardingRuleTO;
 import com.cloud.agent.api.to.StaticNatRuleTO;
 import com.cloud.agent.api.to.VirtualMachineTO;
 import com.cloud.dc.DataCenter.NetworkType;
+import com.cloud.exception.InternalErrorException;
 import com.cloud.host.Host.Type;
 import com.cloud.hypervisor.Hypervisor;
 import com.cloud.hypervisor.hyperv.manager.HypervManager;
 import com.cloud.network.HAProxyConfigurator;
 import com.cloud.network.LoadBalancerConfigurator;
+import com.cloud.network.Networks.BroadcastDomainType;
 import com.cloud.network.Networks.RouterPrivateIpStrategy;
 import com.cloud.network.rules.FirewallRule;
 import com.cloud.resource.ServerResource;
@@ -133,6 +140,8 @@ import com.cloud.utils.net.NetUtils;
 import com.cloud.utils.ssh.SshHelper;
 import com.cloud.vm.VirtualMachine;
 import com.cloud.vm.VirtualMachineName;
+
+
 /**
  * Implementation of dummy resource to be returned from discoverer.
  **/
@@ -706,65 +715,6 @@ public class HypervDirectConnectResource extends ServerResourceBase implements S
         }
     }
 
-    //
-    // find mac address of a specified ethx device
-    //    ip address show ethx | grep link/ether | sed -e 's/^[ \t]*//' | cut -d' ' -f2
-    // returns
-    //      eth0:xx.xx.xx.xx
-
-    //
-    // list IP with eth devices
-    //  ifconfig ethx |grep -B1 "inet addr" | awk '{ if ( $1 == "inet" ) { print $2 } else if ( $2 == "Link" ) { printf "%s:" ,$1 } }'
-    //     | awk -F: '{ print $1 ": " $3 }'
-    //
-    // returns
-    //      eth0:xx.xx.xx.xx
-    //
-    //
-
-    private int findRouterEthDeviceIndex(String domrName, String routerIp, String mac) throws Exception {
-
-        s_logger.info("findRouterEthDeviceIndex. mac: " + mac);
-
-        // TODO : this is a temporary very inefficient solution, will refactor it later
-        Pair<Boolean, String> result = SshHelper.sshExecute(routerIp, DEFAULT_DOMR_SSHPORT, "root", getSystemVMKeyFile(), null, "ls /proc/sys/net/ipv4/conf");
-
-        // when we dynamically plug in a new NIC into virtual router, it may take time to show up in guest OS
-        // we use a waiting loop here as a workaround to synchronize activities in systems
-        long startTick = System.currentTimeMillis();
-        while (System.currentTimeMillis() - startTick < 15000) {
-            if (result.first()) {
-                String[] tokens = result.second().split("\\s+");
-                for (String token : tokens) {
-                    if (!("all".equalsIgnoreCase(token) || "default".equalsIgnoreCase(token) || "lo".equalsIgnoreCase(token))) {
-                        String cmd = String.format("ip address show %s | grep link/ether | sed -e 's/^[ \t]*//' | cut -d' ' -f2", token);
-
-                        if (s_logger.isDebugEnabled())
-                            s_logger.debug("Run domr script " + cmd);
-                        Pair<Boolean, String> result2 = SshHelper.sshExecute(routerIp, DEFAULT_DOMR_SSHPORT, "root", getSystemVMKeyFile(), null,
-                            // TODO need to find the dev index inside router based on IP address
-                            cmd);
-                        if (s_logger.isDebugEnabled())
-                            s_logger.debug("result: " + result2.first() + ", output: " + result2.second());
-
-                        if (result2.first() && result2.second().trim().equalsIgnoreCase(mac.trim()))
-                            return Integer.parseInt(token.substring(3));
-                    }
-                }
-            }
-
-            s_logger.warn("can not find intereface associated with mac: " + mac + ", guest OS may still at loading state, retry...");
-
-            try {
-                Thread.currentThread();
-                Thread.sleep(1000);
-            } catch (InterruptedException e) {
-            }
-        }
-
-        return -1;
-    }
-
     protected Answer execute(SetPortForwardingRulesCommand cmd) {
         if (s_logger.isInfoEnabled()) {
             s_logger.info("Executing resource SetPortForwardingRulesCommand: " + s_gson.toJson(cmd));
@@ -1170,7 +1120,6 @@ public class HypervDirectConnectResource extends ServerResourceBase implements S
         if (s_logger.isInfoEnabled()) {
             s_logger.info("Executing resource VmDataCommand: " + s_gson.toJson(cmd));
         }
-
         String routerPrivateIpAddress = cmd.getAccessDetail(NetworkElementCommand.ROUTER_IP);
         String controlIp = getRouterSshControlIp(cmd);
 
@@ -1386,6 +1335,102 @@ public class HypervDirectConnectResource extends ServerResourceBase implements S
         return new Answer(cmd);
     }
 
+    //
+    // find mac address of a specified ethx device
+    //    ip address show ethx | grep link/ether | sed -e 's/^[ \t]*//' | cut -d' ' -f2
+    // returns
+    //      eth0:xx.xx.xx.xx
+
+    //
+    // list IP with eth devices
+    //  ifconfig ethx |grep -B1 "inet addr" | awk '{ if ( $1 == "inet" ) { print $2 } else if ( $2 == "Link" ) { printf "%s:" ,$1 } }'
+    //     | awk -F: '{ print $1 ": " $3 }'
+    //
+    // returns
+    //      eth0:xx.xx.xx.xx
+    //
+    //
+
+    private int findRouterEthDeviceIndex(String domrName, String routerIp, String mac) throws Exception {
+
+        s_logger.info("findRouterEthDeviceIndex. mac: " + mac);
+
+        // TODO : this is a temporary very inefficient solution, will refactor it later
+        Pair<Boolean, String> result = SshHelper.sshExecute(routerIp, DEFAULT_DOMR_SSHPORT, "root", getSystemVMKeyFile(), null,
+                "ls /proc/sys/net/ipv4/conf");
+
+        // when we dynamically plug in a new NIC into virtual router, it may take time to show up in guest OS
+        // we use a waiting loop here as a workaround to synchronize activities in systems
+        long startTick = System.currentTimeMillis();
+        while (System.currentTimeMillis() - startTick < 15000) {
+            if (result.first()) {
+                String[] tokens = result.second().split("\\s+");
+                for (String token : tokens) {
+                    if (!("all".equalsIgnoreCase(token) || "default".equalsIgnoreCase(token) || "lo".equalsIgnoreCase(token))) {
+                        String cmd = String.format("ip address show %s | grep link/ether | sed -e 's/^[ \t]*//' | cut -d' ' -f2", token);
+
+                        if (s_logger.isDebugEnabled())
+                            s_logger.debug("Run domr script " + cmd);
+                        Pair<Boolean, String> result2 = SshHelper.sshExecute(routerIp, DEFAULT_DOMR_SSHPORT, "root", getSystemVMKeyFile(), null,
+                                // TODO need to find the dev index inside router based on IP address
+                                cmd);
+                        if (s_logger.isDebugEnabled())
+                            s_logger.debug("result: " + result2.first() + ", output: " + result2.second());
+
+                        if (result2.first() && result2.second().trim().equalsIgnoreCase(mac.trim()))
+                            return Integer.parseInt(token.substring(3));
+                    }
+                }
+            }
+
+            s_logger.warn("can not find intereface associated with mac: " + mac + ", guest OS may still at loading state, retry...");
+
+        }
+
+        return -1;
+    }
+
+    private Pair<Integer, String> findRouterFreeEthDeviceIndex(String routerIp) throws Exception {
+
+        s_logger.info("findRouterFreeEthDeviceIndex. mac: ");
+
+        // TODO : this is a temporary very inefficient solution, will refactor it later
+        Pair<Boolean, String> result = SshHelper.sshExecute(routerIp, DEFAULT_DOMR_SSHPORT, "root", getSystemVMKeyFile(), null,
+                "ip address | grep DOWN| cut -f2 -d :");
+
+        // when we dynamically plug in a new NIC into virtual router, it may take time to show up in guest OS
+        // we use a waiting loop here as a workaround to synchronize activities in systems
+        long startTick = System.currentTimeMillis();
+        while (System.currentTimeMillis() - startTick < 15000) {
+            if (result.first() && !result.second().isEmpty()) {
+                String[] tokens = result.second().split("\\n");
+                for (String token : tokens) {
+                    if (!("all".equalsIgnoreCase(token) || "default".equalsIgnoreCase(token) || "lo".equalsIgnoreCase(token))) {
+                        //String cmd = String.format("ip address show %s | grep link/ether | sed -e 's/^[ \t]*//' | cut -d' ' -f2", token);
+                        //TODO: don't check for eth0,1,2, as they will be empty by default.
+                        //String cmd = String.format("ip address show %s ", token);
+                        String cmd = String.format("ip address show %s | grep link/ether | sed -e 's/^[ \t]*//' | cut -d' ' -f2", token);
+                        if (s_logger.isDebugEnabled())
+                            s_logger.debug("Run domr script " + cmd);
+                        Pair<Boolean, String> result2 = SshHelper.sshExecute(routerIp, DEFAULT_DOMR_SSHPORT, "root", getSystemVMKeyFile(), null,
+                                // TODO need to find the dev index inside router based on IP address
+                                cmd);
+                        if (s_logger.isDebugEnabled())
+                            s_logger.debug("result: " + result2.first() + ", output: " + result2.second());
+
+                        if (result2.first() && result2.second().trim().length() > 0)
+                            return new Pair<Integer, String>(Integer.parseInt(token.trim().substring(3)), result2.second().trim()) ;
+                    }
+                }
+            }
+
+            //s_logger.warn("can not find intereface associated with mac: , guest OS may still at loading state, retry...");
+
+        }
+
+        return new Pair<Integer, String>(-1, "");
+    }
+
     protected Answer execute(IpAssocCommand cmd) {
         if (s_logger.isInfoEnabled()) {
             s_logger.info("Executing resource IPAssocCommand: " + s_gson.toJson(cmd));
@@ -1401,7 +1446,7 @@ public class HypervDirectConnectResource extends ServerResourceBase implements S
             String controlIp = getRouterSshControlIp(cmd);
             for (IpAddressTO ip : ips) {
                 assignPublicIpAddress(routerName, controlIp, ip.getPublicIp(), ip.isAdd(), ip.isFirstIP(), ip.isSourceNat(), ip.getBroadcastUri(), ip.getVlanGateway(),
-                    ip.getVlanNetmask(), ip.getVifMacAddress());
+                        ip.getVlanNetmask(), ip.getVifMacAddress());
                 results[i++] = ip.getPublicIp() + " - success";
             }
 
@@ -1419,16 +1464,97 @@ public class HypervDirectConnectResource extends ServerResourceBase implements S
         return new IpAssocAnswer(cmd, results);
     }
 
+    protected int getVmNics(String vmName, int vlanid) {
+        GetVmConfigCommand vmConfig = new GetVmConfigCommand(vmName);
+        URI agentUri = null;
+        int nicposition = -1;
+        try {
+            String cmdName = GetVmConfigCommand.class.getName();
+            agentUri =
+                    new URI("https", null, _agentIp, _port,
+                            "/api/HypervResource/" + cmdName, null, null);
+        } catch (URISyntaxException e) {
+            String errMsg = "Could not generate URI for Hyper-V agent";
+            s_logger.error(errMsg, e);
+        }
+        String ansStr = postHttpRequest(s_gson.toJson(vmConfig), agentUri);
+        Answer[] result = s_gson.fromJson(ansStr, Answer[].class);
+        s_logger.debug("executeRequest received response "
+                + s_gson.toJson(result));
+        if (result.length > 0) {
+            GetVmConfigAnswer ans = ((GetVmConfigAnswer)result[0]);
+            List<NicDetails> nics = ans.getNics();
+            for (NicDetails nic : nics) {
+                if (nic.getVlanid() == vlanid) {
+                    nicposition = nics.indexOf(nic);
+                    break;
+                }
+            }
+        }
+        return nicposition;
+    }
+
+    protected void modifyNicVlan(String vmName, int vlanId, String macAddress) {
+        ModifyVmNicConfigCommand modifynic = new ModifyVmNicConfigCommand(vmName, vlanId, macAddress);
+        URI agentUri = null;
+        try {
+            String cmdName = ModifyVmNicConfigCommand.class.getName();
+            agentUri =
+                    new URI("https", null, _agentIp, _port,
+                            "/api/HypervResource/" + cmdName, null, null);
+        } catch (URISyntaxException e) {
+            String errMsg = "Could not generate URI for Hyper-V agent";
+            s_logger.error(errMsg, e);
+        }
+        String ansStr = postHttpRequest(s_gson.toJson(modifynic), agentUri);
+        Answer[] result = s_gson.fromJson(ansStr, Answer[].class);
+        s_logger.debug("executeRequest received response "
+                + s_gson.toJson(result));
+        if (result.length > 0) {
+            ModifyVmNicConfigAnswer ans = ((ModifyVmNicConfigAnswer)result[0]);
+        }
+    }
+
     protected void assignPublicIpAddress(final String vmName, final String privateIpAddress, final String publicIpAddress, final boolean add, final boolean firstIP,
-        final boolean sourceNat, final String vlanId, final String vlanGateway, final String vlanNetmask, final String vifMacAddress) throws Exception {
+            final boolean sourceNat, final String broadcastId, final String vlanGateway, final String vlanNetmask, final String vifMacAddress) throws Exception {
+
+        URI broadcastUri = BroadcastDomainType.fromString(broadcastId);
+        if (BroadcastDomainType.getSchemeValue(broadcastUri) != BroadcastDomainType.Vlan) {
+            throw new InternalErrorException("Unable to assign a public IP to a VIF on network " + broadcastId);
+        }
+        int vlanId = Integer.parseInt(BroadcastDomainType.getValue(broadcastUri));
+
+        int publicNicInfo = -1;
+        publicNicInfo = getVmNics(vmName, vlanId);
 
         boolean addVif = false;
-        if (add) {
+        if (add && publicNicInfo == -1) {
             if (s_logger.isDebugEnabled()) {
                 s_logger.debug("Plug new NIC to associate" + privateIpAddress + " to " + publicIpAddress);
             }
             addVif = true;
         } else if (!add && firstIP) {
+            if (s_logger.isDebugEnabled()) {
+                s_logger.debug("Unplug NIC " + publicNicInfo);
+            }
+        }
+
+        if (addVif) {
+            Pair<Integer, String> nicdevice = findRouterFreeEthDeviceIndex(privateIpAddress);
+            publicNicInfo = nicdevice.first();
+            if (publicNicInfo > 0) {
+                modifyNicVlan(vmName, vlanId, nicdevice.second());
+                // After modifying the vnic on VR, check the VR VNics config in the host and get the device position
+                publicNicInfo = getVmNics(vmName, vlanId);
+                // As a new nic got activated in the VR. add the entry in the NIC's table.
+                networkUsage(privateIpAddress, "addVif", "eth" + publicNicInfo);
+            }
+            else {
+                // we didn't find any eth device available in VR to configure the ip range with new VLAN
+                String msg = "No Nic is available on DomR VIF to associate/disassociate IP with.";
+                s_logger.error(msg);
+                throw new InternalErrorException(msg);
+            }
         }
 
         String args = null;
@@ -1450,8 +1576,8 @@ public class HypervDirectConnectResource extends ServerResourceBase implements S
         args += publicIpAddress + "/" + cidrSize;
 
         args += " -c ";
-        args += "eth" + "2";  // currently hardcoding to eth 2 (which is default public ipd)//publicNicInfo.first();
 
+        args += "eth" + publicNicInfo;
         args += " -g ";
         args += vlanGateway;
 
@@ -1464,7 +1590,7 @@ public class HypervDirectConnectResource extends ServerResourceBase implements S
         }
 
         Pair<Boolean, String> result =
-            SshHelper.sshExecute(privateIpAddress, DEFAULT_DOMR_SSHPORT, "root", getSystemVMKeyFile(), null, "/opt/cloud/bin/ipassoc.sh " + args);
+                SshHelper.sshExecute(privateIpAddress, DEFAULT_DOMR_SSHPORT, "root", getSystemVMKeyFile(), null, "/opt/cloud/bin/ipassoc.sh " + args);
 
         if (!result.first()) {
             s_logger.error("ipassoc command on domain router " + privateIpAddress + " failed. message: " + result.second());
@@ -1840,7 +1966,7 @@ public class HypervDirectConnectResource extends ServerResourceBase implements S
                 sch.connect(addr);
                 return null;
             } catch (IOException e) {
-                s_logger.info("Could not connect to " + ipAddress + " due to " + e.toString());
+                s_logger.info("Could] not connect to " + ipAddress + " due to " + e.toString());
                 if (e instanceof ConnectException) {
                     // if connection is refused because of VM is being started,
                     // we give it more sleep time

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/807dc091/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
index 13291d0..bf2516a 100755
--- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
+++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
@@ -2125,7 +2125,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V
             buf.append(" dnssearchorder=").append(domain_suffix);
         }
 
-        if (profile.getHypervisorType() == HypervisorType.VMware) {
+        if (profile.getHypervisorType() == HypervisorType.VMware || profile.getHypervisorType() == HypervisorType.Hyperv) {
             buf.append(" extra_pubnics=" + _routerExtraPublicNics);
         }
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/807dc091/systemvm/patches/debian/config/opt/cloud/bin/ipassoc.sh
----------------------------------------------------------------------
diff --git a/systemvm/patches/debian/config/opt/cloud/bin/ipassoc.sh b/systemvm/patches/debian/config/opt/cloud/bin/ipassoc.sh
index ae2d7e4..2a9d780 100755
--- a/systemvm/patches/debian/config/opt/cloud/bin/ipassoc.sh
+++ b/systemvm/patches/debian/config/opt/cloud/bin/ipassoc.sh
@@ -254,10 +254,11 @@ remove_first_ip() {
   if [ $? -gt 0  -a $? -ne 2 ]
   then
      remove_routing $1
+     sudo ip link set $ethDev down
      return 1
   fi
   remove_routing $1
-
+  sudo ip link set $ethDev down
   return $?
 }
 


[34/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
fix checkstyle in DedicatedResourceVO.java, trailing space


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/29e22384
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/29e22384
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/29e22384

Branch: refs/heads/marvin
Commit: 29e22384b7e758d12f72dab9cb05d53ed297e147
Parents: 53777c9
Author: Marcus Sorensen <ma...@betterservers.com>
Authored: Tue Jan 28 10:38:30 2014 -0700
Committer: Marcus Sorensen <ma...@betterservers.com>
Committed: Tue Jan 28 10:38:30 2014 -0700

----------------------------------------------------------------------
 server/src/com/cloud/dc/DedicatedResourceVO.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/29e22384/server/src/com/cloud/dc/DedicatedResourceVO.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/dc/DedicatedResourceVO.java b/server/src/com/cloud/dc/DedicatedResourceVO.java
index 41bdfec..e7d7b3b 100644
--- a/server/src/com/cloud/dc/DedicatedResourceVO.java
+++ b/server/src/com/cloud/dc/DedicatedResourceVO.java
@@ -30,7 +30,7 @@ import javax.persistence.Table;
 public class DedicatedResourceVO implements DedicatedResources {
 
     /**
-     * 
+     *
      */
     private static final long serialVersionUID = -6659510127145101917L;
 


[36/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
Update socket icon


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/0c28b663
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/0c28b663
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/0c28b663

Branch: refs/heads/marvin
Commit: 0c28b66362f335ae7323f327cb2e175ee47cbb94
Parents: 1530c16
Author: Brian Federle <br...@citrix.com>
Authored: Tue Jan 28 10:25:17 2014 -0800
Committer: Brian Federle <br...@citrix.com>
Committed: Tue Jan 28 10:25:57 2014 -0800

----------------------------------------------------------------------
 ui/images/infrastructure-icons.png | Bin 62257 -> 62059 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0c28b663/ui/images/infrastructure-icons.png
----------------------------------------------------------------------
diff --git a/ui/images/infrastructure-icons.png b/ui/images/infrastructure-icons.png
index 5d35a8e..a589fc4 100644
Binary files a/ui/images/infrastructure-icons.png and b/ui/images/infrastructure-icons.png differ


[21/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
Findbugs: scariest issues in ApiResponseHelper fixed (cherry picked from
commit 9a1b882d0eb871c64fe0f0f3fbafbabae89188fa)


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/1c736175
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/1c736175
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/1c736175

Branch: refs/heads/marvin
Commit: 1c7361756cb41091deb7798377ae5ed04b7de8d9
Parents: 60e8d13
Author: Daan Hoogland <da...@onecht.net>
Authored: Tue Jan 28 14:24:21 2014 +0100
Committer: Daan Hoogland <dh...@schubergphilis.com>
Committed: Tue Jan 28 14:24:21 2014 +0100

----------------------------------------------------------------------
 api/src/com/cloud/network/rules/FirewallRule.java |  3 ++-
 api/src/com/cloud/network/vpc/StaticRoute.java    |  3 ++-
 server/src/com/cloud/api/ApiResponseHelper.java   | 18 ++++++++----------
 3 files changed, 12 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/1c736175/api/src/com/cloud/network/rules/FirewallRule.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/network/rules/FirewallRule.java b/api/src/com/cloud/network/rules/FirewallRule.java
index 4cfa42b..274242a 100644
--- a/api/src/com/cloud/network/rules/FirewallRule.java
+++ b/api/src/com/cloud/network/rules/FirewallRule.java
@@ -36,7 +36,8 @@ public interface FirewallRule extends ControlledEntity, Identity, InternalIdenti
         Staged, // Rule been created but has never got through network rule conflict detection.  Rules in this state can not be sent to network elements.
         Add,    // Add means the rule has been created and has gone through network rule conflict detection.
         Active, // Rule has been sent to the network elements and reported to be active.
-        Revoke  // Revoke means this rule has been revoked. If this rule has been sent to the network elements, the rule will be deleted from database.
+        Revoke,  // Revoke means this rule has been revoked. If this rule has been sent to the network elements, the rule will be deleted from database.
+        Deleting // rule has been revoked and is scheduled for deletion
     }
 
     enum TrafficType {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/1c736175/api/src/com/cloud/network/vpc/StaticRoute.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/network/vpc/StaticRoute.java b/api/src/com/cloud/network/vpc/StaticRoute.java
index ccdbec8..5707ca1 100644
--- a/api/src/com/cloud/network/vpc/StaticRoute.java
+++ b/api/src/com/cloud/network/vpc/StaticRoute.java
@@ -25,7 +25,8 @@ public interface StaticRoute extends ControlledEntity, Identity, InternalIdentit
         Staged, // route been created but has never got through network rule conflict detection.  Routes in this state can not be sent to VPC virtual router.
         Add,    // Add means the route has been created and has gone through network rule conflict detection.
         Active, // Route has been sent to the VPC router and reported to be active.
-        Revoke  // Revoke means this route has been revoked. If this route has been sent to the VPC router, the route will be deleted from database.
+        Revoke,  // Revoke means this route has been revoked. If this route has been sent to the VPC router, the route will be deleted from database.
+        Deleting // rule has been revoked and is scheduled for deletion
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/1c736175/server/src/com/cloud/api/ApiResponseHelper.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/ApiResponseHelper.java b/server/src/com/cloud/api/ApiResponseHelper.java
index c9e5581..a50b3ee 100755
--- a/server/src/com/cloud/api/ApiResponseHelper.java
+++ b/server/src/com/cloud/api/ApiResponseHelper.java
@@ -384,8 +384,9 @@ public class ApiResponseHelper implements ResponseGenerator {
             populateDomain(resourceLimitResponse, accountTemp.getDomainId());
         }
         resourceLimitResponse.setResourceType(Integer.valueOf(limit.getType().getOrdinal()).toString());
+
         if ((limit.getType() == ResourceType.primary_storage || limit.getType() == ResourceType.secondary_storage) && limit.getMax() >= 0) {
-            resourceLimitResponse.setMax((long)Math.ceil(limit.getMax() / ResourceType.bytesToGiB));
+            resourceLimitResponse.setMax((long)Math.ceil((double)limit.getMax() / ResourceType.bytesToGiB));
         } else {
             resourceLimitResponse.setMax(limit.getMax());
         }
@@ -1804,8 +1805,6 @@ public class ApiResponseHelper implements ResponseGenerator {
     public SecurityGroupResponse createSecurityGroupResponseFromSecurityGroupRule(List<? extends SecurityRule> securityRules) {
         SecurityGroupResponse response = new SecurityGroupResponse();
         Map<Long, Account> securiytGroupAccounts = new HashMap<Long, Account>();
-        Map<Long, SecurityGroup> allowedSecurityGroups = new HashMap<Long, SecurityGroup>();
-        Map<Long, Account> allowedSecuriytGroupAccounts = new HashMap<Long, Account>();
 
         if ((securityRules != null) && !securityRules.isEmpty()) {
             SecurityGroupJoinVO securityGroup = ApiDBUtils.findSecurityGroupViewById(securityRules.get(0).getSecurityGroupId()).get(0);
@@ -3008,11 +3007,10 @@ public class ApiResponseHelper implements ResponseGenerator {
         response.setCidr(result.getCidr());
 
         StaticRoute.State state = result.getState();
-        String stateToSet = state.toString();
-        if (state.equals(FirewallRule.State.Revoke)) {
-            stateToSet = "Deleting";
+        if (state.equals(StaticRoute.State.Revoke)) {
+            state = StaticRoute.State.Deleting;
         }
-        response.setState(stateToSet);
+        response.setState(state.toString());
         populateAccount(response, result.getAccountId());
         populateDomain(response, result.getDomainId());
 
@@ -3501,11 +3499,11 @@ public class ApiResponseHelper implements ResponseGenerator {
         ApplicationLoadBalancerRuleResponse ruleResponse = new ApplicationLoadBalancerRuleResponse();
         ruleResponse.setInstancePort(lb.getDefaultPortStart());
         ruleResponse.setSourcePort(lb.getSourcePortStart());
-        String stateToSet = lb.getState().toString();
+        FirewallRule.State stateToSet = lb.getState();
         if (stateToSet.equals(FirewallRule.State.Revoke)) {
-            stateToSet = "Deleting";
+            stateToSet = FirewallRule.State.Deleting;
         }
-        ruleResponse.setState(stateToSet);
+        ruleResponse.setState(stateToSet.toString());
         ruleResponse.setObjectName("loadbalancerrule");
         ruleResponses.add(ruleResponse);
         lbResponse.setLbRules(ruleResponses);


[30/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
findbugs: assign result of string manipulations(cherry picked from
commit 20127e09dc0e341a2f790a8a52cded4c5f1f0cc1)

Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/9edeb24f
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/9edeb24f
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/9edeb24f

Branch: refs/heads/marvin
Commit: 9edeb24f3fc64bc5dd42f466fd65025884cee63a
Parents: fae0556
Author: Daan Hoogland <da...@onecht.net>
Authored: Tue Jan 28 16:36:27 2014 +0100
Committer: Daan Hoogland <dh...@schubergphilis.com>
Committed: Tue Jan 28 16:36:27 2014 +0100

----------------------------------------------------------------------
 .../security/SecurityGroupManagerImpl.java      |  7 +++--
 server/src/com/cloud/test/IPRangeConfig.java    | 29 ++------------------
 2 files changed, 6 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9edeb24f/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java b/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java
index cd68440..d5f9405 100755
--- a/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java
+++ b/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java
@@ -40,6 +40,9 @@ import javax.ejb.Local;
 import javax.inject.Inject;
 import javax.naming.ConfigurationException;
 
+import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.log4j.Logger;
+
 import org.apache.cloudstack.api.command.user.securitygroup.AuthorizeSecurityGroupEgressCmd;
 import org.apache.cloudstack.api.command.user.securitygroup.AuthorizeSecurityGroupIngressCmd;
 import org.apache.cloudstack.api.command.user.securitygroup.CreateSecurityGroupCmd;
@@ -51,8 +54,6 @@ import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationSe
 import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
 import org.apache.cloudstack.managed.context.ManagedContextRunnable;
 import org.apache.cloudstack.utils.identity.ManagementServerNode;
-import org.apache.commons.codec.digest.DigestUtils;
-import org.apache.log4j.Logger;
 
 import com.cloud.agent.AgentManager;
 import com.cloud.agent.api.NetworkRulesSystemVmCommand;
@@ -373,7 +374,7 @@ public class SecurityGroupManagerImpl extends ManagerBase implements SecurityGro
 
     protected String generateRulesetSignature(Map<PortAndProto, Set<String>> ingress, Map<PortAndProto, Set<String>> egress) {
         String ruleset = ingress.toString();
-        ruleset.concat(egress.toString());
+        ruleset = ruleset.concat(egress.toString());
         return DigestUtils.md5Hex(ruleset);
     }
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9edeb24f/server/src/com/cloud/test/IPRangeConfig.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/test/IPRangeConfig.java b/server/src/com/cloud/test/IPRangeConfig.java
index f461995..1d56471 100755
--- a/server/src/com/cloud/test/IPRangeConfig.java
+++ b/server/src/com/cloud/test/IPRangeConfig.java
@@ -69,7 +69,7 @@ public class IPRangeConfig {
 
             long zoneId = PodZoneConfig.getZoneId(zone);
             result = changeRange(op, "public", -1, zoneId, startIP, endIP, null, -1);
-            result.replaceAll("<br>", "/n");
+            result = result.replaceAll("<br>", "/n");
             System.out.println(result);
         } else if (type.equals("private")) {
             if (args.length != 5 && args.length != 6) {
@@ -92,7 +92,7 @@ public class IPRangeConfig {
             long podId = PodZoneConfig.getPodId(pod, zone);
             long zoneId = PodZoneConfig.getZoneId(zone);
             result = changeRange(op, "private", podId, zoneId, startIP, endIP, null, -1);
-            result.replaceAll("<br>", "/n");
+            result = result.replaceAll("<br>", "/n");
             System.out.println(result);
         } else {
             printError(usage());
@@ -569,31 +569,6 @@ public class IPRangeConfig {
             "Unable to start DB connection to read guest cidr network. Please contact Cloud Support.");
     }
 
-//    public static String getGuestIpNetwork() {
-//        return DatabaseConfig.getDatabaseValueString("SELECT * FROM `cloud`.`configuration` WHERE name = \"guest.ip.network\"", "value",
-//        "Unable to start DB connection to read guest IP network. Please contact Cloud Support.");
-//    }
-//
-//    public static String getGuestNetmask() {
-//        return DatabaseConfig.getDatabaseValueString("SELECT * FROM `cloud`.`configuration` WHERE name = \"guest.netmask\"", "value",
-//        "Unable to start DB connection to read guest netmask. Please contact Cloud Support.");
-//    }
-
-//    public static String getGuestSubnet() {
-//        String guestIpNetwork = getGuestIpNetwork();
-//        String guestNetmask = getGuestNetmask();
-//
-//        if (guestIpNetwork == null || guestIpNetwork.isEmpty()) printError("Please enter a valid guest IP network address.");
-//        if (guestNetmask == null || guestNetmask.isEmpty()) printError("Please enter a valid guest IP network netmask");
-//
-//        return NetUtils.getSubNet(guestIpNetwork, guestNetmask);
-//    }
-
-//    public static long getGuestCidrSize() {
-//        String guestNetmask = getGuestNetmask();
-//        return NetUtils.getCidrSize(guestNetmask);
-//    }
-
     public static boolean validCIDR(final String cidr) {
         if (cidr == null || cidr.isEmpty()) {
             return false;


[42/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
multi-edit UI: Fix wrapping for multirange (start-end) fields


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/547aa367
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/547aa367
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/547aa367

Branch: refs/heads/marvin
Commit: 547aa36707087beca72055dc5eceef195061a3ba
Parents: 25d8e3d
Author: Brian Federle <br...@citrix.com>
Authored: Tue Jan 28 11:55:43 2014 -0800
Committer: Brian Federle <br...@citrix.com>
Committed: Tue Jan 28 11:55:43 2014 -0800

----------------------------------------------------------------------
 ui/css/cloudstack3.css | 1 -
 1 file changed, 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/547aa367/ui/css/cloudstack3.css
----------------------------------------------------------------------
diff --git a/ui/css/cloudstack3.css b/ui/css/cloudstack3.css
index 18a88ba..993673b 100644
--- a/ui/css/cloudstack3.css
+++ b/ui/css/cloudstack3.css
@@ -7624,7 +7624,6 @@ div.container div.panel div#details-tab-addloadBalancer.detail-group div.loadBal
 
 .multi-edit .range input {
   width: 35px;
-  margin-left: 6px;
   margin-right: 2px;
   position: relative;
 }


[20/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
findbugs: moved call on static object to synchronized block(cherry
picked from commit f3529a19a9aad36dbd92e311018643629f19c748)

Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/60e8d131
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/60e8d131
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/60e8d131

Branch: refs/heads/marvin
Commit: 60e8d131cf27834f4cbbcbccf0174a273cd570c3
Parents: 9eae5f6
Author: Daan Hoogland <da...@onecht.net>
Authored: Tue Jan 28 14:14:47 2014 +0100
Committer: Daan Hoogland <dh...@schubergphilis.com>
Committed: Tue Jan 28 14:14:47 2014 +0100

----------------------------------------------------------------------
 server/src/com/cloud/api/ApiDispatcher.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/60e8d131/server/src/com/cloud/api/ApiDispatcher.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/ApiDispatcher.java b/server/src/com/cloud/api/ApiDispatcher.java
index 9f4f766..55ef53a 100755
--- a/server/src/com/cloud/api/ApiDispatcher.java
+++ b/server/src/com/cloud/api/ApiDispatcher.java
@@ -427,8 +427,8 @@ public class ApiDispatcher {
                         }
                     } else {
                         DateFormat format = BaseCmd.INPUT_FORMAT;
-                        format.setLenient(false);
                         synchronized (format) {
+                        format.setLenient(false);
                             field.set(cmdObj, format.parse(paramObj.toString()));
                         }
                     }


[49/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
CLOUDSTACK-5900: Failed to delete template/ISO that failed to download.


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/1c4bbecc
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/1c4bbecc
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/1c4bbecc

Branch: refs/heads/marvin
Commit: 1c4bbecc4a50b059b8bb87a802023ee6f48ca1f2
Parents: 1c57dd7
Author: Sanjay Tripathi <sa...@citrix.com>
Authored: Wed Jan 29 13:55:44 2014 +0530
Committer: Sanjay Tripathi <sa...@citrix.com>
Committed: Wed Jan 29 14:07:59 2014 +0530

----------------------------------------------------------------------
 .../resource/NfsSecondaryStorageResource.java   | 23 +++++++++++++-------
 1 file changed, 15 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/1c4bbecc/services/secondary-storage/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java
----------------------------------------------------------------------
diff --git a/services/secondary-storage/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java b/services/secondary-storage/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java
index 4d11dd3..3d99443 100755
--- a/services/secondary-storage/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java
+++ b/services/secondary-storage/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java
@@ -1716,16 +1716,23 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
                 parent += File.separator;
             }
             String absoluteTemplatePath = parent + relativeTemplatePath;
-            File tmpltDir = new File(absoluteTemplatePath);
+
+            File tmpltParent;
+            if(absoluteTemplatePath.endsWith(String.valueOf(obj.getId()))) {
+                tmpltParent = new File(absoluteTemplatePath);
+            } else {
+                tmpltParent = new File(absoluteTemplatePath).getParentFile();
+            }
+
             String details = null;
-            if (!tmpltDir.exists()) {
-                details = "template parent directory " + tmpltDir.getName() + " doesn't exist";
+            if (!tmpltParent.exists()) {
+                details = "template parent directory " + tmpltParent.getName() + " doesn't exist";
                 s_logger.debug(details);
                 return new Answer(cmd, true, details);
             }
-            File[] tmpltFiles = tmpltDir.listFiles();
+            File[] tmpltFiles = tmpltParent.listFiles();
             if (tmpltFiles == null || tmpltFiles.length == 0) {
-                details = "No files under template parent directory " + tmpltDir.getName();
+                details = "No files under template parent directory " + tmpltParent.getName();
                 s_logger.debug(details);
             } else {
                 boolean found = false;
@@ -1751,12 +1758,12 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
                 }
 
                 if (!found) {
-                    details = "Can not find template.properties under " + tmpltDir.getName();
+                    details = "Can not find template.properties under " + tmpltParent.getName();
                     s_logger.debug(details);
                 }
             }
-            if (!tmpltDir.delete()) {
-                details = "Unable to delete directory " + tmpltDir.getName() + " under Template path " + relativeTemplatePath;
+            if (!tmpltParent.delete()) {
+                details = "Unable to delete directory " + tmpltParent.getName() + " under Template path " + relativeTemplatePath;
                 s_logger.debug(details);
                 return new Answer(cmd, false, details);
             }


[15/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
Findbugs finding : Incorrect use of equality


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/3bd38eb1
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/3bd38eb1
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/3bd38eb1

Branch: refs/heads/marvin
Commit: 3bd38eb17e4b51bd57e3db2d204105387bfdc7a8
Parents: cc98125
Author: Hugo Trippaers <ht...@schubergphilis.com>
Authored: Fri Jan 24 11:58:53 2014 +0000
Committer: Hugo Trippaers <ht...@schubergphilis.com>
Committed: Tue Jan 28 08:58:28 2014 +0000

----------------------------------------------------------------------
 .../src/com/cloud/hypervisor/vmware/VmwareServerDiscoverer.java    | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3bd38eb1/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/VmwareServerDiscoverer.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/VmwareServerDiscoverer.java b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/VmwareServerDiscoverer.java
index 3cd7a9f..e6ecbc9 100755
--- a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/VmwareServerDiscoverer.java
+++ b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/VmwareServerDiscoverer.java
@@ -166,7 +166,7 @@ public class VmwareServerDiscoverer extends DiscovererBase implements Discoverer
                 _clusterDetailsDao.persist(clusterId, clusterDetails);
             }
             String updatedInventoryPath = validateCluster(url, vmwareDc);
-            if (url.getPath() != updatedInventoryPath) {
+            if (!url.getPath().equals(updatedInventoryPath)) {
                 // If url from API doesn't specify DC then update url in database with DC associated with this zone.
                 clusterDetails.put("url", url.getScheme() + "://" + url.getHost() + updatedInventoryPath);
                 _clusterDetailsDao.persist(clusterId, clusterDetails);


[06/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
CLOUDSTACK-5960: Domain admin or user cannot register a template using
S3/Swift object store.


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/cfe78646
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/cfe78646
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/cfe78646

Branch: refs/heads/marvin
Commit: cfe7864618ad9a64e4ef294bc3b292f458815cbd
Parents: b7d6495
Author: Min Chen <mi...@citrix.com>
Authored: Mon Jan 27 11:54:38 2014 -0800
Committer: Min Chen <mi...@citrix.com>
Committed: Mon Jan 27 13:31:35 2014 -0800

----------------------------------------------------------------------
 server/src/com/cloud/template/TemplateAdapterBase.java | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/cfe78646/server/src/com/cloud/template/TemplateAdapterBase.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/template/TemplateAdapterBase.java b/server/src/com/cloud/template/TemplateAdapterBase.java
index 59aab3b..0ac434c 100755
--- a/server/src/com/cloud/template/TemplateAdapterBase.java
+++ b/server/src/com/cloud/template/TemplateAdapterBase.java
@@ -176,8 +176,14 @@ public abstract class TemplateAdapterBase extends AdapterBase implements Templat
         }
 
         boolean isAdmin = _accountDao.findById(templateOwner.getId()).getType() == Account.ACCOUNT_TYPE_ADMIN;
-
-        if (!isAdmin && zoneId == null) {
+        boolean isRegionStore = false;
+        List<ImageStoreVO> stores = _imgStoreDao.findRegionImageStores();
+        if (stores != null && stores.size() > 0) {
+            isRegionStore = true;
+        }
+        
+        if (!isAdmin && zoneId == null && !isRegionStore ) {
+            // domain admin and user should also be able to register template on a region store
             throw new InvalidParameterValueException("Please specify a valid zone Id.");
         }
 


[45/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
Fix trailing whitespace.

Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/16a9171f
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/16a9171f
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/16a9171f

Branch: refs/heads/marvin
Commit: 16a9171f55d729e22240c26d15b73a4295f0e960
Parents: a26c811
Author: Min Chen <mi...@citrix.com>
Authored: Tue Jan 28 14:53:18 2014 -0800
Committer: Min Chen <mi...@citrix.com>
Committed: Tue Jan 28 14:53:18 2014 -0800

----------------------------------------------------------------------
 .../org/apache/cloudstack/storage/image/TemplateServiceImpl.java   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/16a9171f/engine/storage/image/src/org/apache/cloudstack/storage/image/TemplateServiceImpl.java
----------------------------------------------------------------------
diff --git a/engine/storage/image/src/org/apache/cloudstack/storage/image/TemplateServiceImpl.java b/engine/storage/image/src/org/apache/cloudstack/storage/image/TemplateServiceImpl.java
index a8dec09..166b523 100644
--- a/engine/storage/image/src/org/apache/cloudstack/storage/image/TemplateServiceImpl.java
+++ b/engine/storage/image/src/org/apache/cloudstack/storage/image/TemplateServiceImpl.java
@@ -723,7 +723,7 @@ public class TemplateServiceImpl implements TemplateService {
     @Override
     public AsyncCallFuture<TemplateApiResult> copyTemplate(TemplateInfo srcTemplate, DataStore destStore) {
         // for vmware template, we need to check if ova packing is needed, since template created from snapshot does not have .ova file
-        // we invoke createEntityExtractURL to trigger ova packing. Ideally, we can directly use extractURL to pass to following createTemplate. 
+        // we invoke createEntityExtractURL to trigger ova packing. Ideally, we can directly use extractURL to pass to following createTemplate.
         // Need to understand what is the background to use two different urls for copy and extract.
         if (srcTemplate.getFormat() == ImageFormat.OVA){
             ImageStoreEntity tmpltStore = (ImageStoreEntity)srcTemplate.getDataStore();


[39/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
VM snapshots: If quiescevm is supported, make checkbox checked


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/18a3d3c3
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/18a3d3c3
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/18a3d3c3

Branch: refs/heads/marvin
Commit: 18a3d3c3b85fd8dd44106bdfeffca231d87f2be1
Parents: 08d124d
Author: Brian Federle <br...@citrix.com>
Authored: Tue Jan 28 11:33:03 2014 -0800
Committer: Brian Federle <br...@citrix.com>
Committed: Tue Jan 28 11:33:03 2014 -0800

----------------------------------------------------------------------
 ui/scripts/instances.js | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/18a3d3c3/ui/scripts/instances.js
----------------------------------------------------------------------
diff --git a/ui/scripts/instances.js b/ui/scripts/instances.js
index 989d9a8..3b1931b 100644
--- a/ui/scripts/instances.js
+++ b/ui/scripts/instances.js
@@ -47,7 +47,13 @@
                         isBoolean: true,
                         isChecked: false,
                         isHidden: function(args) {
-                            return args.context.instances[0].hypervisor !== 'VMware';
+                            if (args.context.instances[0].hypervisor !== 'VMware') {
+                                return true;
+                            }
+
+                            args.form.fields.quiescevm.isChecked = true;
+                            
+                            return false;
                         }
                     }
                 }


[11/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
CLOUDSTACK-5821 systemvmiso is locked by systevmvm in hyperv


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/7ac48934
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/7ac48934
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/7ac48934

Branch: refs/heads/marvin
Commit: 7ac48934f77c3b9a72c05300163088a4c198ebf2
Parents: 807dc09
Author: Rajesh Battala <ra...@citrix.com>
Authored: Tue Jan 28 06:42:54 2014 +0530
Committer: Rajesh Battala <ra...@citrix.com>
Committed: Tue Jan 28 07:03:08 2014 +0530

----------------------------------------------------------------------
 systemvm/patches/debian/config/etc/init.d/cloud-early-config | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7ac48934/systemvm/patches/debian/config/etc/init.d/cloud-early-config
----------------------------------------------------------------------
diff --git a/systemvm/patches/debian/config/etc/init.d/cloud-early-config b/systemvm/patches/debian/config/etc/init.d/cloud-early-config
index d6dc8f0..df80a28 100755
--- a/systemvm/patches/debian/config/etc/init.d/cloud-early-config
+++ b/systemvm/patches/debian/config/etc/init.d/cloud-early-config
@@ -135,7 +135,7 @@ get_boot_params() {
      virtualpc|hyperv)
           # Hyper-V is recognized as virtualpc hypervisor type. Boot args are passed using KVP Daemon
           #waiting for the hv_kvp_daemon to start up
-          #sleep 30 need to fix the race condition of hv_kvp_daemon and cloud-early-config
+          #sleep  need to fix the race condition of hv_kvp_daemon and cloud-early-config
           sleep 5
           cp -f /var/opt/hyperv/.kvp_pool_0 /var/cache/cloud/cmdline
           cat /dev/null > /var/opt/hyperv/.kvp_pool_0
@@ -1211,6 +1211,10 @@ start() {
   patch_log4j
   parse_cmd_line
   change_password
+  if [ "$hyp" == "hyperv" ]; then
+    # eject the systemvm.iso
+      eject
+  fi
   case $TYPE in 
      router)
          [ "$NAME" == "" ] && NAME=router


[38/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
Add listView async tests


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/08d124d6
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/08d124d6
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/08d124d6

Branch: refs/heads/marvin
Commit: 08d124d6b664bedea28b75fab02c6fd217a67a47
Parents: 0518936
Author: Brian Federle <br...@citrix.com>
Authored: Tue Jan 28 11:24:20 2014 -0800
Committer: Brian Federle <br...@citrix.com>
Committed: Tue Jan 28 11:24:20 2014 -0800

----------------------------------------------------------------------
 ui/tests/test.widget.listView.js | 88 +++++++++++++++++++++++++++++++++++
 1 file changed, 88 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/08d124d6/ui/tests/test.widget.listView.js
----------------------------------------------------------------------
diff --git a/ui/tests/test.widget.listView.js b/ui/tests/test.widget.listView.js
index 2209c42..3640a5a 100644
--- a/ui/tests/test.widget.listView.js
+++ b/ui/tests/test.widget.listView.js
@@ -86,4 +86,92 @@
             equal($field.html(), v.label, k + '-> Has correct label');
         });
     });
+
+    test('Data loading state', function() {
+        var $listView = listView();
+
+        equal($listView.find('table.body tr.loading').size(), 1, 'Row has loading state');
+        equal($listView.find('table.body tr.loading td.loading.icon').size(), 1, 'Row cell has loading icon');
+    });
+
+    asyncTest('Data provider: basic', function() {
+        expect(3);
+        var $listView = listView({
+            listView: {
+                fields: {
+                    fieldA: { label: 'TestFieldA' },
+                    fieldB: { label: 'TestFieldB' }
+                },
+                dataProvider: function(args) {
+                    args.response.success({ data: [] });
+                    
+                    ok(true, 'Data provider called');
+                    start();
+                }
+            }
+        });
+
+        equal($listView.find('.data-table table.body tbody tr.empty td').size(), 1, 'Body table has empty table row');
+        equal($listView.find('.data-table table.body tbody tr.empty td').html(), 'label.no.data', 'Empty contents notice displayed');
+    });
+
+    asyncTest('Data provider: load data', function() {
+        var $listView = listView({
+            listView: {
+                fields: {
+                    fieldA: { label: 'TestFieldA' },
+                    fieldB: { label: 'TestFieldB' }
+                },
+                dataProvider: function(args) {
+                    args.response.success({
+                        data: [
+                            { fieldA: 'FieldDataA', fieldB: 'FieldDataB' }
+                        ]
+                    });
+                    
+                    start();
+                }
+            }
+        });
+
+        equal($listView.find('table.body tbody tr').size(), 1, 'Body table has table row');
+        equal($listView.find('table.body tbody tr td').size(), 2, 'Body table has table cells');
+        equal($listView.find('table.body tbody tr td.fieldA > span').html(), 'FieldDataA', 'FieldDataA content present');
+        equal($listView.find('table.body tbody tr td.fieldB > span').html(), 'FieldDataB', 'FieldDataB content present');
+    });
+
+    asyncTest('Data provider: multiple rows of data', function() {
+        var testData = [
+            { fieldA: 'FieldDataA1', fieldB: 'FieldDataB1' },
+            { fieldA: 'FieldDataA2', fieldB: 'FieldDataB2' },
+            { fieldA: 'FieldDataA3', fieldB: 'FieldDataB3' }
+        ];
+        
+        var $listView = listView({
+            listView: {
+                fields: {
+                    fieldA: { label: 'TestFieldA' },
+                    fieldB: { label: 'TestFieldB' }
+                },
+                dataProvider: function(args) {
+                    args.response.success({
+                        data: testData
+                    });
+                    
+                    start();
+                }
+            }
+        });
+
+        equal($listView.find('table.body tbody tr').size(), 3, 'Body table has correct # of table rows');
+
+        $(testData).map(function(index, data) {
+            var $tr = $listView.find('table.body tbody tr').filter(function() {
+                return $(this).index() === index;
+            });
+            
+            equal($tr.find('td.fieldA > span').html(), 'FieldDataA' + (index + 1), 'FieldDataA' + (index + 1) + ' present');
+            equal($tr.find('td.fieldB > span').html(), 'FieldDataB' + (index + 1), 'FieldDataB' + (index + 1) + ' present');
+        });
+    });
 }());


[50/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
Merge remote-tracking branch 'origin/master' into marvin


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/df58f51e
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/df58f51e
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/df58f51e

Branch: refs/heads/marvin
Commit: df58f51e33183912b320742a5006a16bdcbab87f
Parents: dedd41e 1c4bbec
Author: Girish Shilamkar <gi...@clogeny.com>
Authored: Wed Jan 29 14:20:04 2014 +0530
Committer: Girish Shilamkar <gi...@clogeny.com>
Committed: Wed Jan 29 14:20:04 2014 +0530

----------------------------------------------------------------------
 LICENSE.header                                  |   10 +-
 agent/conf/agent.properties                     |    4 +
 .../cloudstack/api-config/module.properties     |   18 +
 .../api-config/spring-api-config-context.xml    |   32 +
 api/src/com/cloud/agent/api/to/IpAddressTO.java |   17 +
 api/src/com/cloud/network/Network.java          |    2 +-
 api/src/com/cloud/network/NetworkService.java   |    2 +-
 api/src/com/cloud/network/Networks.java         |   17 +-
 api/src/com/cloud/network/PhysicalNetwork.java  |    2 +-
 .../network/VirtualNetworkApplianceService.java |    2 +-
 .../com/cloud/network/rules/FirewallRule.java   |    3 +-
 api/src/com/cloud/network/vpc/StaticRoute.java  |    3 +-
 api/src/com/cloud/server/ResourceTag.java       |   38 +-
 api/src/com/cloud/vm/UserVmService.java         |    8 +
 api/src/com/cloud/vm/VirtualMachine.java        |    1 +
 .../org/apache/cloudstack/api/ApiConstants.java |    1 +
 api/src/org/apache/cloudstack/api/BaseCmd.java  |    9 +-
 .../apache/cloudstack/api/IdentityService.java  |   23 -
 .../command/admin/usage/AddTrafficTypeCmd.java  |   14 +-
 .../api/command/admin/vm/GetVMUserDataCmd.java  |   81 +
 .../api/command/user/vm/AddIpToVmNicCmd.java    |    2 +-
 .../api/response/VMUserDataResponse.java        |   44 +
 .../config/ApiServiceConfiguration.java         |   40 +
 awsapi/pom.xml                                  |   15 +-
 .../bridge/service/core/ec2/EC2Engine.java      |   10 +-
 .../classes/resources/messages.properties       |    4 +-
 .../classes/resources/messages_es.properties    |   66 +-
 .../classes/resources/messages_fr_FR.properties |    2 +
 .../classes/resources/messages_ja.properties    | 1599 ------------
 .../classes/resources/messages_ja_JP.properties | 1599 ++++++++++++
 .../classes/resources/messages_nl_NL.properties | 1216 ++++++++++
 .../classes/resources/messages_pl.properties    |  469 ++++
 .../classes/resources/messages_pt_BR.properties |   36 +
 client/tomcatconf/commands.properties.in        |    1 +
 .../com/cloud/agent/api/GetVmConfigAnswer.java  |   68 +
 .../com/cloud/agent/api/GetVmConfigCommand.java |   46 +
 .../agent/api/ModifyVmNicConfigAnswer.java      |   36 +
 .../agent/api/ModifyVmNicConfigCommand.java     |   42 +
 .../api/routing/NetworkElementCommand.java      |   13 +-
 .../virtualnetwork/VirtualRouterDeployer.java   |   27 +
 .../virtualnetwork/VirtualRoutingResource.java  | 1036 +++-----
 core/src/com/cloud/agent/transport/Request.java |   28 +-
 debian/control                                  |    6 +-
 deps/XenServerJava/pom.xml                      |    2 +-
 .../src/com/cloud/vm/VmWorkConstants.java       |    1 +
 .../com/cloud/vm/VirtualMachineManagerImpl.java |  232 +-
 .../cloud/vm/VirtualMachinePowerStateSync.java  |    2 +
 .../vm/VirtualMachinePowerStateSyncImpl.java    |   21 +-
 .../src/com/cloud/vm/VmWorkJobDispatcher.java   |   49 +-
 .../orchestration/VolumeOrchestrator.java       |   26 +
 .../spring-engine-schema-core-daos-context.xml  |    1 -
 .../com/cloud/upgrade/dao/Upgrade410to420.java  |  170 --
 .../com/cloud/upgrade/dao/Upgrade421to430.java  |  218 ++
 .../com/cloud/upgrade/dao/Upgrade430to440.java  |  144 ++
 .../src/com/cloud/vm/dao/NicSecondaryIpDao.java |    2 +
 .../com/cloud/vm/dao/NicSecondaryIpDaoImpl.java |   13 +
 .../src/com/cloud/vm/dao/VMInstanceDao.java     |    2 +
 .../src/com/cloud/vm/dao/VMInstanceDaoImpl.java |  117 +-
 .../storage/image/TemplateServiceImpl.java      |    8 +
 engine/storage/integration-test/pom.xml         |    2 -
 .../image/datastore/ImageStoreHelper.java       |    9 +-
 .../image/db/ImageStoreDetailsDaoImpl.java      |    9 +-
 .../storage/volume/VolumeServiceImpl.java       |    6 +-
 .../src/com/cloud/cluster/ClusterManager.java   |    1 -
 .../com/cloud/cluster/ClusterManagerImpl.java   |    2 +-
 .../framework/config/ConfigDepot.java           |    4 +
 .../framework/config/impl/ConfigDepotImpl.java  |   60 +-
 .../src/com/cloud/utils/db/GenericDaoBase.java  |   38 +-
 .../com/cloud/utils/db/GenericDaoBaseTest.java  |  134 +
 .../framework/messagebus/MessageDispatcher.java |   62 +-
 .../jobs/AsyncJobExecutionContext.java          |   48 +-
 .../framework/jobs/dao/VmWorkJobDao.java        |    2 +
 .../framework/jobs/dao/VmWorkJobDaoImpl.java    |   93 +-
 .../jobs/impl/AsyncJobManagerImpl.java          |    4 +-
 framework/security/pom.xml                      |    8 +-
 .../spring-framework-security-core-context.xml  |    1 +
 .../framework/security/keys/KeysManager.java    |   38 +
 .../security/keys/KeysManagerImpl.java          |  127 +
 framework/spring/module/pom.xml                 |    1 +
 packaging/centos63/cloud.spec                   |    9 +-
 .../AgentShell/AgentService.Designer.cs         |    2 +-
 .../ServerResource/AgentShell/AgentService.cs   |    2 +-
 .../DotNet/ServerResource/AgentShell/App.config |    9 +-
 .../HypervResource/CloudStackTypes.cs           |   55 +-
 .../HypervResource/HypervResourceController.cs  |  180 +-
 .../HypervResource/IWmiCallsV2.cs               |    1 +
 .../ServerResource/HypervResource/Utils.cs      |   10 +
 .../ServerResource/HypervResource/WmiCallsV2.cs |   62 +
 plugins/hypervisors/hyperv/pom.xml              |    1 -
 .../hypervisor/hyperv/guru/HypervGuru.java      |  113 +
 .../hyperv/manager/HypervManager.java           |    1 +
 .../hyperv/manager/HypervManagerImpl.java       |   20 +-
 .../resource/HypervDirectConnectResource.java   |  401 ++-
 plugins/hypervisors/kvm/pom.xml                 |    2 -
 .../kvm/resource/LibvirtComputingResource.java  |  354 ++-
 .../hypervisor/kvm/resource/LibvirtVMDef.java   |    2 +
 .../kvm/storage/LibvirtStorageAdaptor.java      |   68 +-
 .../kvm/resource/LibvirtSecretDefTest.java      |   55 +
 .../kvm/resource/LibvirtStoragePoolDefTest.java |   84 +
 .../kvm/resource/LibvirtVMDefTest.java          |   25 +
 .../agent/manager/MockAgentManagerImpl.java     |    7 +
 .../cloud/hypervisor/vmware/LegacyZoneVO.java   |   10 +-
 .../hypervisor/vmware/VmwareCleanupMaid.java    |   11 -
 .../hypervisor/vmware/VmwareDatacenterVO.java   |   16 +-
 .../vmware/VmwareDatacenterZoneMapVO.java       |    2 +
 .../vmware/VmwareServerDiscoverer.java          |   30 +-
 .../vmware/manager/VmwareHostService.java       |    9 +-
 .../vmware/manager/VmwareManagerImpl.java       |   62 +-
 .../manager/VmwareStorageManagerImpl.java       |  170 +-
 .../vmware/resource/VmwareResource.java         | 2283 ++++--------------
 .../cloud/network/CiscoNexusVSMDeviceVO.java    |   38 +-
 .../network/element/CiscoNexusVSMElement.java   |    2 -
 .../VmwareSecondaryStorageResourceHandler.java  |   54 +-
 .../resource/VmwareStorageProcessor.java        |   44 +-
 .../motion/VmwareStorageMotionStrategy.java     |    6 +-
 .../vmware/resource/VmwareResourceTest.java     |    2 +-
 .../motion/VmwareStorageMotionStrategyTest.java |   15 +-
 plugins/hypervisors/xen/pom.xml                 |    2 -
 .../src/com/cloud/hypervisor/XenServerGuru.java |    6 +-
 .../xen/discoverer/XcpServerDiscoverer.java     |   11 +-
 .../xen/resource/CitrixResourceBase.java        | 1554 +++---------
 .../xen/resource/XenServer56Resource.java       |   44 +-
 .../xen/resource/XenServerConnectionPool.java   |  442 +---
 .../xen/resource/XenServerStorageProcessor.java |   16 +-
 .../motion/XenServerStorageMotionStrategy.java  |    8 +-
 .../resources/components-example.xml            |    1 -
 .../lb/ElasticLoadBalancerManagerImpl.java      |    9 +-
 .../network-elements/juniper-contrail/pom.xml   |    8 +-
 .../cloudstack/contrail/module.properties       |   18 +
 .../contrail/spring-contrail-context.xml        |   50 +
 .../management/ContrailElementImpl.java         |   82 +-
 .../contrail/management/ContrailGuru.java       |   53 +-
 .../contrail/management/ContrailManager.java    |   25 +-
 .../management/ContrailManagerImpl.java         |  254 +-
 .../contrail/management/ModelDatabase.java      |   22 +-
 .../contrail/management/ServerDBSyncImpl.java   |  214 +-
 .../management/ServerEventHandlerImpl.java      |   10 -
 .../contrail/management/ServiceManagerImpl.java |   24 +-
 .../contrail/model/NetworkPolicyModel.java      |  305 +++
 .../contrail/model/ServiceInstanceModel.java    |  116 +-
 .../contrail/model/VirtualMachineModel.java     |   38 +-
 .../contrail/model/VirtualNetworkModel.java     |   84 +-
 .../IntegrationTestConfiguration.java           |   78 +-
 .../management/ManagementServerMock.java        |   16 +-
 .../contrail/management/MockAccountManager.java |    3 -
 .../management/NetworkProviderTest.java         |    2 +-
 .../test/resources/commonContext.xml            |  126 +-
 .../network/resource/JuniperSrxResource.java    |    2 +-
 plugins/network-elements/nicira-nvp/pom.xml     |   45 +-
 .../META-INF/cloudstack/nvp/module.properties   |    3 +
 .../cloudstack/nvp/spring-nvp-context.xml       |   30 +-
 ...ortForwardingRulesOnLogicalRouterAnswer.java |    3 +
 ...rtForwardingRulesOnLogicalRouterCommand.java |    3 +
 ...ConfigurePublicIpsOnLogicalRouterAnswer.java |    3 +
 ...onfigurePublicIpsOnLogicalRouterCommand.java |    3 +
 ...gureStaticNatRulesOnLogicalRouterAnswer.java |    3 +
 ...ureStaticNatRulesOnLogicalRouterCommand.java |    3 +
 .../agent/api/CreateLogicalRouterAnswer.java    |    3 +
 .../agent/api/CreateLogicalRouterCommand.java   |    3 +
 .../agent/api/CreateLogicalSwitchAnswer.java    |    3 +
 .../agent/api/CreateLogicalSwitchCommand.java   |    3 +
 .../api/CreateLogicalSwitchPortAnswer.java      |    3 +
 .../api/CreateLogicalSwitchPortCommand.java     |    3 +
 .../agent/api/DeleteLogicalRouterAnswer.java    |    3 +
 .../agent/api/DeleteLogicalRouterCommand.java   |    3 +
 .../agent/api/DeleteLogicalSwitchAnswer.java    |    3 +
 .../agent/api/DeleteLogicalSwitchCommand.java   |    3 +
 .../api/DeleteLogicalSwitchPortAnswer.java      |    3 +
 .../api/DeleteLogicalSwitchPortCommand.java     |    3 +
 .../agent/api/FindLogicalSwitchPortAnswer.java  |    3 +
 .../agent/api/FindLogicalSwitchPortCommand.java |    3 +
 .../agent/api/StartupNiciraNvpCommand.java      |    3 +
 .../api/UpdateLogicalSwitchPortAnswer.java      |    3 +
 .../api/UpdateLogicalSwitchPortCommand.java     |    3 +
 .../api/commands/AddNiciraNvpDeviceCmd.java     |    3 +
 .../api/commands/DeleteNiciraNvpDeviceCmd.java  |    3 +
 .../ListNiciraNvpDeviceNetworksCmd.java         |    3 +
 .../api/commands/ListNiciraNvpDevicesCmd.java   |    3 +
 .../api/response/NiciraNvpDeviceResponse.java   |    3 +
 .../com/cloud/network/NiciraNvpDeviceVO.java    |    3 +
 .../cloud/network/NiciraNvpNicMappingVO.java    |    3 +
 .../cloud/network/NiciraNvpRouterMappingVO.java |    3 +
 .../src/com/cloud/network/dao/NiciraNvpDao.java |    3 +
 .../com/cloud/network/dao/NiciraNvpDaoImpl.java |    3 +
 .../network/dao/NiciraNvpNicMappingDao.java     |    3 +
 .../network/dao/NiciraNvpNicMappingDaoImpl.java |    3 +
 .../network/dao/NiciraNvpRouterMappingDao.java  |    3 +
 .../dao/NiciraNvpRouterMappingDaoImpl.java      |    3 +
 .../cloud/network/element/NiciraNvpElement.java |    3 +
 .../element/NiciraNvpElementService.java        |    3 +
 .../network/guru/NiciraNvpGuestNetworkGuru.java |    3 +
 .../network/nicira/AccessConfiguration.java     |    3 +
 .../com/cloud/network/nicira/AccessRule.java    |    3 +
 .../src/com/cloud/network/nicira/Acl.java       |    3 +
 .../src/com/cloud/network/nicira/AclRule.java   |    3 +
 .../com/cloud/network/nicira/Attachment.java    |    3 +
 .../network/nicira/ControlClusterStatus.java    |    3 +
 .../network/nicira/DestinationNatRule.java      |    3 +
 .../network/nicira/L3GatewayAttachment.java     |    3 +
 .../network/nicira/LogicalRouterConfig.java     |    3 +
 .../cloud/network/nicira/LogicalRouterPort.java |    3 +
 .../com/cloud/network/nicira/LogicalSwitch.java |    3 +
 .../cloud/network/nicira/LogicalSwitchPort.java |    3 +
 .../src/com/cloud/network/nicira/Match.java     |    3 +
 .../src/com/cloud/network/nicira/NatRule.java   |    3 +
 .../com/cloud/network/nicira/NiciraNvpApi.java  |    9 +-
 .../network/nicira/NiciraNvpApiException.java   |    3 +
 .../com/cloud/network/nicira/NiciraNvpList.java |    3 +
 .../com/cloud/network/nicira/NiciraNvpTag.java  |    3 +
 .../cloud/network/nicira/PatchAttachment.java   |    3 +
 .../com/cloud/network/nicira/RouterNextHop.java |    3 +
 .../com/cloud/network/nicira/RoutingConfig.java |    3 +
 .../cloud/network/nicira/SecurityProfile.java   |    3 +
 .../com/cloud/network/nicira/SecurityRule.java  |    3 +
 .../SingleDefaultRouteImplictRoutingConfig.java |    3 +
 .../com/cloud/network/nicira/SourceNatRule.java |    3 +
 .../network/nicira/TransportZoneBinding.java    |    3 +
 .../com/cloud/network/nicira/VifAttachment.java |    3 +
 .../network/resource/NiciraNvpResource.java     |    3 +
 .../network/element/NiciraNvpElementTest.java   |    3 +
 .../guru/NiciraNvpGuestNetworkGuruTest.java     |    3 +
 .../com/cloud/network/nicira/NatRuleTest.java   |    3 +
 .../cloud/network/nicira/NiciraNvpApiIT.java    |    3 +
 .../cloud/network/nicira/NiciraNvpApiTest.java  |    3 +
 .../com/cloud/network/nicira/NiciraTagTest.java |    3 +
 .../network/resource/NiciraNvpResourceTest.java |    3 +
 .../nicira-nvp/test/resources/config.properties |    2 +
 plugins/network-elements/opendaylight/pom.xml   |   36 +-
 .../opendaylight/OpendaylightElement.java       |   10 +-
 .../OpendaylightGuestNetworkGuru.java           |   10 +-
 .../agent/OpenDaylightControllerResource.java   |   10 +-
 .../OpenDaylightControllerResourceManager.java  |   10 +-
 ...enDaylightControllerResourceManagerImpl.java |   10 +-
 .../agent/commands/AddHypervisorCommand.java    |   10 +-
 .../agent/commands/ConfigureNetworkCommand.java |   10 +-
 .../agent/commands/ConfigurePortCommand.java    |   10 +-
 .../agent/commands/DestroyNetworkCommand.java   |   10 +-
 .../agent/commands/DestroyPortCommand.java      |   10 +-
 .../StartupOpenDaylightControllerCommand.java   |   10 +-
 .../agent/responses/AddHypervisorAnswer.java    |   10 +-
 .../agent/responses/ConfigureNetworkAnswer.java |   10 +-
 .../agent/responses/ConfigurePortAnswer.java    |   10 +-
 .../agent/responses/DestroyNetworkAnswer.java   |   10 +-
 .../agent/responses/DestroyPortAnswer.java      |   10 +-
 .../api/NeutronInvalidCredentialsException.java |   10 +-
 .../opendaylight/api/NeutronRestApi.java        |   10 +-
 .../api/NeutronRestApiException.java            |   10 +-
 .../opendaylight/api/NeutronRestFactory.java    |   10 +-
 .../commands/AddOpenDaylightControllerCmd.java  |   10 +-
 .../DeleteOpenDaylightControllerCmd.java        |   10 +-
 .../ListOpenDaylightControllersCmd.java         |   10 +-
 .../api/enums/NeutronNorthboundEnum.java        |   10 +-
 .../opendaylight/api/model/NeutronNetwork.java  |   10 +-
 .../api/model/NeutronNetworkWrapper.java        |   10 +-
 .../api/model/NeutronNetworksList.java          |   10 +-
 .../opendaylight/api/model/NeutronNode.java     |   10 +-
 .../api/model/NeutronNodeWrapper.java           |   10 +-
 .../api/model/NeutronNodesList.java             |   10 +-
 .../opendaylight/api/model/NeutronPort.java     |   10 +-
 .../api/model/NeutronPortWrapper.java           |   10 +-
 .../api/model/NeutronPortsList.java             |   10 +-
 .../opendaylight/api/resources/Action.java      |   14 +-
 .../NeutronNetworksNorthboundAction.java        |   10 +-
 .../resources/NeutronNodesNorthboundAction.java |   10 +-
 .../resources/NeutronPortsNorthboundAction.java |   10 +-
 .../OpenDaylightControllerResponse.java         |   10 +-
 .../dao/OpenDaylightControllerMappingDao.java   |   10 +-
 .../OpenDaylightControllerMappingDaoImpl.java   |   10 +-
 .../dao/OpenDaylightControllerVO.java           |   10 +-
 .../cloudstack/opendaylight/module.properties   |   10 +-
 .../spring-opendaylight-context.xml             |   10 +-
 .../opendaylight/api/test/NeutronEnumsTest.java |   10 +-
 .../api/test/NeutronNetworkAdapterTest.java     |   10 +-
 .../api/test/NeutronNodeAdapterTest.java        |   10 +-
 .../api/test/NeutronPortAdapterTest.java        |   10 +-
 .../opendaylight/api/test/NeutronRestApiIT.java |   10 +-
 .../api/test/NeutronRestApiTest.java            |   10 +-
 .../network-elements/stratosphere-ssp/pom.xml   |    2 +-
 plugins/pom.xml                                 |    1 +
 .../CloudStackImageStoreLifeCycleImpl.java      |   30 +-
 plugins/storage/volume/nexenta/pom.xml          |   47 +
 .../module.properties                           |   18 +
 .../spring-storage-volume-nexenta-context.xml   |   32 +
 .../driver/NexentaPrimaryDataStoreDriver.java   |  194 ++
 .../NexentaPrimaryDataStoreLifeCycle.java       |  176 ++
 .../datastore/provider/NexentaHostListener.java |   35 +
 .../NexentaPrimaryDataStoreProvider.java        |   81 +
 .../datastore/util/NexentaNmsClient.java        |  229 ++
 .../storage/datastore/util/NexentaNmsUrl.java   |   85 +
 .../datastore/util/NexentaStorAppliance.java    |  418 ++++
 .../storage/datastore/util/NexentaUtil.java     |  242 ++
 .../util/NexentaStorApplianceTest.java          |  337 +++
 .../storage/datastore/util/NexentaUtilTest.java |  135 ++
 .../driver/SolidfirePrimaryDataStoreDriver.java |    7 +
 .../cloudstack/ldap/LdapAuthenticator.java      |   15 +-
 .../cloud/server/auth/MD5UserAuthenticator.java |    9 +-
 .../server/auth/PlainTextUserAuthenticator.java |    9 +-
 .../auth/SHA256SaltedUserAuthenticator.java     |   10 +-
 .../server/auth/test/AuthenticatorTest.java     |   10 +-
 pom.xml                                         |  225 +-
 scripts/network/domr/bumpUpPriority.sh          |   47 -
 scripts/network/domr/call_dnsmasq.sh            |   27 -
 scripts/network/domr/call_firewall.sh           |   70 -
 scripts/network/domr/call_loadbalancer.sh       |  101 -
 scripts/network/domr/createipAlias.sh           |   26 -
 scripts/network/domr/deleteipAlias.sh           |   25 -
 scripts/network/domr/dhcp_entry.sh              |   82 -
 scripts/network/domr/s2s_vpn.sh                 |   29 -
 scripts/network/domr/save_password_to_domr.sh   |   73 -
 scripts/vm/hypervisor/xenserver/vhd-util        |  Bin 318977 -> 0 bytes
 scripts/vm/hypervisor/xenserver/vmops           |  128 +-
 scripts/vm/network/security_group.py            |    2 +-
 server/pom.xml                                  |    1 -
 .../spring-server-core-managers-context.xml     |    4 -
 server/src/com/cloud/acl/DomainChecker.java     |    4 +-
 .../impl/UserConcentratedAllocator.java         |   47 +-
 server/src/com/cloud/api/ApiDBUtils.java        |    8 -
 server/src/com/cloud/api/ApiDispatcher.java     |    2 +-
 server/src/com/cloud/api/ApiResponseHelper.java |   18 +-
 .../src/com/cloud/api/ApiSerializerHelper.java  |    2 +-
 server/src/com/cloud/api/ApiServer.java         |   36 +-
 server/src/com/cloud/api/ApiServlet.java        |    2 +-
 .../com/cloud/api/EncodedStringTypeAdapter.java |    2 +-
 server/src/com/cloud/api/doc/Alert.java         |   12 +-
 server/src/com/cloud/api/doc/Command.java       |   11 +-
 .../com/cloud/api/query/ViewResponseHelper.java |    3 +-
 .../api/query/dao/ImageStoreJoinDaoImpl.java    |   28 +-
 .../api/query/dao/StoragePoolJoinDaoImpl.java   |   13 +-
 .../api/query/dao/TemplateJoinDaoImpl.java      |   14 +-
 .../cloud/api/query/dao/UserVmJoinDaoImpl.java  |    6 +-
 .../com/cloud/api/query/vo/UserVmJoinVO.java    |   32 +-
 .../api/response/ApiResponseSerializer.java     |    2 +-
 server/src/com/cloud/configuration/Config.java  |    7 +-
 .../configuration/ConfigurationManagerImpl.java |   10 +-
 .../AgentBasedConsoleProxyManager.java          |   12 +-
 .../com/cloud/consoleproxy/AgentHookBase.java   |   32 +-
 .../consoleproxy/ConsoleProxyManagerImpl.java   |   84 +-
 .../src/com/cloud/dc/DedicatedResourceVO.java   |   15 +-
 .../deploy/DeploymentPlanningManagerImpl.java   |   31 +-
 .../src/com/cloud/event/ActionEventUtils.java   |    5 +-
 .../kvm/discoverer/LibvirtServerDiscoverer.java |   13 -
 .../network/ExternalIpAddressAllocator.java     |    9 +-
 .../com/cloud/network/IpAddressManagerImpl.java |   60 +-
 .../src/com/cloud/network/NetworkModelImpl.java |    7 +-
 .../com/cloud/network/NetworkServiceImpl.java   |   24 +-
 .../cloud/network/guru/ControlNetworkGuru.java  |    4 +-
 .../cloud/network/guru/PublicNetworkGuru.java   |   14 +-
 .../VirtualNetworkApplianceManagerImpl.java     |   23 +-
 .../security/SecurityGroupManagerImpl.java      |    7 +-
 .../com/cloud/network/vpc/VpcManagerImpl.java   |    4 +-
 .../com/cloud/projects/ProjectManagerImpl.java  |    1 +
 .../resourcelimit/ResourceLimitManagerImpl.java |    2 +-
 .../cloud/server/ConfigurationServerImpl.java   |    9 +-
 .../src/com/cloud/server/ManagementServer.java  |   11 +-
 .../com/cloud/server/ManagementServerImpl.java  |   80 +-
 server/src/com/cloud/server/StatsCollector.java |   10 +-
 .../cloud/server/auth/UserAuthenticator.java    |    8 +-
 .../cloud/servlet/ConsoleProxyClientParam.java  |   45 +-
 .../com/cloud/servlet/ConsoleProxyServlet.java  |   90 +-
 .../com/cloud/storage/VolumeApiServiceImpl.java |  119 +-
 .../secondary/SecondaryStorageManagerImpl.java  |    6 +-
 .../secondary/SecondaryStorageVmManager.java    |    2 +-
 .../cloud/tags/TaggedResourceManagerImpl.java   |  277 +--
 .../com/cloud/template/TemplateAdapterBase.java |    8 +-
 .../com/cloud/template/TemplateManagerImpl.java |    4 +-
 server/src/com/cloud/test/IPRangeConfig.java    |   29 +-
 .../src/com/cloud/user/AccountManagerImpl.java  |   29 +-
 .../cloud/uuididentity/IdentityServiceImpl.java |   44 -
 .../com/cloud/uuididentity/dao/IdentityDao.java |   38 -
 .../cloud/uuididentity/dao/IdentityDaoImpl.java |  241 --
 .../com/cloud/uuididentity/dao/IdentityVO.java  |   25 -
 server/src/com/cloud/vm/UserVmManagerImpl.java  |   44 +-
 .../vm/snapshot/VMSnapshotManagerImpl.java      |   81 +-
 .../com/cloud/vpc/MockNetworkManagerImpl.java   |    4 +-
 server/test/resources/network-mgr-component.xml |    1 -
 services/console-proxy-rdp/rdpconsole/pom.xml   |    1 -
 .../main/java/common/BufferedImageCanvas.java   |    6 +-
 .../java/common/adapter/AwtCanvasAdapter.java   |    4 +-
 .../src/main/java/rdpclient/RdpClient.java      |   15 +-
 .../adapter/AwtRdpKeyboardAdapter.java          |    2 +-
 services/console-proxy/server/pom.xml           |    5 +
 .../com/cloud/consoleproxy/ConsoleProxy.java    |   20 +-
 .../consoleproxy/ConsoleProxyAjaxHandler.java   |    6 +
 .../consoleproxy/ConsoleProxyClientParam.java   |   32 +-
 .../ConsoleProxyHttpHandlerHelper.java          |   34 +-
 .../consoleproxy/ConsoleProxyRdpClient.java     |  322 +++
 .../cloud/consoleproxy/rdp/KeysymToKeycode.java |  138 ++
 .../rdp/RdpBufferedImageCanvas.java             |  103 +
 .../resource/NfsSecondaryStorageResource.java   |    9 +-
 setup/db/db/schema-421to430.sql                 |  225 +-
 setup/db/db/schema-430to440.sql                 |    5 +-
 setup/db/templates.simulator.sql                |    8 +-
 setup/db/templates.sql                          |    2 +-
 .../debian/config/etc/init.d/cloud-early-config |    6 +-
 .../config/opt/cloud/bin/bumpup_priority.sh     |   19 +
 .../config/opt/cloud/bin/createIpAlias.sh       |  100 +
 .../config/opt/cloud/bin/deleteIpAlias.sh       |   60 +
 .../debian/config/opt/cloud/bin/dnsmasq.sh      |  130 +
 .../debian/config/opt/cloud/bin/edithosts.sh    |  234 ++
 .../config/opt/cloud/bin/firewall_egress.sh     |  187 ++
 .../config/opt/cloud/bin/firewall_ingress.sh    |  202 ++
 .../debian/config/opt/cloud/bin/firewall_nat.sh |  358 +++
 .../debian/config/opt/cloud/bin/ipassoc.sh      |    3 +-
 .../debian/config/opt/cloud/bin/loadbalancer.sh |  320 +++
 .../debian/config/root/bumpup_priority.sh       |   19 -
 .../patches/debian/config/root/createIpAlias.sh |  100 -
 .../patches/debian/config/root/deleteIpAlias.sh |   60 -
 systemvm/patches/debian/config/root/dnsmasq.sh  |  130 -
 .../patches/debian/config/root/edithosts.sh     |  234 --
 systemvm/patches/debian/config/root/firewall.sh |  358 ---
 .../debian/config/root/firewallRule_egress.sh   |  187 --
 .../patches/debian/config/root/firewall_rule.sh |  202 --
 .../patches/debian/config/root/loadbalancer.sh  |  320 ---
 systemvm/patches/debian/config/root/userdata.py |   92 -
 systemvm/patches/debian/config/root/userdata.sh |  165 --
 systemvm/pom.xml                                |    3 -
 tools/appliance/build.sh                        |   14 +-
 tools/appliance/convert/Convert.class           |  Bin 0 -> 984 bytes
 tools/appliance/convert/Convert.java            |   36 +
 tools/appliance/convert_ovf_vbox_to_esx.xslt    |   42 +
 tools/marvin/pom.xml                            |   14 +-
 tools/transifex/.tx/config                      |    4 +-
 tools/transifex/sync-transifex-ui.sh            |    2 +-
 ui/css/cloudstack3.css                          |    1 -
 ui/images/infrastructure-icons.png              |  Bin 62257 -> 62059 bytes
 ui/index.jsp                                    |    4 +-
 ui/scripts/instanceWizard.js                    |    6 +-
 ui/scripts/instances.js                         |   31 +-
 ui/scripts/network.js                           |   24 +-
 ui/scripts/plugins.js                           |   49 +-
 ui/scripts/sharedFunctions.js                   |    4 +-
 ui/scripts/system.js                            |  113 +-
 ui/scripts/ui-custom/zoneWizard.js              |    5 +-
 ui/scripts/ui/widgets/cloudBrowser.js           |   11 +-
 ui/scripts/ui/widgets/listView.js               |   10 +-
 ui/tests/index.html                             |   71 +-
 ui/tests/test.cloudBrowser.js                   |  116 -
 ui/tests/test.core.js                           |   79 -
 ui/tests/test.detailView.js                     |  799 ------
 ui/tests/test.listView.js                       |  527 ----
 ui/tests/test.multiEdit.js                      |   55 -
 ui/tests/test.notifications.js                  |  107 -
 ui/tests/test.widget.listView.js                |  245 ++
 utils/src/com/cloud/utils/ExecutionResult.java  |   44 +
 utils/src/com/cloud/utils/net/NetUtils.java     |   13 +-
 .../cloud/utils/script/OutputInterpreter.java   |    4 +-
 utils/src/com/cloud/utils/script/Script.java    |   15 +-
 .../cloud/hypervisor/vmware/mo/ClusterMO.java   |   28 +-
 .../vmware/mo/CustomFieldsManagerMO.java        |    2 +-
 .../cloud/hypervisor/vmware/mo/DatastoreMO.java |    9 +-
 .../vmware/mo/DistributedVirtualSwitchMO.java   |    3 +-
 .../vmware/mo/HostDatastoreSystemMO.java        |    2 +-
 .../vmware/mo/HostFirewallSystemMO.java         |    1 +
 .../com/cloud/hypervisor/vmware/mo/HostMO.java  |   52 +-
 .../vmware/mo/HostNetworkSystemMO.java          |    1 +
 .../vmware/mo/HypervisorHostHelper.java         |   54 +-
 .../vmware/mo/LicenseAssignmentManagerMO.java   |    4 +-
 .../hypervisor/vmware/mo/LicenseManagerMO.java  |    1 +
 .../cloud/hypervisor/vmware/mo/NetworkMO.java   |    2 +-
 .../hypervisor/vmware/mo/PerfManagerMO.java     |    6 +-
 .../vmware/mo/VirtualDiskManagerMO.java         |    3 +-
 .../hypervisor/vmware/mo/VirtualMachineMO.java  |   75 +-
 .../hypervisor/vmware/util/VmwareClient.java    |   10 +-
 .../hypervisor/vmware/util/VmwareContext.java   |   15 +-
 .../vmware/util/VmwareContextPool.java          |   35 -
 .../vmware/util/VmwareGuestOsMapper.java        |    4 +
 .../hypervisor/vmware/util/VmwareHelper.java    |   87 +-
 467 files changed, 15951 insertions(+), 13117 deletions(-)
----------------------------------------------------------------------



[26/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
findbugs: null-checks(cherry picked from commit
c58e509924e97dfced80981da5c27b9f3aae9b33)


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/44bc2beb
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/44bc2beb
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/44bc2beb

Branch: refs/heads/marvin
Commit: 44bc2beb143992b10ad9a92642dfa1882e48c4d8
Parents: fe262ca
Author: Daan Hoogland <da...@onecht.net>
Authored: Tue Jan 28 15:44:04 2014 +0100
Committer: Daan Hoogland <dh...@schubergphilis.com>
Committed: Tue Jan 28 15:44:04 2014 +0100

----------------------------------------------------------------------
 server/src/com/cloud/acl/DomainChecker.java | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/44bc2beb/server/src/com/cloud/acl/DomainChecker.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/acl/DomainChecker.java b/server/src/com/cloud/acl/DomainChecker.java
index 2e43da3..31b273f 100755
--- a/server/src/com/cloud/acl/DomainChecker.java
+++ b/server/src/com/cloud/acl/DomainChecker.java
@@ -307,7 +307,9 @@ public class DomainChecker extends AdapterBase implements SecurityChecker {
                         }
                     }
                     //didn't find in upper tree
-                    if (zoneDomainRecord.getPath().contains(accountDomainRecord.getPath())) {
+                    if (zoneDomainRecord != null &&
+                            accountDomainRecord != null &&
+                            zoneDomainRecord.getPath().contains(accountDomainRecord.getPath())) {
                         return true;
                     }
                 }


[44/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
CLOUDSTACK-5971:Templates created from a snapshots can't be copied to
other zones.


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/a26c8117
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/a26c8117
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/a26c8117

Branch: refs/heads/marvin
Commit: a26c81178b4db78ad4936fb90a41444fc71eea83
Parents: bd2acd1
Author: Min Chen <mi...@citrix.com>
Authored: Tue Jan 28 13:09:57 2014 -0800
Committer: Min Chen <mi...@citrix.com>
Committed: Tue Jan 28 14:49:58 2014 -0800

----------------------------------------------------------------------
 .../apache/cloudstack/storage/image/TemplateServiceImpl.java | 8 ++++++++
 1 file changed, 8 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/a26c8117/engine/storage/image/src/org/apache/cloudstack/storage/image/TemplateServiceImpl.java
----------------------------------------------------------------------
diff --git a/engine/storage/image/src/org/apache/cloudstack/storage/image/TemplateServiceImpl.java b/engine/storage/image/src/org/apache/cloudstack/storage/image/TemplateServiceImpl.java
index 2c82914..a8dec09 100644
--- a/engine/storage/image/src/org/apache/cloudstack/storage/image/TemplateServiceImpl.java
+++ b/engine/storage/image/src/org/apache/cloudstack/storage/image/TemplateServiceImpl.java
@@ -75,6 +75,7 @@ import com.cloud.dc.dao.DataCenterDao;
 import com.cloud.exception.ResourceAllocationException;
 import com.cloud.hypervisor.Hypervisor.HypervisorType;
 import com.cloud.storage.DataStoreRole;
+import com.cloud.storage.Storage.ImageFormat;
 import com.cloud.storage.Storage.TemplateType;
 import com.cloud.storage.StoragePool;
 import com.cloud.storage.VMTemplateStorageResourceAssoc;
@@ -721,6 +722,13 @@ public class TemplateServiceImpl implements TemplateService {
 
     @Override
     public AsyncCallFuture<TemplateApiResult> copyTemplate(TemplateInfo srcTemplate, DataStore destStore) {
+        // for vmware template, we need to check if ova packing is needed, since template created from snapshot does not have .ova file
+        // we invoke createEntityExtractURL to trigger ova packing. Ideally, we can directly use extractURL to pass to following createTemplate. 
+        // Need to understand what is the background to use two different urls for copy and extract.
+        if (srcTemplate.getFormat() == ImageFormat.OVA){
+            ImageStoreEntity tmpltStore = (ImageStoreEntity)srcTemplate.getDataStore();
+            tmpltStore.createEntityExtractUrl(srcTemplate.getInstallPath(), srcTemplate.getFormat(), srcTemplate);
+        }
         // generate a URL from source template ssvm to download to destination data store
         String url = generateCopyUrl(srcTemplate);
         if (url == null) {


[17/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
CLOUDSTACK-5965. VM displayname is not returned by API.
If user doesn't supply a display name during VM launch, default it to VM name(uuid) in listVM response.


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/95bd04e4
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/95bd04e4
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/95bd04e4

Branch: refs/heads/marvin
Commit: 95bd04e449c346aec0d9bdc30061ad27ea70d75b
Parents: 997c0f8
Author: Likitha Shetty <li...@citrix.com>
Authored: Tue Jan 28 16:01:19 2014 +0530
Committer: Likitha Shetty <li...@citrix.com>
Committed: Tue Jan 28 16:43:12 2014 +0530

----------------------------------------------------------------------
 server/src/com/cloud/api/query/dao/UserVmJoinDaoImpl.java | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/95bd04e4/server/src/com/cloud/api/query/dao/UserVmJoinDaoImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/query/dao/UserVmJoinDaoImpl.java b/server/src/com/cloud/api/query/dao/UserVmJoinDaoImpl.java
index 07449a2..08478e2 100644
--- a/server/src/com/cloud/api/query/dao/UserVmJoinDaoImpl.java
+++ b/server/src/com/cloud/api/query/dao/UserVmJoinDaoImpl.java
@@ -99,7 +99,11 @@ public class UserVmJoinDaoImpl extends GenericDaoBase<UserVmJoinVO, Long> implem
         userVmResponse.setId(userVm.getUuid());
         userVmResponse.setName(userVm.getName());
 
-        userVmResponse.setDisplayName(userVm.getDisplayName());
+        if (userVm.getDisplayName() != null) {
+            userVmResponse.setDisplayName(userVm.getDisplayName());
+        } else {
+            userVmResponse.setDisplayName(userVm.getName());
+        }
 
         if (userVm.getAccountType() == Account.ACCOUNT_TYPE_PROJECT) {
             userVmResponse.setProjectId(userVm.getProjectUuid());


[16/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
Fix the exclusion for opensaml1, this should take care of the repository dependencies causing grief on the jenkins slaves.


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/997c0f8d
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/997c0f8d
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/997c0f8d

Branch: refs/heads/marvin
Commit: 997c0f8d154cf8d9530ebb3b96c30170faa454c0
Parents: 3bd38eb
Author: Hugo Trippaers <ht...@schubergphilis.com>
Authored: Tue Jan 28 10:33:31 2014 +0100
Committer: Hugo Trippaers <ht...@schubergphilis.com>
Committed: Tue Jan 28 10:33:31 2014 +0100

----------------------------------------------------------------------
 awsapi/pom.xml | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/997c0f8d/awsapi/pom.xml
----------------------------------------------------------------------
diff --git a/awsapi/pom.xml b/awsapi/pom.xml
index d9f5627..4a6c89c 100644
--- a/awsapi/pom.xml
+++ b/awsapi/pom.xml
@@ -142,7 +142,7 @@
         </exclusion>
         <exclusion>
           <groupId>org.opensaml</groupId>
-          <artifactId>opensaml</artifactId>
+          <artifactId>opensaml1</artifactId>
         </exclusion>
       </exclusions>
     </dependency>
@@ -162,7 +162,7 @@
         </exclusion>
         <exclusion>
           <groupId>org.opensaml</groupId>
-          <artifactId>opensaml</artifactId>
+          <artifactId>opensaml1</artifactId>
         </exclusion>
       </exclusions>
     </dependency>
@@ -178,7 +178,7 @@
         </exclusion>
         <exclusion>
           <groupId>org.opensaml</groupId>
-          <artifactId>opensaml</artifactId>
+          <artifactId>opensaml1</artifactId>
         </exclusion>
       </exclusions>
     </dependency>
@@ -194,7 +194,7 @@
         </exclusion>
         <exclusion>
           <groupId>org.opensaml</groupId>
-          <artifactId>opensaml</artifactId>
+          <artifactId>opensaml1</artifactId>
         </exclusion>
       </exclusions>
     </dependency>
@@ -210,7 +210,7 @@
         </exclusion>
         <exclusion>
           <groupId>org.opensaml</groupId>
-          <artifactId>opensaml</artifactId>
+          <artifactId>opensaml1</artifactId>
         </exclusion>
       </exclusions>
     </dependency>


[05/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
Fix trailing whitespace from cherry-pick


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/f77974b5
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/f77974b5
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/f77974b5

Branch: refs/heads/marvin
Commit: f77974b5d2e8c2164327da9f7cc744a38f8959a9
Parents: cfe7864
Author: Min Chen <mi...@citrix.com>
Authored: Mon Jan 27 13:31:13 2014 -0800
Committer: Min Chen <mi...@citrix.com>
Committed: Mon Jan 27 13:31:35 2014 -0800

----------------------------------------------------------------------
 server/src/com/cloud/template/TemplateAdapterBase.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f77974b5/server/src/com/cloud/template/TemplateAdapterBase.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/template/TemplateAdapterBase.java b/server/src/com/cloud/template/TemplateAdapterBase.java
index 0ac434c..e399912 100755
--- a/server/src/com/cloud/template/TemplateAdapterBase.java
+++ b/server/src/com/cloud/template/TemplateAdapterBase.java
@@ -181,7 +181,7 @@ public abstract class TemplateAdapterBase extends AdapterBase implements Templat
         if (stores != null && stores.size() > 0) {
             isRegionStore = true;
         }
-        
+
         if (!isAdmin && zoneId == null && !isRegionStore ) {
             // domain admin and user should also be able to register template on a region store
             throw new InvalidParameterValueException("Please specify a valid zone Id.");


[27/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
findbugs: byte[].toString -> Arrays.toString(byte[])(cherry picked from commit 23a3d99fc0836839a88584d7aa6a978d99c5d126)

Signed-off-by: Daan Hoogland <dh...@schubergphilis.com>


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/a16759a9
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/a16759a9
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/a16759a9

Branch: refs/heads/marvin
Commit: a16759a9b17fb7b2bbdda3595cd11c5bc5b83c79
Parents: 44bc2be
Author: Daan Hoogland <da...@onecht.net>
Authored: Sun Jan 26 16:38:53 2014 +0100
Committer: Daan Hoogland <dh...@schubergphilis.com>
Committed: Tue Jan 28 15:51:08 2014 +0100

----------------------------------------------------------------------
 server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/a16759a9/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java b/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
index 8d76b8a..8138887 100755
--- a/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
+++ b/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
@@ -17,6 +17,7 @@
 package com.cloud.consoleproxy;
 
 import java.nio.charset.Charset;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -483,7 +484,7 @@ public class ConsoleProxyManagerImpl extends ManagerBase implements ConsoleProxy
             byte[] details = proxy.getSessionDetails();
             status = gson.fromJson(details != null ? new String(details, Charset.forName("US-ASCII")) : null, ConsoleProxyStatus.class);
         } catch (Throwable e) {
-            s_logger.warn("Unable to parse proxy session details : " + proxy.getSessionDetails());
+            s_logger.warn("Unable to parse proxy session details : " + Arrays.toString(proxy.getSessionDetails()));
         }
 
         if (status != null && status.getConnections() != null) {


[25/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
findbugs: retrieve the objects to remove from the collection(s)

Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/fe262caa
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/fe262caa
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/fe262caa

Branch: refs/heads/marvin
Commit: fe262caa7561c23098cc8fc9674ff8d0e59e1c25
Parents: d7ee7a7
Author: Daan Hoogland <dh...@schubergphilis.com>
Authored: Tue Jan 28 15:36:40 2014 +0100
Committer: Daan Hoogland <dh...@schubergphilis.com>
Committed: Tue Jan 28 15:36:40 2014 +0100

----------------------------------------------------------------------
 .../deploy/DeploymentPlanningManagerImpl.java   | 23 ++++++++++++--------
 1 file changed, 14 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/fe262caa/server/src/com/cloud/deploy/DeploymentPlanningManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/deploy/DeploymentPlanningManagerImpl.java b/server/src/com/cloud/deploy/DeploymentPlanningManagerImpl.java
index ec20067..35a0b39 100644
--- a/server/src/com/cloud/deploy/DeploymentPlanningManagerImpl.java
+++ b/server/src/com/cloud/deploy/DeploymentPlanningManagerImpl.java
@@ -165,7 +165,7 @@ public class DeploymentPlanningManagerImpl extends ManagerBase implements Deploy
     }
 
     public void setStoragePoolAllocators(List<StoragePoolAllocator> storagePoolAllocators) {
-        this._storagePoolAllocators = storagePoolAllocators;
+        _storagePoolAllocators = storagePoolAllocators;
     }
 
     protected List<HostAllocator> _hostAllocators;
@@ -175,7 +175,7 @@ public class DeploymentPlanningManagerImpl extends ManagerBase implements Deploy
     }
 
     public void setHostAllocators(List<HostAllocator> hostAllocators) {
-        this._hostAllocators = hostAllocators;
+        _hostAllocators = hostAllocators;
     }
 
     @Inject
@@ -221,7 +221,7 @@ public class DeploymentPlanningManagerImpl extends ManagerBase implements Deploy
     }
 
     public void setPlanners(List<DeploymentPlanner> planners) {
-        this._planners = planners;
+        _planners = planners;
     }
 
     protected List<AffinityGroupProcessor> _affinityProcessors;
@@ -231,7 +231,7 @@ public class DeploymentPlanningManagerImpl extends ManagerBase implements Deploy
     }
 
     public void setAffinityGroupProcessors(List<AffinityGroupProcessor> affinityProcessors) {
-        this._affinityProcessors = affinityProcessors;
+        _affinityProcessors = affinityProcessors;
     }
 
     @Override
@@ -1142,9 +1142,9 @@ public class DeploymentPlanningManagerImpl extends ManagerBase implements Deploy
                 List<StoragePool> suitablePools = new ArrayList<StoragePool>();
                 StoragePool pool = null;
                 if (toBeCreated.getPoolId() != null) {
-                    pool = (StoragePool)this.dataStoreMgr.getPrimaryDataStore(toBeCreated.getPoolId());
+                    pool = (StoragePool)dataStoreMgr.getPrimaryDataStore(toBeCreated.getPoolId());
                 } else {
-                    pool = (StoragePool)this.dataStoreMgr.getPrimaryDataStore(plan.getPoolId());
+                    pool = (StoragePool)dataStoreMgr.getPrimaryDataStore(plan.getPoolId());
                 }
 
                 if (!pool.isInMaintenance()) {
@@ -1156,7 +1156,7 @@ public class DeploymentPlanningManagerImpl extends ManagerBase implements Deploy
                         if (plan.getDataCenterId() == exstPoolDcId && plan.getPodId() == exstPoolPodId && plan.getClusterId() == exstPoolClusterId) {
                             canReusePool = true;
                         } else if (plan.getDataCenterId() == exstPoolDcId) {
-                            DataStore dataStore = this.dataStoreMgr.getPrimaryDataStore(pool.getId());
+                            DataStore dataStore = dataStoreMgr.getPrimaryDataStore(pool.getId());
                             if (dataStore != null && dataStore.getScope() != null && dataStore.getScope().getScopeType() == ScopeType.ZONE) {
                                 canReusePool = true;
                             }
@@ -1259,9 +1259,14 @@ public class DeploymentPlanningManagerImpl extends ManagerBase implements Deploy
             }
         }
 
-        if (suitableVolumeStoragePools.values() != null) {
-            poolsToAvoidOutput.removeAll(suitableVolumeStoragePools.values());
+        HashSet<Long> toRemove = new HashSet<Long>();
+        for (List<StoragePool> lsp : suitableVolumeStoragePools.values()) {
+            for (StoragePool sp : lsp) {
+                toRemove.add(sp.getId());
+            }
         }
+        poolsToAvoidOutput.removeAll(toRemove);
+
         if (avoid.getPoolsToAvoid() != null) {
             avoid.getPoolsToAvoid().addAll(poolsToAvoidOutput);
         }


[18/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
findbugs: nullpointer dereference guarded(cherry picked from commit
43ba36f97950aa8d09399a28bb50c6a22209f15e)


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/4f6638d7
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/4f6638d7
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/4f6638d7

Branch: refs/heads/marvin
Commit: 4f6638d7c7436cd638c653d0e08e6fa2023420e8
Parents: 997c0f8
Author: Daan Hoogland <da...@onecht.net>
Authored: Tue Jan 28 13:49:14 2014 +0100
Committer: Daan Hoogland <dh...@schubergphilis.com>
Committed: Tue Jan 28 13:49:14 2014 +0100

----------------------------------------------------------------------
 .../impl/UserConcentratedAllocator.java         | 47 ++++++++++----------
 1 file changed, 24 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/4f6638d7/server/src/com/cloud/agent/manager/allocator/impl/UserConcentratedAllocator.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/agent/manager/allocator/impl/UserConcentratedAllocator.java b/server/src/com/cloud/agent/manager/allocator/impl/UserConcentratedAllocator.java
index b67eccb..946eee6 100755
--- a/server/src/com/cloud/agent/manager/allocator/impl/UserConcentratedAllocator.java
+++ b/server/src/com/cloud/agent/manager/allocator/impl/UserConcentratedAllocator.java
@@ -243,35 +243,36 @@ public class UserConcentratedAllocator extends AdapterBase implements PodAllocat
         // List<VMInstanceVO> vms = _vmInstanceDao.listByLastHostId(hostId);
         List<VMInstanceVO> vms = null;
         long usedCapacity = 0;
-        for (VMInstanceVO vm : vms) {
-            if (skipCalculation(vm)) {
-                continue;
-            }
-
-            ServiceOffering so = null;
-
-            if (vm.getType() == VirtualMachine.Type.User) {
-                UserVmVO userVm = _vmDao.findById(vm.getId());
-                if (userVm == null) {
+        if (vms != null) {
+            for (VMInstanceVO vm : vms) {
+                if (skipCalculation(vm)) {
                     continue;
                 }
-            }
 
-            so = _offeringDao.findById(vm.getId(), vm.getServiceOfferingId());
+                ServiceOffering so = null;
 
-            if (capacityType == Capacity.CAPACITY_TYPE_MEMORY) {
-                usedCapacity += so.getRamSize() * 1024L * 1024L;
-
-                if (s_logger.isDebugEnabled()) {
-                    s_logger.debug("Counting memory capacity used by vm: " + vm.getId() + ", size: " + so.getRamSize() + "MB, host: " + hostId + ", currently counted: " +
-                        usedCapacity + " Bytes");
+                if (vm.getType() == VirtualMachine.Type.User) {
+                    UserVmVO userVm = _vmDao.findById(vm.getId());
+                    if (userVm == null) {
+                        continue;
+                    }
                 }
-            } else if (capacityType == Capacity.CAPACITY_TYPE_CPU) {
-                usedCapacity += so.getCpu() * so.getSpeed();
 
-                if (s_logger.isDebugEnabled()) {
-                    s_logger.debug("Counting cpu capacity used by vm: " + vm.getId() + ", cpu: " + so.getCpu() + ", speed: " + so.getSpeed() + ", currently counted: " +
-                        usedCapacity + " Bytes");
+                so = _offeringDao.findById(vm.getId(), vm.getServiceOfferingId());
+                if (capacityType == Capacity.CAPACITY_TYPE_MEMORY) {
+                    usedCapacity += so.getRamSize() * 1024L * 1024L;
+
+                    if (s_logger.isDebugEnabled()) {
+                        s_logger.debug("Counting memory capacity used by vm: " + vm.getId() + ", size: " + so.getRamSize() + "MB, host: " + hostId + ", currently counted: " +
+                                usedCapacity + " Bytes");
+                    }
+                } else if (capacityType == Capacity.CAPACITY_TYPE_CPU) {
+                    usedCapacity += so.getCpu() * so.getSpeed();
+
+                    if (s_logger.isDebugEnabled()) {
+                        s_logger.debug("Counting cpu capacity used by vm: " + vm.getId() + ", cpu: " + so.getCpu() + ", speed: " + so.getSpeed() + ", currently counted: " +
+                                usedCapacity + " Bytes");
+                    }
                 }
             }
         }


[48/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
Give findbugs some more memory or it will fail with an OOM on awsapi


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/1c57dd7b
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/1c57dd7b
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/1c57dd7b

Branch: refs/heads/marvin
Commit: 1c57dd7bcd4c21fa9c55b8a488474243c458347d
Parents: 3ac181e
Author: Hugo Trippaers <ht...@schubergphilis.com>
Authored: Wed Jan 29 09:16:23 2014 +0100
Committer: Hugo Trippaers <ht...@schubergphilis.com>
Committed: Wed Jan 29 09:17:01 2014 +0100

----------------------------------------------------------------------
 pom.xml | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/1c57dd7b/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 01ddf11..d8c8851 100644
--- a/pom.xml
+++ b/pom.xml
@@ -871,6 +871,7 @@
             <threshold>High</threshold>
             <xmlOutput>true</xmlOutput>
             <failOnError>false</failOnError>
+            <maxHeap>1024</maxHeap>
           </configuration>
           <executions>
             <execution>


[33/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
findbugs: removed obfuscating fields(cherry picked from commit
9495c68c1378e379880433d45ec43bfda75ec3f9)

Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/53777c95
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/53777c95
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/53777c95

Branch: refs/heads/marvin
Commit: 53777c9523aad0c4544811194f8fe44b7e9958d4
Parents: be21822
Author: Daan Hoogland <da...@onecht.net>
Authored: Tue Jan 28 17:42:17 2014 +0100
Committer: Daan Hoogland <dh...@schubergphilis.com>
Committed: Tue Jan 28 17:42:17 2014 +0100

----------------------------------------------------------------------
 .../src/com/cloud/network/ExternalIpAddressAllocator.java   | 9 ++++-----
 server/src/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java | 1 -
 2 files changed, 4 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/53777c95/server/src/com/cloud/network/ExternalIpAddressAllocator.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/ExternalIpAddressAllocator.java b/server/src/com/cloud/network/ExternalIpAddressAllocator.java
index 2b84231..3cf3580 100644
--- a/server/src/com/cloud/network/ExternalIpAddressAllocator.java
+++ b/server/src/com/cloud/network/ExternalIpAddressAllocator.java
@@ -40,7 +40,6 @@ import com.cloud.utils.exception.CloudRuntimeException;
 @Local(value = IpAddrAllocator.class)
 public class ExternalIpAddressAllocator extends AdapterBase implements IpAddrAllocator {
     private static final Logger s_logger = Logger.getLogger(ExternalIpAddressAllocator.class);
-    String _name;
     @Inject
     ConfigurationDao _configDao = null;
     @Inject
@@ -52,10 +51,10 @@ public class ExternalIpAddressAllocator extends AdapterBase implements IpAddrAll
 
     @Override
     public IpAddr getPrivateIpAddress(String macAddr, long dcId, long podId) {
-        if (_externalIpAllocatorUrl == null || this._externalIpAllocatorUrl.equalsIgnoreCase("")) {
+        if (_externalIpAllocatorUrl == null || _externalIpAllocatorUrl.equalsIgnoreCase("")) {
             return new IpAddr();
         }
-        String urlString = this._externalIpAllocatorUrl + "?command=getIpAddr&mac=" + macAddr + "&dc=" + dcId + "&pod=" + podId;
+        String urlString = _externalIpAllocatorUrl + "?command=getIpAddr&mac=" + macAddr + "&dc=" + dcId + "&pod=" + podId;
         s_logger.debug("getIP:" + urlString);
 
         BufferedReader in = null;
@@ -101,11 +100,11 @@ public class ExternalIpAddressAllocator extends AdapterBase implements IpAddrAll
     @Override
     public boolean releasePrivateIpAddress(String ip, long dcId, long podId) {
         /*TODO: call API to release the ip address from external DHCP server*/
-        if (_externalIpAllocatorUrl == null || this._externalIpAllocatorUrl.equalsIgnoreCase("")) {
+        if (_externalIpAllocatorUrl == null || _externalIpAllocatorUrl.equalsIgnoreCase("")) {
             return false;
         }
 
-        String urlString = this._externalIpAllocatorUrl + "?command=releaseIpAddr&ip=" + ip + "&dc=" + dcId + "&pod=" + podId;
+        String urlString = _externalIpAllocatorUrl + "?command=releaseIpAddr&ip=" + ip + "&dc=" + dcId + "&pod=" + podId;
 
         s_logger.debug("releaseIP:" + urlString);
         BufferedReader in = null;

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/53777c95/server/src/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java b/server/src/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java
index 1e3926d..78652a2 100644
--- a/server/src/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java
+++ b/server/src/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java
@@ -105,7 +105,6 @@ public class VMSnapshotManagerImpl extends ManagerBase implements VMSnapshotMana
 
     public static final String VM_WORK_JOB_HANDLER = VMSnapshotManagerImpl.class.getSimpleName();
 
-    String _name;
     @Inject
     VMInstanceDao _vmInstanceDao;
     @Inject VMSnapshotDao _vmSnapshotDao;


[31/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
findbugs: nullpointer guards and wrappertype comparisons(cherry picked
from commit 791b7f8f7fe8f7d342e46fbb61a3f421e87fca59)

Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/5d8e8fd3
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/5d8e8fd3
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/5d8e8fd3

Branch: refs/heads/marvin
Commit: 5d8e8fd3a2e8ffe9a2147129a9715a29cb4ce064
Parents: 9edeb24
Author: Daan Hoogland <da...@onecht.net>
Authored: Tue Jan 28 16:46:05 2014 +0100
Committer: Daan Hoogland <dh...@schubergphilis.com>
Committed: Tue Jan 28 16:46:05 2014 +0100

----------------------------------------------------------------------
 .../com/cloud/resourcelimit/ResourceLimitManagerImpl.java |  2 +-
 server/src/com/cloud/storage/VolumeApiServiceImpl.java    |  4 ++--
 server/src/com/cloud/vm/UserVmManagerImpl.java            | 10 +++++-----
 3 files changed, 8 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5d8e8fd3/server/src/com/cloud/resourcelimit/ResourceLimitManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/resourcelimit/ResourceLimitManagerImpl.java b/server/src/com/cloud/resourcelimit/ResourceLimitManagerImpl.java
index 3a7251b..13c3051 100755
--- a/server/src/com/cloud/resourcelimit/ResourceLimitManagerImpl.java
+++ b/server/src/com/cloud/resourcelimit/ResourceLimitManagerImpl.java
@@ -877,7 +877,7 @@ public class ResourceLimitManagerImpl extends ManagerBase implements ResourceLim
                 }
                 _resourceCountDao.setResourceCount(accountId, ResourceOwnerType.Account, type, (newCount == null) ? 0 : newCount.longValue());
 
-                if (oldCount != newCount) {
+                if (!Long.valueOf(oldCount).equals(newCount)) {
                     s_logger.info("Discrepency in the resource count " + "(original count=" + oldCount + " correct count = " + newCount + ") for type " + type +
                         " for account ID " + accountId + " is fixed during resource count recalculation.");
                 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5d8e8fd3/server/src/com/cloud/storage/VolumeApiServiceImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/storage/VolumeApiServiceImpl.java b/server/src/com/cloud/storage/VolumeApiServiceImpl.java
index a79d8b4..55582c6 100644
--- a/server/src/com/cloud/storage/VolumeApiServiceImpl.java
+++ b/server/src/com/cloud/storage/VolumeApiServiceImpl.java
@@ -449,8 +449,8 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic
                 volume.setPoolId(null);
                 volume.setDataCenterId(zoneId);
                 volume.setPodId(null);
-                volume.setAccountId(owner.getAccountId());
-                volume.setDomainId(owner.getDomainId());
+                volume.setAccountId((owner == null) ? null : owner.getAccountId());
+                volume.setDomainId((owner == null) ? Domain.ROOT_DOMAIN : owner.getDomainId());
                 long diskOfferingId = _diskOfferingDao.findByUniqueName("Cloud.com-Custom").getId();
                 volume.setDiskOfferingId(diskOfferingId);
                 // volume.setSize(size);

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5d8e8fd3/server/src/com/cloud/vm/UserVmManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java b/server/src/com/cloud/vm/UserVmManagerImpl.java
index 85f3527..1dcaf79 100755
--- a/server/src/com/cloud/vm/UserVmManagerImpl.java
+++ b/server/src/com/cloud/vm/UserVmManagerImpl.java
@@ -34,6 +34,9 @@ import javax.ejb.Local;
 import javax.inject.Inject;
 import javax.naming.ConfigurationException;
 
+import org.apache.commons.codec.binary.Base64;
+import org.apache.log4j.Logger;
+
 import org.apache.cloudstack.acl.ControlledEntity.ACLType;
 import org.apache.cloudstack.acl.SecurityChecker.AccessType;
 import org.apache.cloudstack.affinity.AffinityGroupService;
@@ -79,8 +82,6 @@ import org.apache.cloudstack.managed.context.ManagedContextRunnable;
 import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao;
 import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
 import org.apache.cloudstack.storage.to.TemplateObjectTO;
-import org.apache.commons.codec.binary.Base64;
-import org.apache.log4j.Logger;
 
 import com.cloud.agent.AgentManager;
 import com.cloud.agent.api.Answer;
@@ -458,7 +459,6 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
     protected boolean _dailyOrHourly = false;
     private int capacityReleaseInterval;
 
-    protected String _name;
     protected String _instance;
     protected String _zone;
     protected boolean _instanceNameFlag;
@@ -4004,13 +4004,13 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
 
         //if hosts are dedicated to different account/domains, raise an alert
         if (srcExplDedicated && destExplDedicated) {
-            if ((accountOfDedicatedHost(srcHost) != null) && (accountOfDedicatedHost(srcHost) != accountOfDedicatedHost(destHost))) {
+            if (!((accountOfDedicatedHost(srcHost) == null) || (accountOfDedicatedHost(srcHost).equals(accountOfDedicatedHost(destHost))))) {
                 String msg = "VM is being migrated from host " + srcHost.getName() + " explicitly dedicated to account " + accountOfDedicatedHost(srcHost) + " to host "
                         + destHost.getName() + " explicitly dedicated to account " + accountOfDedicatedHost(destHost);
                 _alertMgr.sendAlert(AlertManager.AlertType.ALERT_TYPE_USERVM, vm.getDataCenterId(), vm.getPodIdToDeployIn(), msg, msg);
                 s_logger.warn(msg);
             }
-            if ((domainOfDedicatedHost(srcHost) != null) && (domainOfDedicatedHost(srcHost) != domainOfDedicatedHost(destHost))) {
+            if (!((domainOfDedicatedHost(srcHost) == null) || (domainOfDedicatedHost(srcHost).equals(domainOfDedicatedHost(destHost))))) {
                 String msg = "VM is being migrated from host " + srcHost.getName() + " explicitly dedicated to domain " + domainOfDedicatedHost(srcHost) + " to host "
                         + destHost.getName() + " explicitly dedicated to domain " + domainOfDedicatedHost(destHost);
                 _alertMgr.sendAlert(AlertManager.AlertType.ALERT_TYPE_USERVM, vm.getDataCenterId(), vm.getPodIdToDeployIn(), msg, msg);


[07/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
List view: Fix advanced search not popping up with multiple panels


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/9f18b075
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/9f18b075
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/9f18b075

Branch: refs/heads/marvin
Commit: 9f18b075a9de166dfee222ae1ef68f0e81af8247
Parents: f77974b
Author: Brian Federle <br...@citrix.com>
Authored: Mon Jan 27 13:30:37 2014 -0800
Committer: Brian Federle <br...@citrix.com>
Committed: Mon Jan 27 13:33:12 2014 -0800

----------------------------------------------------------------------
 ui/scripts/ui/widgets/listView.js | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9f18b075/ui/scripts/ui/widgets/listView.js
----------------------------------------------------------------------
diff --git a/ui/scripts/ui/widgets/listView.js b/ui/scripts/ui/widgets/listView.js
index d94744d..cb4544c 100644
--- a/ui/scripts/ui/widgets/listView.js
+++ b/ui/scripts/ui/widgets/listView.js
@@ -877,7 +877,7 @@
                 $('<div>').attr({
                     id: 'advanced_search'
                 })
-                .addClass('button search')
+                .addClass('button search advanced-search')
                 .append($('<div>').addClass('icon'))
             );
         }
@@ -1872,11 +1872,11 @@
         };
 
         var closeAdvancedSearch = function() {
-            $('#advanced_search .form-container:visible').remove();
+            $listView.find('.advanced-search .form-container:visible').remove();
         };
 
-        $listView.find('.button.search#advanced_search .icon').bind('click', function(event) {
-            if ($('#advanced_search .form-container:visible').size()) {
+        $listView.find('.advanced-search .icon').bind('click', function(event) {
+            if ($listView.find('.advanced-search .form-container:visible').size()) {
                 closeAdvancedSearch();
 
                 return false;
@@ -1897,7 +1897,7 @@
             var $formContainer = form.$formContainer;
             var $form = $formContainer.find('form');
 
-            $formContainer.hide().appendTo('#advanced_search').show();
+            $formContainer.hide().appendTo($listView.find('.advanced-search')).show();
             $form.find('.form-item:first input').focus();
             $form.find('input[type=submit]')
                 .show()


[22/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
findbugs: fixes for ApiServer, ApiSerializerHelper and
ApiXmlDocWriter(cherry picked from commit
9aced41d708acd22b43ef0e512fa2cc657a6c0a2)


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/a71871d1
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/a71871d1
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/a71871d1

Branch: refs/heads/marvin
Commit: a71871d11ce97216d0e50c01bcd84cc59d3d18dc
Parents: 1c73617
Author: Daan Hoogland <da...@onecht.net>
Authored: Tue Jan 28 14:47:06 2014 +0100
Committer: Daan Hoogland <dh...@schubergphilis.com>
Committed: Tue Jan 28 14:47:06 2014 +0100

----------------------------------------------------------------------
 .../src/com/cloud/api/ApiSerializerHelper.java  |  2 +-
 server/src/com/cloud/api/ApiServer.java         | 29 ++++++++++++++------
 server/src/com/cloud/api/ApiServlet.java        |  2 +-
 .../com/cloud/api/EncodedStringTypeAdapter.java |  2 +-
 server/src/com/cloud/api/doc/Alert.java         | 12 ++++++--
 server/src/com/cloud/api/doc/Command.java       | 11 ++++++--
 .../api/response/ApiResponseSerializer.java     |  2 +-
 7 files changed, 41 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/a71871d1/server/src/com/cloud/api/ApiSerializerHelper.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/ApiSerializerHelper.java b/server/src/com/cloud/api/ApiSerializerHelper.java
index cd5c7e6..7426d9f 100644
--- a/server/src/com/cloud/api/ApiSerializerHelper.java
+++ b/server/src/com/cloud/api/ApiSerializerHelper.java
@@ -24,7 +24,7 @@ import org.apache.cloudstack.api.ResponseObject;
 
 public class ApiSerializerHelper {
     public static final Logger s_logger = Logger.getLogger(ApiSerializerHelper.class.getName());
-    public static String token = "/";
+    private static String token = "/";
 
     public static String toSerializedString(Object result) {
         if (result != null) {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/a71871d1/server/src/com/cloud/api/ApiServer.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/ApiServer.java b/server/src/com/cloud/api/ApiServer.java
index 71a1b8d..d715db6 100755
--- a/server/src/com/cloud/api/ApiServer.java
+++ b/server/src/com/cloud/api/ApiServer.java
@@ -159,11 +159,10 @@ public class ApiServer extends ManagerBase implements HttpRequestHandler, ApiSer
     private static final Logger s_logger = Logger.getLogger(ApiServer.class.getName());
     private static final Logger s_accessLogger = Logger.getLogger("apiserver." + ApiServer.class.getName());
 
-    public static boolean encodeApiResponse = false;
-    public static String jsonContentType = "text/javascript";
-    public static String controlCharacters = "[\000-\011\013-\014\016-\037\177]"; // Non-printable ASCII characters - numbers 0 to 31 and 127 decimal
-    @Inject
-    ApiDispatcher _dispatcher;
+    private static boolean encodeApiResponse = false;
+    private static String jsonContentType = "text/javascript";
+    private static String controlCharacters = "[\000-\011\013-\014\016-\037\177]"; // Non-printable ASCII characters - numbers 0 to 31 and 127 decimal
+    @Inject ApiDispatcher _dispatcher;
 
     @Inject
     private AccountManager _accountMgr;
@@ -241,7 +240,7 @@ public class ApiServer extends ManagerBase implements HttpRequestHandler, ApiSer
             s_apiNameCmdClassMap.put(apiName, cmdClass);
         }
 
-        encodeApiResponse = Boolean.valueOf(_configDao.getValue(Config.EncodeApiResponse.key()));
+        setEncodeApiResponse(Boolean.valueOf(_configDao.getValue(Config.EncodeApiResponse.key())));
         String jsonType = _configDao.getValue(Config.JavaScriptDefaultContentType.key());
         if (jsonType != null) {
             jsonContentType = jsonType;
@@ -379,7 +378,7 @@ public class ApiServer extends ManagerBase implements HttpRequestHandler, ApiSer
                     buildAuditTrail(auditTrailSb, command[0], response);
                 } else {
                     if (!command[0].equalsIgnoreCase("login") && !command[0].equalsIgnoreCase("logout")) {
-                        String errorString = "Unknown API command: " + ((command == null) ? "null" : command[0]);
+                        String errorString = "Unknown API command: " + command[0];
                         s_logger.warn(errorString);
                         auditTrailSb.append(" " + errorString);
                         throw new ServerApiException(ApiErrorCode.UNSUPPORTED_ACTION_ERROR, errorString);
@@ -1102,7 +1101,7 @@ public class ApiServer extends ManagerBase implements HttpRequestHandler, ApiSer
 
     @Inject
     public void setPluggableServices(List<PluggableService> pluggableServices) {
-        this._pluggableServices = pluggableServices;
+        _pluggableServices = pluggableServices;
     }
 
     public List<APIChecker> getApiAccessCheckers() {
@@ -1111,6 +1110,18 @@ public class ApiServer extends ManagerBase implements HttpRequestHandler, ApiSer
 
     @Inject
     public void setApiAccessCheckers(List<APIChecker> apiAccessCheckers) {
-        this._apiAccessCheckers = apiAccessCheckers;
+        _apiAccessCheckers = apiAccessCheckers;
+    }
+
+    public static boolean isEncodeApiResponse() {
+        return encodeApiResponse;
+    }
+
+    private static void setEncodeApiResponse(boolean encodeApiResponse) {
+        ApiServer.encodeApiResponse = encodeApiResponse;
+    }
+
+    public static String getJsonContentType() {
+        return jsonContentType;
     }
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/a71871d1/server/src/com/cloud/api/ApiServlet.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/ApiServlet.java b/server/src/com/cloud/api/ApiServlet.java
index 6a33c14..46f7eba 100755
--- a/server/src/com/cloud/api/ApiServlet.java
+++ b/server/src/com/cloud/api/ApiServlet.java
@@ -375,7 +375,7 @@ public class ApiServlet extends HttpServlet {
     private void writeResponse(HttpServletResponse resp, String response, int responseCode, String responseType) {
         try {
             if (BaseCmd.RESPONSE_TYPE_JSON.equalsIgnoreCase(responseType)) {
-                resp.setContentType(ApiServer.jsonContentType + "; charset=UTF-8");
+                resp.setContentType(ApiServer.getJsonContentType() + "; charset=UTF-8");
             } else {
                 resp.setContentType("text/xml; charset=UTF-8");
             }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/a71871d1/server/src/com/cloud/api/EncodedStringTypeAdapter.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/EncodedStringTypeAdapter.java b/server/src/com/cloud/api/EncodedStringTypeAdapter.java
index cde1448..50dbd0d 100644
--- a/server/src/com/cloud/api/EncodedStringTypeAdapter.java
+++ b/server/src/com/cloud/api/EncodedStringTypeAdapter.java
@@ -37,7 +37,7 @@ public class EncodedStringTypeAdapter implements JsonSerializer<String> {
     }
 
     private static String encodeString(String value) {
-        if (!ApiServer.encodeApiResponse) {
+        if (!ApiServer.isEncodeApiResponse()) {
             return value;
         }
         try {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/a71871d1/server/src/com/cloud/api/doc/Alert.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/doc/Alert.java b/server/src/com/cloud/api/doc/Alert.java
index e73cb0e..3e61d0b 100644
--- a/server/src/com/cloud/api/doc/Alert.java
+++ b/server/src/com/cloud/api/doc/Alert.java
@@ -16,9 +16,15 @@
 // under the License.
 package com.cloud.api.doc;
 
-public class Alert {
-    private String type;
-    private int value;
+import java.io.Serializable;
+
+public class Alert implements Serializable{
+    /**
+     *
+     */
+    private static final long serialVersionUID = 960408026527837920L;
+    private final String type;
+    private final int value;
 
     public Alert(String type, int value) {
         this.type = type;

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/a71871d1/server/src/com/cloud/api/doc/Command.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/doc/Command.java b/server/src/com/cloud/api/doc/Command.java
index 998b39f..549ca29 100644
--- a/server/src/com/cloud/api/doc/Command.java
+++ b/server/src/com/cloud/api/doc/Command.java
@@ -16,10 +16,15 @@
 // under the License.
 package com.cloud.api.doc;
 
+import java.io.Serializable;
 import java.util.ArrayList;
 
-public class Command {
+public class Command implements Serializable{
 
+    /**
+     *
+     */
+    private static final long serialVersionUID = -4318310162503004975L;
     private String name;
     private String description;
     private String usage;
@@ -85,7 +90,7 @@ public class Command {
     }
 
     public Argument getReqArgByName(String name) {
-        for (Argument a : this.getRequest()) {
+        for (Argument a : getRequest()) {
             if (a.getName().equals(name)) {
                 return a;
             }
@@ -94,7 +99,7 @@ public class Command {
     }
 
     public Argument getResArgByName(String name) {
-        for (Argument a : this.getResponse()) {
+        for (Argument a : getResponse()) {
             if (a.getName().equals(name)) {
                 return a;
             }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/a71871d1/server/src/com/cloud/api/response/ApiResponseSerializer.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/response/ApiResponseSerializer.java b/server/src/com/cloud/api/response/ApiResponseSerializer.java
index d8b728a..f276e89 100644
--- a/server/src/com/cloud/api/response/ApiResponseSerializer.java
+++ b/server/src/com/cloud/api/response/ApiResponseSerializer.java
@@ -291,7 +291,7 @@ public class ApiResponseSerializer {
     }
 
     private static String encodeParam(String value) {
-        if (!ApiServer.encodeApiResponse) {
+        if (!ApiServer.isEncodeApiResponse()) {
             return value;
         }
         try {


[41/50] git commit: updated refs/heads/marvin to df58f51

Posted by gi...@apache.org.
Browser UI: Fix broken breadcrumb navigation

Fix breadcrumb navigation becoming stuck when going back a couple
levels, due to previous panels not being removed from the DOM


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/25d8e3d7
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/25d8e3d7
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/25d8e3d7

Branch: refs/heads/marvin
Commit: 25d8e3d7dbd2b08b521deaea9fa7ebfc7172b1a9
Parents: 23f3047
Author: Brian Federle <br...@citrix.com>
Authored: Tue Jan 28 11:53:39 2014 -0800
Committer: Brian Federle <br...@citrix.com>
Committed: Tue Jan 28 11:54:12 2014 -0800

----------------------------------------------------------------------
 ui/scripts/ui/widgets/cloudBrowser.js | 11 +----------
 1 file changed, 1 insertion(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/25d8e3d7/ui/scripts/ui/widgets/cloudBrowser.js
----------------------------------------------------------------------
diff --git a/ui/scripts/ui/widgets/cloudBrowser.js b/ui/scripts/ui/widgets/cloudBrowser.js
index ffb5f15..31ac533 100644
--- a/ui/scripts/ui/widgets/cloudBrowser.js
+++ b/ui/scripts/ui/widgets/cloudBrowser.js
@@ -205,16 +205,7 @@
                 .addClass('reduced')
             ).removeClass('active maximized');
 
-            $toRemove.css(
-                _panel.initialState($container), {
-                    duration: 500,
-                    complete: function() {
-                        $(this).remove();
-
-                        if (complete) complete($toShow);
-                    }
-                }
-            );
+            $toRemove.remove();
             $toShow.show();
             $panel.css({
                 left: _panel.position($container, {