You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by bf...@apache.org on 2013/05/15 19:19:06 UTC

[01/20] git commit: updated refs/heads/ui-vpc-redesign to 59a9984

Updated Branches:
  refs/heads/ui-vpc-redesign cb31791ad -> 59a99848b


When UUID field is null for existing records, set it to id

Conflicts:
	server/src/com/cloud/uuididentity/dao/IdentityDaoImpl.java


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

Branch: refs/heads/ui-vpc-redesign
Commit: 26cefdcfac42f94ff8ba831e3e40e50a81e43f52
Parents: edb2f3d
Author: Alena Prokharchyk <al...@citrix.com>
Authored: Tue Oct 2 18:53:12 2012 -0700
Committer: Alena Prokharchyk <al...@citrix.com>
Committed: Tue May 14 15:11:41 2013 -0700

----------------------------------------------------------------------
 .../cloud/uuididentity/dao/IdentityDaoImpl.java    |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/26cefdcf/server/src/com/cloud/uuididentity/dao/IdentityDaoImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/uuididentity/dao/IdentityDaoImpl.java b/server/src/com/cloud/uuididentity/dao/IdentityDaoImpl.java
index 7be63ba..c6fd8c1 100644
--- a/server/src/com/cloud/uuididentity/dao/IdentityDaoImpl.java
+++ b/server/src/com/cloud/uuididentity/dao/IdentityDaoImpl.java
@@ -21,7 +21,6 @@ import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.UUID;
 
 import javax.ejb.Local;
 
@@ -235,8 +234,9 @@ public class IdentityDaoImpl extends GenericDaoBase<IdentityVO, Long> implements
             String.format("UPDATE `%s` SET uuid=? WHERE id=?", tableName)
         );
         
-        pstmtUpdate.setString(1, UUID.randomUUID().toString());
+        pstmtUpdate.setString(1, String.valueOf(id));
         pstmtUpdate.setLong(2, id);
         pstmtUpdate.executeUpdate();
     }
 }
+


[13/20] git commit: updated refs/heads/ui-vpc-redesign to 59a9984

Posted by bf...@apache.org.
CLOUDSTACK-2515: Verify if the targetPath isn't null before comparing


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

Branch: refs/heads/ui-vpc-redesign
Commit: 68a428f84dea9c051456882d6762f419c40d90db
Parents: 9b65134
Author: Wido den Hollander <wi...@widodh.nl>
Authored: Wed May 15 13:57:58 2013 +0200
Committer: Wido den Hollander <wi...@widodh.nl>
Committed: Wed May 15 13:57:58 2013 +0200

----------------------------------------------------------------------
 .../kvm/storage/LibvirtStorageAdaptor.java         |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/68a428f8/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java
index 8f58719..e7e4bbf 100644
--- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java
+++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java
@@ -465,7 +465,8 @@ public class LibvirtStorageAdaptor implements StorageAdaptor {
                     StoragePool p = conn.storagePoolLookupByName(poolname);
                     LibvirtStoragePoolDef pdef = getStoragePoolDef(conn, p);
 
-                    if (pdef.getTargetPath().equals(path)) {
+                    String targetPath = pdef.getTargetPath();
+                    if (targetPath != null && targetPath.equals(path)) {
                         s_logger.debug("Storage pool utilizing path '" + path + "' already exists as pool "
                                        + poolname + ", undefining so we can re-define with correct name " + name);
                         if (p.isPersistent() == 1) {


[05/20] git commit: updated refs/heads/ui-vpc-redesign to 59a9984

Posted by bf...@apache.org.
CLOUDSTACK-2487: Show error while adding acl_item to default ACL


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

Branch: refs/heads/ui-vpc-redesign
Commit: 3388b77156e93ff8de5f08737dd66023ed0089f2
Parents: be98501
Author: Kishan Kavala <ki...@cloud.com>
Authored: Wed May 15 12:51:08 2013 +0530
Committer: Kishan Kavala <ki...@cloud.com>
Committed: Wed May 15 12:51:08 2013 +0530

----------------------------------------------------------------------
 .../cloud/network/vpc/NetworkACLServiceImpl.java   |    8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3388b771/server/src/com/cloud/network/vpc/NetworkACLServiceImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/vpc/NetworkACLServiceImpl.java b/server/src/com/cloud/network/vpc/NetworkACLServiceImpl.java
index ac59fab..00c90d5 100644
--- a/server/src/com/cloud/network/vpc/NetworkACLServiceImpl.java
+++ b/server/src/com/cloud/network/vpc/NetworkACLServiceImpl.java
@@ -216,8 +216,8 @@ public class NetworkACLServiceImpl extends ManagerBase implements NetworkACLServ
             throw new InvalidParameterValueException("Network ACL can be created just for networks of type " + Networks.TrafficType.Guest);
         }
 
-        if(aclId != NetworkACL.DEFAULT_DENY) {
-            //ACL is not default DENY
+        if(aclId != NetworkACL.DEFAULT_DENY && aclId != NetworkACL.DEFAULT_ALLOW) {
+            //ACL is not default DENY/ALLOW
             // ACL should be associated with a VPC
             Vpc vpc = _vpcMgr.getVpc(acl.getVpcId());
             if(vpc == null){
@@ -254,6 +254,10 @@ public class NetworkACLServiceImpl extends ManagerBase implements NetworkACLServ
             throw new InvalidParameterValueException("Unable to find specified ACL");
         }
 
+        if((aclId == NetworkACL.DEFAULT_DENY) || (aclId == NetworkACL.DEFAULT_ALLOW)){
+            throw new InvalidParameterValueException("Default ACL cannot be modified");
+        }
+
         Vpc vpc = _vpcMgr.getVpc(acl.getVpcId());
         if(vpc == null){
             throw new InvalidParameterValueException("Unable to find Vpc associated with the NetworkACL");


[10/20] git commit: updated refs/heads/ui-vpc-redesign to 59a9984

Posted by bf...@apache.org.
CLOUDSTACK-2085: VM weight on xen remain same as before vmscaleup ;because "Add-To-VCPUs-Params-Live.sh" is not getting copied on xs host
Fixed by updating the patch files that has
 entries to copy scipts on xenserver. Here we added
 Add-To-VCPUs-Params-Live.sh

Added a check on Host params whether host restricts Dynamic memory control(DMC) to able to allow scale up VM.
If DMC is not enabled then static max and min are set to SO.

Signed Off by - Nitin Mehta <ni...@citrix.com>


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

Branch: refs/heads/ui-vpc-redesign
Commit: ffe90c00599917bfbe5e22e369fd248358074600
Parents: 9542f10
Author: Harikrishna Patnala <ha...@citrix.com>
Authored: Wed May 15 16:00:25 2013 +0530
Committer: Nitin Mehta <ni...@citrix.com>
Committed: Wed May 15 16:17:21 2013 +0530

----------------------------------------------------------------------
 .../xen/resource/CitrixResourceBase.java           |    8 +++-
 .../xen/resource/XenServer56FP1Resource.java       |   13 +++++-
 .../xen/resource/CitrixResourceBaseTest.java       |    8 ++--
 .../xenserver/Add-To-VCPUs-Params-Live.sh          |   33 ---------------
 .../xenserver/add_to_vcpus_params_live.sh          |   33 +++++++++++++++
 scripts/vm/hypervisor/xenserver/vmops              |    2 +-
 scripts/vm/hypervisor/xenserver/xcpserver/patch    |    1 +
 scripts/vm/hypervisor/xenserver/xenserver56/patch  |    1 +
 .../vm/hypervisor/xenserver/xenserver56fp1/patch   |    1 +
 scripts/vm/hypervisor/xenserver/xenserver60/patch  |    1 +
 10 files changed, 60 insertions(+), 41 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ffe90c00/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
index 7bb25ef..734f72f 100644
--- a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
+++ b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
@@ -639,7 +639,8 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
             if (vmSpec.getLimitCpuUse()) {
                 long utilization = 0; // max CPU cap, default is unlimited
                 utilization = ((long)speed * 100 * vmSpec.getCpus()) / _host.speed ;
-                vm.addToVCPUsParamsLive(conn, "cap", Long.toString(utilization));
+                //vm.addToVCPUsParamsLive(conn, "cap", Long.toString(utilization)); currently xenserver doesnot support Xapi to add VCPUs params live.
+                callHostPlugin(conn, "vmops", "add_to_VCPUs_params_live", "key", "cap", "value", Long.toString(utilization), "vmname", vmSpec.getName() );
             }
             //vm.addToVCPUsParamsLive(conn, "weight", Integer.toString(cpuWeight));
             callHostPlugin(conn, "vmops", "add_to_VCPUs_params_live", "key", "weight", "value", Integer.toString(cpuWeight), "vmname", vmSpec.getName() );
@@ -672,6 +673,11 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
             for (VM vm : vms) {
                 VM.Record vmr = vm.getRecord(conn);
                 try {
+                    Map<String, String> hostParams = new HashMap<String, String>();
+                    hostParams = host.getLicenseParams(conn);
+                    if (hostParams.get("restrict_dmc").equalsIgnoreCase("true")) {
+                        throw new CloudRuntimeException("Host "+ _host.uuid + " does not support Dynamic Memory Control, so we cannot scale up the vm");
+                    }
                     scaleVM(conn, vm, vmSpec, host);
 
                 } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ffe90c00/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/XenServer56FP1Resource.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/XenServer56FP1Resource.java b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/XenServer56FP1Resource.java
index 96a90a6..24cb75c 100644
--- a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/XenServer56FP1Resource.java
+++ b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/XenServer56FP1Resource.java
@@ -139,8 +139,17 @@ public class XenServer56FP1Resource extends XenServer56Resource {
         record.actionsAfterShutdown = Types.OnNormalExit.DESTROY;
         record.memoryDynamicMax = vmSpec.getMaxRam();
         record.memoryDynamicMin = vmSpec.getMinRam();
-        record.memoryStaticMax = 8589934592L; //128GB
-        record.memoryStaticMin = 134217728L; //128MB
+        Map<String, String> hostParams = new HashMap<String, String>();
+        hostParams = host.getLicenseParams(conn);
+        if (hostParams.get("restrict_dmc").equalsIgnoreCase("false")) {
+            record.memoryStaticMax = 8589934592L; //8GB
+            record.memoryStaticMin = 134217728L; //128MB
+        } else {
+            s_logger.warn("Host "+ _host.uuid + " does not support Dynamic Memory Control, so we cannot scale up the vm");
+            record.memoryStaticMax = vmSpec.getMaxRam();
+            record.memoryStaticMin = vmSpec.getMinRam();
+        }
+
         if (guestOsTypeName.toLowerCase().contains("windows")) {
             record.VCPUsMax = (long) vmSpec.getCpus();
         } else {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ffe90c00/plugins/hypervisors/xen/test/com/cloud/hypervisor/xen/resource/CitrixResourceBaseTest.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xen/test/com/cloud/hypervisor/xen/resource/CitrixResourceBaseTest.java b/plugins/hypervisors/xen/test/com/cloud/hypervisor/xen/resource/CitrixResourceBaseTest.java
index 7392cb1..877e3bc 100644
--- a/plugins/hypervisors/xen/test/com/cloud/hypervisor/xen/resource/CitrixResourceBaseTest.java
+++ b/plugins/hypervisors/xen/test/com/cloud/hypervisor/xen/resource/CitrixResourceBaseTest.java
@@ -110,7 +110,7 @@ public class CitrixResourceBaseTest {
     @Test
     public void testScaleVMF2() throws Types.XenAPIException, XmlRpcException {
 
-        doReturn(null).when(vm).setMemoryDynamicRangeAsync(conn, 536870912L, 536870912L);
+        doNothing().when(vm).setMemoryDynamicRange(conn, 536870912L, 536870912L);
         doReturn(1).when(vmSpec).getCpus();
         doNothing().when(vm).setVCPUsNumberLive(conn, 1L);
         doReturn(500).when(vmSpec).getSpeed();
@@ -129,12 +129,12 @@ public class CitrixResourceBaseTest {
     @Test
     public void testScaleVMF3() throws Types.XenAPIException, XmlRpcException {
 
-        doReturn(null).when(vm).setMemoryDynamicRangeAsync(conn, 536870912L, 536870912L);
+        doNothing().when(vm).setMemoryDynamicRange(conn, 536870912L, 536870912L);
         doReturn(1).when(vmSpec).getCpus();
         doNothing().when(vm).setVCPUsNumberLive(conn, 1L);
         doReturn(500).when(vmSpec).getSpeed();
         doReturn(true).when(vmSpec).getLimitCpuUse();
-        doNothing().when(vm).addToVCPUsParamsLive(conn, "cap", "100");
+        doReturn(null).when(_resource).callHostPlugin(conn, "vmops", "add_to_VCPUs_params_live", "key", "cap", "value", "100", "vmname", "i-2-3-VM");
         Map<String, String> args = (Map<String, String>)mock(HashMap.class);
         when(host.callPlugin(conn, "vmops", "add_to_VCPUs_params_live", args)).thenReturn("Success");
         doReturn(null).when(_resource).callHostPlugin(conn, "vmops", "add_to_VCPUs_params_live", "key", "weight", "value", "253", "vmname", "i-2-3-VM");
@@ -143,6 +143,6 @@ public class CitrixResourceBaseTest {
 
         verify(vmSpec, times(1)).getLimitCpuUse();
         verify(_resource, times(1)).callHostPlugin(conn, "vmops", "add_to_VCPUs_params_live", "key", "weight", "value", "253", "vmname", "i-2-3-VM");
-        verify(vm, times(1)).addToVCPUsParamsLive(conn, "cap", "100");
+        verify(_resource, times(1)).callHostPlugin(conn, "vmops", "add_to_VCPUs_params_live", "key", "cap", "value", "100", "vmname", "i-2-3-VM");
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ffe90c00/scripts/vm/hypervisor/xenserver/Add-To-VCPUs-Params-Live.sh
----------------------------------------------------------------------
diff --git a/scripts/vm/hypervisor/xenserver/Add-To-VCPUs-Params-Live.sh b/scripts/vm/hypervisor/xenserver/Add-To-VCPUs-Params-Live.sh
deleted file mode 100644
index 0fadcd8..0000000
--- a/scripts/vm/hypervisor/xenserver/Add-To-VCPUs-Params-Live.sh
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/bin/sh
-# 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.
-
-set -x
-
-vmname=$1
-key=$2
-value=$3
-uuid=`xe vm-list name-label=$vmname | grep uuid | awk '{print $NF}'`
-if [[ $key == "weight" ]]
-then
-    xe vm-param-set VCPUs-params:weight=$value uuid=$uuid
-fi
-if [[ $key == "cap" ]]
-then
-    xe vm-param-set VCPUs-params:cap=$value uuid=$uuid
-fi
-

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ffe90c00/scripts/vm/hypervisor/xenserver/add_to_vcpus_params_live.sh
----------------------------------------------------------------------
diff --git a/scripts/vm/hypervisor/xenserver/add_to_vcpus_params_live.sh b/scripts/vm/hypervisor/xenserver/add_to_vcpus_params_live.sh
new file mode 100644
index 0000000..0fadcd8
--- /dev/null
+++ b/scripts/vm/hypervisor/xenserver/add_to_vcpus_params_live.sh
@@ -0,0 +1,33 @@
+#!/bin/sh
+# 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.
+
+set -x
+
+vmname=$1
+key=$2
+value=$3
+uuid=`xe vm-list name-label=$vmname | grep uuid | awk '{print $NF}'`
+if [[ $key == "weight" ]]
+then
+    xe vm-param-set VCPUs-params:weight=$value uuid=$uuid
+fi
+if [[ $key == "cap" ]]
+then
+    xe vm-param-set VCPUs-params:cap=$value uuid=$uuid
+fi
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ffe90c00/scripts/vm/hypervisor/xenserver/vmops
----------------------------------------------------------------------
diff --git a/scripts/vm/hypervisor/xenserver/vmops b/scripts/vm/hypervisor/xenserver/vmops
index 60fb8ab..d18eca8 100755
--- a/scripts/vm/hypervisor/xenserver/vmops
+++ b/scripts/vm/hypervisor/xenserver/vmops
@@ -48,7 +48,7 @@ def add_to_VCPUs_params_live(session, args):
     value = args['value']
     vmname = args['vmname']
     try:
-        cmd = ["bash", "/opt/xensource/bin/Add-To-VCPUs-Params-Live.sh", vmname, key, value]
+        cmd = ["bash", "/opt/xensource/bin/add_to_vcpus_params_live.sh", vmname, key, value]
         txt = util.pread2(cmd)
     except:
         return 'false'

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ffe90c00/scripts/vm/hypervisor/xenserver/xcpserver/patch
----------------------------------------------------------------------
diff --git a/scripts/vm/hypervisor/xenserver/xcpserver/patch b/scripts/vm/hypervisor/xenserver/xcpserver/patch
index bfecd0c..a275df4 100644
--- a/scripts/vm/hypervisor/xenserver/xcpserver/patch
+++ b/scripts/vm/hypervisor/xenserver/xcpserver/patch
@@ -64,3 +64,4 @@ cloud-prepare-upgrade.sh=..,0755,/opt/xensource/bin
 getRouterStatus.sh=../../../../network/domr/,0755,/opt/xensource/bin
 bumpUpPriority.sh=../../../../network/domr/,0755,/opt/xensource/bin
 getDomRVersion.sh=../../../../network/domr/,0755,/opt/xensource/bin
+add_to_vcpus_params_live.sh=..,0755,/opt/xensource/bin

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ffe90c00/scripts/vm/hypervisor/xenserver/xenserver56/patch
----------------------------------------------------------------------
diff --git a/scripts/vm/hypervisor/xenserver/xenserver56/patch b/scripts/vm/hypervisor/xenserver/xenserver56/patch
index 1be14ea..5c4673d 100644
--- a/scripts/vm/hypervisor/xenserver/xenserver56/patch
+++ b/scripts/vm/hypervisor/xenserver/xenserver56/patch
@@ -65,4 +65,5 @@ bumpUpPriority.sh=../../../../network/domr/,0755,/opt/xensource/bin
 swift=..,0755,/opt/xensource/bin
 swiftxen=..,0755,/etc/xapi.d/plugins
 s3xen=..,0755,/etc/xapi.d/plugins
+add_to_vcpus_params_live.sh=..,0755,/opt/xensource/bin
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ffe90c00/scripts/vm/hypervisor/xenserver/xenserver56fp1/patch
----------------------------------------------------------------------
diff --git a/scripts/vm/hypervisor/xenserver/xenserver56fp1/patch b/scripts/vm/hypervisor/xenserver/xenserver56fp1/patch
index dd31e44..c7c58b9 100644
--- a/scripts/vm/hypervisor/xenserver/xenserver56fp1/patch
+++ b/scripts/vm/hypervisor/xenserver/xenserver56fp1/patch
@@ -64,4 +64,5 @@ bumpUpPriority.sh=../../../../network/domr/,0755,/opt/xensource/bin
 swift=..,0755,/opt/xensource/bin
 swiftxen=..,0755,/etc/xapi.d/plugins
 s3xen=..,0755,/etc/xapi.d/plugins
+add_to_vcpus_params_live.sh=..,0755,/opt/xensource/bin
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ffe90c00/scripts/vm/hypervisor/xenserver/xenserver60/patch
----------------------------------------------------------------------
diff --git a/scripts/vm/hypervisor/xenserver/xenserver60/patch b/scripts/vm/hypervisor/xenserver/xenserver60/patch
index 787f474..6d81979 100644
--- a/scripts/vm/hypervisor/xenserver/xenserver60/patch
+++ b/scripts/vm/hypervisor/xenserver/xenserver60/patch
@@ -69,4 +69,5 @@ bumpUpPriority.sh=../../../../network/domr/,0755,/opt/xensource/bin
 swift=..,0755,/opt/xensource/bin
 swiftxen=..,0755,/etc/xapi.d/plugins
 s3xen=..,0755,/etc/xapi.d/plugins
+add_to_vcpus_params_live.sh=..,0755,/opt/xensource/bin
 


[04/20] git commit: updated refs/heads/ui-vpc-redesign to 59a9984

Posted by bf...@apache.org.
CLOUDSTACK-2467 and CLOUDSTACK-2466


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

Branch: refs/heads/ui-vpc-redesign
Commit: be9850161e064972978a7f5ebbb1f4f3282ca11e
Parents: f484f4a
Author: radhikap <ra...@citrix.com>
Authored: Wed May 15 09:18:06 2013 +0530
Committer: radhikap <ra...@citrix.com>
Committed: Wed May 15 09:18:57 2013 +0530

----------------------------------------------------------------------
 docs/en-US/delete-event-alerts.xml |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/be985016/docs/en-US/delete-event-alerts.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/delete-event-alerts.xml b/docs/en-US/delete-event-alerts.xml
index ef39040..5958b72 100644
--- a/docs/en-US/delete-event-alerts.xml
+++ b/docs/en-US/delete-event-alerts.xml
@@ -27,7 +27,10 @@
   <para>You can delete or archive individual alerts or events either directly by using the Quickview
     or by using the Details page. If you want to delete multiple alerts or events at the same time,
     you can use the respective context menu. You can delete alerts or events by category for a time
-    period.</para>
+    period. For example, you can select categories such as <emphasis role="bold"
+      >USER.LOGOUT</emphasis>, <emphasis role="bold">VM.DESTROY</emphasis>, <emphasis role="bold"
+      >VM.AG.UPDATE</emphasis>, <emphasis role="bold">CONFIGURATION.VALUE.EDI</emphasis>, and so on.
+    You can also view the number of events or alerts archived or deleted.</para>
   <para>In order to support the delete or archive alerts, the following global parameters have been
     added:</para>
   <itemizedlist>


[14/20] git commit: updated refs/heads/ui-vpc-redesign to 59a9984

Posted by bf...@apache.org.
CLOUDSTACK-2491:NTier: Creation of ACL Rule for protocol AH (51) and ESP (50) Fails


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

Branch: refs/heads/ui-vpc-redesign
Commit: 6d6887533ff6270335b2b64bd5b9fc453c41182f
Parents: 68a428f
Author: Pranav Saxena <pr...@citrix.com>
Authored: Wed May 15 18:01:10 2013 +0530
Committer: Pranav Saxena <pr...@citrix.com>
Committed: Wed May 15 18:01:10 2013 +0530

----------------------------------------------------------------------
 ui/scripts/vpc.js |   16 ++++++++++++++--
 1 files changed, 14 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/6d688753/ui/scripts/vpc.js
----------------------------------------------------------------------
diff --git a/ui/scripts/vpc.js b/ui/scripts/vpc.js
index 5d436f3..0c4a446 100644
--- a/ui/scripts/vpc.js
+++ b/ui/scripts/vpc.js
@@ -94,8 +94,8 @@
       },
 
       'protocolnumber': {label:'Protocol Number',isDisabled:true,isHidden:true,edit:true},
-      'startport': { edit: true, label: 'label.start.port' },
-      'endport': { edit: true, label: 'label.end.port' },
+      'startport': { edit: true, label: 'label.start.port' , isOptional:true },
+      'endport': { edit: true, label: 'label.end.port' , isOptional:true},
       'networkid': {
         label: 'Select Tier',
         select: function(args) {
@@ -165,7 +165,18 @@
         else
           delete args.data.protocolnumber;
 
+
        
+        if((args.data.protocol == 'tcp' || args.data.protocol == 'udp' || args.data.protocol == 'all') && (args.data.startport=="" || args.data.startport == undefined)){
+         cloudStack.dialog.notice({message:_l('Start Port or End Port value should not be blank')});
+          $(window).trigger('cloudStack.fullRefresh');
+        }
+        else if((args.data.protocol == 'tcp' || args.data.protocol == 'udp' || args.data.protocol == 'all')  && (args.data.endport=="" || args.data.endport == undefined)){
+         cloudStack.dialog.notice({message:_l('Start Port or End Port value should not be blank')});
+          $(window).trigger('cloudStack.fullRefresh');
+        }
+
+       else{       
         $.ajax({
           url: createURL('createNetworkACL'),
           data: $.extend(args.data, {
@@ -202,6 +213,7 @@
           }
         });
       }
+      }
     },
     actions: {
       destroy: {


[19/20] git commit: updated refs/heads/ui-vpc-redesign to 59a9984

Posted by bf...@apache.org.
Summary: Use hypervisor as clock source for system vms

BUG-ID: CLOUDSTACK-2492
Bugfix-for: 4.1,master
Signed-off-by: Marcus Sorensen <ma...@betterservers.com> 1368635782 -0600


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

Branch: refs/heads/ui-vpc-redesign
Commit: bfc5887a1bf6b41e88dd7a8f9987fcee8d3d9175
Parents: 8f7a51e
Author: Marcus Sorensen <ma...@betterservers.com>
Authored: Wed May 15 10:36:22 2013 -0600
Committer: Marcus Sorensen <ma...@betterservers.com>
Committed: Wed May 15 10:36:22 2013 -0600

----------------------------------------------------------------------
 .../kvm/resource/LibvirtComputingResource.java     |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bfc5887a/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 b8c6f09..0147682 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
@@ -3152,6 +3152,8 @@ ServerResource {
         if (vmTO.getOs().startsWith("Windows")) {
             clock.setClockOffset(ClockDef.ClockOffset.LOCALTIME);
             clock.setTimer("rtc", "catchup", null);
+        } else if (vmTO.getType() != VirtualMachine.Type.User) {
+            clock.setTimer("kvmclock", "catchup", null);
         }
 
         vm.addComp(clock);


[20/20] git commit: updated refs/heads/ui-vpc-redesign to 59a9984

Posted by bf...@apache.org.
Merge branch 'master' into ui-vpc-redesign

Conflicts:
	ui/scripts/vpc.js


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

Branch: refs/heads/ui-vpc-redesign
Commit: 59a99848b193836aba06384bda286529feb44693
Parents: cb31791 bfc5887
Author: Brian Federle <br...@citrix.com>
Authored: Wed May 15 10:18:55 2013 -0700
Committer: Brian Federle <br...@citrix.com>
Committed: Wed May 15 10:18:55 2013 -0700

----------------------------------------------------------------------
 .../api/command/user/event/DeleteEventsCmd.java    |    1 -
 docs/en-US/delete-event-alerts.xml                 |    5 +-
 engine/schema/src/com/cloud/dc/dao/VlanDao.java    |    2 +
 .../schema/src/com/cloud/dc/dao/VlanDaoImpl.java   |   15 ++
 .../schema/src/com/cloud/domain/dao/DomainDao.java |    9 +-
 .../src/com/cloud/domain/dao/DomainDaoImpl.java    |   18 ++-
 .../schema/src/com/cloud/event/dao/EventDao.java   |    2 +-
 .../src/com/cloud/event/dao/EventDaoImpl.java      |   27 ++--
 .../com/cloud/network/vpc/dao/PrivateIpDao.java    |    3 +-
 .../cloud/network/vpc/dao/PrivateIpDaoImpl.java    |   11 ++-
 .../schema/src/com/cloud/user/dao/AccountDao.java  |    1 +
 .../src/com/cloud/user/dao/AccountDaoImpl.java     |   19 +++-
 .../kvm/resource/LibvirtComputingResource.java     |    2 +
 .../kvm/storage/LibvirtStorageAdaptor.java         |    3 +-
 .../xen/resource/CitrixResourceBase.java           |    8 +-
 .../xen/resource/XenServer56FP1Resource.java       |   13 ++-
 .../xen/resource/CitrixResourceBaseTest.java       |    8 +-
 .../network/cisco/CiscoVnmcConnectionImpl.java     |   12 +-
 .../cloud/network/resource/CiscoVnmcResource.java  |   12 +-
 .../com/cloud/network/element/MidoNetElement.java  |  113 +++++++++------
 .../network/guru/MidoNetGuestNetworkGuru.java      |   13 ++-
 .../network/guru/MidoNetPublicNetworkGuru.java     |    9 +-
 .../cloud/network/element/MidoNetElementTest.java  |   31 +++--
 .../xenserver/Add-To-VCPUs-Params-Live.sh          |   33 -----
 .../xenserver/add_to_vcpus_params_live.sh          |   33 +++++
 scripts/vm/hypervisor/xenserver/vmops              |    4 +-
 scripts/vm/hypervisor/xenserver/xcpserver/patch    |    1 +
 scripts/vm/hypervisor/xenserver/xenserver56/patch  |    1 +
 .../vm/hypervisor/xenserver/xenserver56fp1/patch   |    1 +
 scripts/vm/hypervisor/xenserver/xenserver60/patch  |    1 +
 .../configuration/ConfigurationManagerImpl.java    |   10 ++-
 .../src/com/cloud/network/NetworkManagerImpl.java  |   16 +-
 .../src/com/cloud/network/NetworkServiceImpl.java  |   53 ++++---
 .../router/VirtualNetworkApplianceManagerImpl.java |   38 +++--
 .../cloud/network/vpc/NetworkACLServiceImpl.java   |    8 +-
 .../resourcelimit/ResourceLimitManagerImpl.java    |   23 +++-
 .../src/com/cloud/server/ManagementServerImpl.java |   24 +++-
 .../cloud/uuididentity/dao/IdentityDaoImpl.java    |    4 +-
 .../com/cloud/event/EventControlsUnitTest.java     |    3 +-
 server/test/com/cloud/vm/UserVmManagerTest.java    |   17 +--
 .../test/com/cloud/vpc/NetworkACLServiceTest.java  |    2 +-
 setup/db/db/schema-410to420.sql                    |    2 +
 tools/marvin/marvin/cloudstackConnection.py        |    9 ++
 ui/scripts/vpc.js                                  |   16 ++-
 44 files changed, 427 insertions(+), 209 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/59a99848/ui/scripts/vpc.js
----------------------------------------------------------------------
diff --cc ui/scripts/vpc.js
index 3235cd6,0c4a446..1d6160a
--- a/ui/scripts/vpc.js
+++ b/ui/scripts/vpc.js
@@@ -101,9 -93,9 +101,9 @@@
          }
        },
  
 -      'protocolnumber': {label:'Protocol Number',isDisabled:true,isHidden:true,edit:true},
 -      'startport': { edit: true, label: 'label.start.port' , isOptional:true },
 -      'endport': { edit: true, label: 'label.end.port' , isOptional:true},
 +      'protocolnumber': {label:'Protocol Number',edit:true},
-       'startport': { edit: true, label: 'label.start.port' },
-       'endport': { edit: true, label: 'label.end.port' },
++      'startport': { edit: true, label: 'label.start.port', isOptional: true },
++      'endport': { edit: true, label: 'label.end.port', isOptional: true },
        'networkid': {
          label: 'Select Tier',
          select: function(args) {


[02/20] git commit: updated refs/heads/ui-vpc-redesign to 59a9984

Posted by bf...@apache.org.
CLOUDSTACK-2115:  remove the trailing '\n' to get correct XS network mode


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

Branch: refs/heads/ui-vpc-redesign
Commit: 1518e7ee43f091fc528cb7b70e5dcfdf7c623e22
Parents: 26cefdc
Author: Anthony Xu <an...@citrix.com>
Authored: Tue May 14 17:52:10 2013 -0700
Committer: Anthony Xu <an...@citrix.com>
Committed: Tue May 14 17:52:10 2013 -0700

----------------------------------------------------------------------
 scripts/vm/hypervisor/xenserver/vmops |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/1518e7ee/scripts/vm/hypervisor/xenserver/vmops
----------------------------------------------------------------------
diff --git a/scripts/vm/hypervisor/xenserver/vmops b/scripts/vm/hypervisor/xenserver/vmops
index 66cde4f..60fb8ab 100755
--- a/scripts/vm/hypervisor/xenserver/vmops
+++ b/scripts/vm/hypervisor/xenserver/vmops
@@ -279,7 +279,7 @@ def setLinkLocalIP(session, args):
         except:
             return 'can not cat network.conf'
 
-        if result.lower() == "bridge":
+        if result.lower().strip() == "bridge":
             try:
                 cmd = ["brctl", "addbr", brName]
                 txt = util.pread2(cmd)


[09/20] git commit: updated refs/heads/ui-vpc-redesign to 59a9984

Posted by bf...@apache.org.
CLOUDSTACK-1904: API : UI : Admin can not delete Events/Archive from other accounts


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

Branch: refs/heads/ui-vpc-redesign
Commit: 9542f105927ceba39a4da0e2f63c85f21f1e43a1
Parents: b17be94
Author: Sanjay Tripathi <sa...@citrix.com>
Authored: Fri Apr 26 16:47:56 2013 +0530
Committer: Pranav Saxena <pr...@citrix.com>
Committed: Wed May 15 15:28:37 2013 +0530

----------------------------------------------------------------------
 .../api/command/user/event/DeleteEventsCmd.java    |    1 -
 .../schema/src/com/cloud/domain/dao/DomainDao.java |    9 +++--
 .../src/com/cloud/domain/dao/DomainDaoImpl.java    |   18 +++++++++-
 .../schema/src/com/cloud/event/dao/EventDao.java   |    2 +-
 .../src/com/cloud/event/dao/EventDaoImpl.java      |   27 ++++++++-------
 .../schema/src/com/cloud/user/dao/AccountDao.java  |    1 +
 .../src/com/cloud/user/dao/AccountDaoImpl.java     |   19 +++++++++-
 .../src/com/cloud/server/ManagementServerImpl.java |   24 ++++++++++++-
 .../com/cloud/event/EventControlsUnitTest.java     |    3 +-
 9 files changed, 77 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9542f105/api/src/org/apache/cloudstack/api/command/user/event/DeleteEventsCmd.java
----------------------------------------------------------------------
diff --git a/api/src/org/apache/cloudstack/api/command/user/event/DeleteEventsCmd.java b/api/src/org/apache/cloudstack/api/command/user/event/DeleteEventsCmd.java
index 55ca92a..a03e6d9 100644
--- a/api/src/org/apache/cloudstack/api/command/user/event/DeleteEventsCmd.java
+++ b/api/src/org/apache/cloudstack/api/command/user/event/DeleteEventsCmd.java
@@ -25,7 +25,6 @@ import org.apache.cloudstack.api.ApiErrorCode;
 import org.apache.cloudstack.api.BaseCmd;
 import org.apache.cloudstack.api.Parameter;
 import org.apache.cloudstack.api.ServerApiException;
-import org.apache.cloudstack.api.response.AlertResponse;
 import org.apache.cloudstack.api.response.EventResponse;
 import org.apache.cloudstack.api.response.SuccessResponse;
 import org.apache.log4j.Logger;

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9542f105/engine/schema/src/com/cloud/domain/dao/DomainDao.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/domain/dao/DomainDao.java b/engine/schema/src/com/cloud/domain/dao/DomainDao.java
index afeb0f4..cb1c1f2 100644
--- a/engine/schema/src/com/cloud/domain/dao/DomainDao.java
+++ b/engine/schema/src/com/cloud/domain/dao/DomainDao.java
@@ -26,9 +26,10 @@ public interface DomainDao extends GenericDao<DomainVO, Long> {
     public DomainVO create(DomainVO domain);
     public DomainVO findDomainByPath(String domainPath);
     public boolean isChildDomain(Long parentId, Long childId);
-	DomainVO findImmediateChildForParent(Long parentId);
-	List<DomainVO> findImmediateChildrenForParent(Long parentId);
-	List<DomainVO> findAllChildren(String path, Long parentId);
-	List<DomainVO> findInactiveDomains();
+    DomainVO findImmediateChildForParent(Long parentId);
+    List<DomainVO> findImmediateChildrenForParent(Long parentId);
+    List<DomainVO> findAllChildren(String path, Long parentId);
+    List<DomainVO> findInactiveDomains();
     Set<Long> getDomainParentIds(long domainId);
+    List<Long> getDomainChildrenIds(String path);
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9542f105/engine/schema/src/com/cloud/domain/dao/DomainDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/domain/dao/DomainDaoImpl.java b/engine/schema/src/com/cloud/domain/dao/DomainDaoImpl.java
index c30ca5e..9460a73 100644
--- a/engine/schema/src/com/cloud/domain/dao/DomainDaoImpl.java
+++ b/engine/schema/src/com/cloud/domain/dao/DomainDaoImpl.java
@@ -32,6 +32,7 @@ import com.cloud.domain.Domain;
 import com.cloud.domain.DomainVO;
 import com.cloud.utils.db.DB;
 import com.cloud.utils.db.GenericDaoBase;
+import com.cloud.utils.db.GenericSearchBuilder;
 import com.cloud.utils.db.SearchBuilder;
 import com.cloud.utils.db.SearchCriteria;
 import com.cloud.utils.db.Transaction;
@@ -46,6 +47,7 @@ public class DomainDaoImpl extends GenericDaoBase<DomainVO, Long> implements Dom
 	protected SearchBuilder<DomainVO> DomainPairSearch;
 	protected SearchBuilder<DomainVO> ImmediateChildDomainSearch;
 	protected SearchBuilder<DomainVO> FindAllChildrenSearch;
+	protected GenericSearchBuilder<DomainVO, Long> FindIdsOfAllChildrenSearch;
 	protected SearchBuilder<DomainVO> AllFieldsSearch;
 	
 	public DomainDaoImpl () {
@@ -70,7 +72,12 @@ public class DomainDaoImpl extends GenericDaoBase<DomainVO, Long> implements Dom
 		FindAllChildrenSearch.and("path", FindAllChildrenSearch.entity().getPath(), SearchCriteria.Op.LIKE);
 		FindAllChildrenSearch.and("id", FindAllChildrenSearch.entity().getId(), SearchCriteria.Op.NEQ);
 		FindAllChildrenSearch.done();
-		
+
+		FindIdsOfAllChildrenSearch = createSearchBuilder(Long.class);
+		FindIdsOfAllChildrenSearch.selectField(FindIdsOfAllChildrenSearch.entity().getId());
+		FindIdsOfAllChildrenSearch.and("path", FindIdsOfAllChildrenSearch.entity().getPath(), SearchCriteria.Op.LIKE);
+		FindIdsOfAllChildrenSearch.done();
+
 		AllFieldsSearch = createSearchBuilder();
 		AllFieldsSearch.and("name", AllFieldsSearch.entity().getName(), SearchCriteria.Op.EQ);
 		AllFieldsSearch.and("state", AllFieldsSearch.entity().getState(), SearchCriteria.Op.EQ);
@@ -221,7 +228,14 @@ public class DomainDaoImpl extends GenericDaoBase<DomainVO, Long> implements Dom
     	sc.setParameters("id", parentId);
     	return listBy(sc);
     }
-    
+
+    @Override
+    public List<Long> getDomainChildrenIds(String path){
+        SearchCriteria<Long> sc = FindIdsOfAllChildrenSearch.create();
+        sc.setParameters("path", path+"%");
+        return customSearch(sc, null);
+    }
+
     @Override
     public boolean isChildDomain(Long parentId, Long childId) {
         if ((parentId == null) || (childId == null)) {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9542f105/engine/schema/src/com/cloud/event/dao/EventDao.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/event/dao/EventDao.java b/engine/schema/src/com/cloud/event/dao/EventDao.java
index da5f47a..9454ce7 100644
--- a/engine/schema/src/com/cloud/event/dao/EventDao.java
+++ b/engine/schema/src/com/cloud/event/dao/EventDao.java
@@ -31,7 +31,7 @@ public interface EventDao extends GenericDao<EventVO, Long> {
 
     EventVO findCompletedEvent(long startId);
 
-    public List<EventVO> listToArchiveOrDeleteEvents(List<Long> ids, String type, Date olderThan, Long accountId);
+    public List<EventVO> listToArchiveOrDeleteEvents(List<Long> ids, String type, Date olderThan, List<Long> accountIds);
 
     public void archiveEvents(List<EventVO> events);
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9542f105/engine/schema/src/com/cloud/event/dao/EventDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/event/dao/EventDaoImpl.java b/engine/schema/src/com/cloud/event/dao/EventDaoImpl.java
index 6ba59c5..0d3d38a 100644
--- a/engine/schema/src/com/cloud/event/dao/EventDaoImpl.java
+++ b/engine/schema/src/com/cloud/event/dao/EventDaoImpl.java
@@ -49,7 +49,7 @@ public class EventDaoImpl extends GenericDaoBase<EventVO, Long> implements Event
         ToArchiveOrDeleteEventSearch = createSearchBuilder();
         ToArchiveOrDeleteEventSearch.and("id", ToArchiveOrDeleteEventSearch.entity().getId(), Op.IN);
         ToArchiveOrDeleteEventSearch.and("type", ToArchiveOrDeleteEventSearch.entity().getType(), Op.EQ);
-        ToArchiveOrDeleteEventSearch.and("accountId", ToArchiveOrDeleteEventSearch.entity().getAccountId(), Op.EQ);
+        ToArchiveOrDeleteEventSearch.and("accountIds", ToArchiveOrDeleteEventSearch.entity().getAccountId(), Op.IN);
         ToArchiveOrDeleteEventSearch.and("createDateL", ToArchiveOrDeleteEventSearch.entity().getCreateDate(), Op.LT);
         ToArchiveOrDeleteEventSearch.done();
     }
@@ -76,7 +76,7 @@ public class EventDaoImpl extends GenericDaoBase<EventVO, Long> implements Event
     }
 
     @Override
-    public List<EventVO> listToArchiveOrDeleteEvents(List<Long> ids, String type, Date olderThan, Long accountId) {
+    public List<EventVO> listToArchiveOrDeleteEvents(List<Long> ids, String type, Date olderThan, List<Long> accountIds) {
         SearchCriteria<EventVO> sc = ToArchiveOrDeleteEventSearch.create();
         if (ids != null) {
             sc.setParameters("id", ids.toArray(new Object[ids.size()]));
@@ -87,23 +87,24 @@ public class EventDaoImpl extends GenericDaoBase<EventVO, Long> implements Event
         if (olderThan != null) {
             sc.setParameters("createDateL", olderThan);
         }
-        if (accountId != null) {
-            sc.setParameters("accountId", accountId);
+        if (accountIds != null && !accountIds.isEmpty()) {
+            sc.setParameters("accountIds", accountIds.toArray(new Object[accountIds.size()]));
         }
         return search(sc, null);
     }
 
     @Override
     public void archiveEvents(List<EventVO> events) {
-
-        Transaction txn = Transaction.currentTxn();
-        txn.start();
-        for (EventVO event : events) {
-            event = lockRow(event.getId(), true);
-            event.setArchived(true);
-            update(event.getId(), event);
-            txn.commit();
+        if (events != null && !events.isEmpty()) {
+            Transaction txn = Transaction.currentTxn();
+            txn.start();
+            for (EventVO event : events) {
+                event = lockRow(event.getId(), true);
+                event.setArchived(true);
+                update(event.getId(), event);
+                txn.commit();
+            }
+            txn.close();
         }
-        txn.close();
     }
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9542f105/engine/schema/src/com/cloud/user/dao/AccountDao.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/user/dao/AccountDao.java b/engine/schema/src/com/cloud/user/dao/AccountDao.java
index 3b7fa66..204da39 100644
--- a/engine/schema/src/com/cloud/user/dao/AccountDao.java
+++ b/engine/schema/src/com/cloud/user/dao/AccountDao.java
@@ -49,4 +49,5 @@ public interface AccountDao extends GenericDao<AccountVO, Long> {
     //returns only non-removed account
     Account findActiveAccount(String accountName, Long domainId);
     Account findActiveNonProjectAccount(String accountName, Long domainId);
+    List<Long> getAccountIdsForDomains(List<Long> ids);
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9542f105/engine/schema/src/com/cloud/user/dao/AccountDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/user/dao/AccountDaoImpl.java b/engine/schema/src/com/cloud/user/dao/AccountDaoImpl.java
index 892fdcd..aa67e86 100755
--- a/engine/schema/src/com/cloud/user/dao/AccountDaoImpl.java
+++ b/engine/schema/src/com/cloud/user/dao/AccountDaoImpl.java
@@ -35,8 +35,10 @@ import com.cloud.utils.Pair;
 import com.cloud.utils.crypt.DBEncryptionUtil;
 import com.cloud.utils.db.Filter;
 import com.cloud.utils.db.GenericDaoBase;
+import com.cloud.utils.db.GenericSearchBuilder;
 import com.cloud.utils.db.SearchBuilder;
 import com.cloud.utils.db.SearchCriteria;
+import com.cloud.utils.db.SearchCriteria.Op;
 import com.cloud.utils.db.Transaction;
 
 @Component
@@ -54,7 +56,8 @@ public class AccountDaoImpl extends GenericDaoBase<AccountVO, Long> implements A
     protected final SearchBuilder<AccountVO> CleanupForRemovedAccountsSearch;
     protected final SearchBuilder<AccountVO> CleanupForDisabledAccountsSearch;
     protected final SearchBuilder<AccountVO> NonProjectAccountSearch;
-    
+    protected final GenericSearchBuilder<AccountVO, Long> AccountIdsSearch;
+
     public AccountDaoImpl() {
         AllFieldsSearch = createSearchBuilder();
         AllFieldsSearch.and("accountName", AllFieldsSearch.entity().getAccountName(), SearchCriteria.Op.EQ);
@@ -91,6 +94,11 @@ public class AccountDaoImpl extends GenericDaoBase<AccountVO, Long> implements A
         NonProjectAccountSearch.and("state", NonProjectAccountSearch.entity().getState(), SearchCriteria.Op.EQ);
         NonProjectAccountSearch.and("type", NonProjectAccountSearch.entity().getType(), SearchCriteria.Op.NEQ);
         NonProjectAccountSearch.done();
+
+        AccountIdsSearch = createSearchBuilder(Long.class);
+        AccountIdsSearch.selectField(AccountIdsSearch.entity().getId());
+        AccountIdsSearch.and("ids", AccountIdsSearch.entity().getDomainId(), Op.IN);
+        AccountIdsSearch.done();
     }
     
     @Override
@@ -263,5 +271,12 @@ public class AccountDaoImpl extends GenericDaoBase<AccountVO, Long> implements A
         	}
 		}
 	}
-	
+
+    @Override
+    public List<Long> getAccountIdsForDomains(List<Long> domainIds) {
+        SearchCriteria<Long> sc = AccountIdsSearch.create();
+        sc.setParameters("ids", domainIds.toArray(new Object[domainIds.size()]));
+        return customSearch(sc, null);
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9542f105/server/src/com/cloud/server/ManagementServerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java
index 425ecf0..137f07e 100755
--- a/server/src/com/cloud/server/ManagementServerImpl.java
+++ b/server/src/com/cloud/server/ManagementServerImpl.java
@@ -887,10 +887,20 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe
 
     @Override
     public boolean archiveEvents(ArchiveEventsCmd cmd) {
+        Account caller = UserContext.current().getCaller();
         List<Long> ids = cmd.getIds();
         boolean result =true;
+        List<Long> permittedAccountIds = new ArrayList<Long>();
+
+        if (caller.getType() == Account.ACCOUNT_TYPE_NORMAL && caller.getType() == Account.ACCOUNT_TYPE_PROJECT) {
+            permittedAccountIds.add(caller.getId());
+        } else {
+            DomainVO domain = _domainDao.findById(caller.getDomainId());
+            List<Long> permittedDomainIds = _domainDao.getDomainChildrenIds(domain.getPath());
+            permittedAccountIds = _accountDao.getAccountIdsForDomains(permittedDomainIds);
+        }
 
-        List<EventVO> events = _eventDao.listToArchiveOrDeleteEvents(ids, cmd.getType(), cmd.getOlderThan(), cmd.getEntityOwnerId());
+        List<EventVO> events = _eventDao.listToArchiveOrDeleteEvents(ids, cmd.getType(), cmd.getOlderThan(), permittedAccountIds);
         ControlledEntity[] sameOwnerEvents = events.toArray(new ControlledEntity[events.size()]);
         _accountMgr.checkAccess(UserContext.current().getCaller(), null, true, sameOwnerEvents);
 
@@ -904,10 +914,20 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe
 
     @Override
     public boolean deleteEvents(DeleteEventsCmd cmd) {
+        Account caller = UserContext.current().getCaller();
         List<Long> ids = cmd.getIds();
         boolean result =true;
+        List<Long> permittedAccountIds = new ArrayList<Long>();
+
+        if (caller.getType() == Account.ACCOUNT_TYPE_NORMAL || caller.getType() == Account.ACCOUNT_TYPE_PROJECT) {
+            permittedAccountIds.add(caller.getId());
+        } else {
+            DomainVO domain = _domainDao.findById(caller.getDomainId());
+            List<Long> permittedDomainIds = _domainDao.getDomainChildrenIds(domain.getPath());
+            permittedAccountIds = _accountDao.getAccountIdsForDomains(permittedDomainIds);
+        }
 
-        List<EventVO> events = _eventDao.listToArchiveOrDeleteEvents(ids, cmd.getType(), cmd.getOlderThan(), cmd.getEntityOwnerId());
+        List<EventVO> events = _eventDao.listToArchiveOrDeleteEvents(ids, cmd.getType(), cmd.getOlderThan(), permittedAccountIds);
         ControlledEntity[] sameOwnerEvents = events.toArray(new ControlledEntity[events.size()]);
         _accountMgr.checkAccess(UserContext.current().getCaller(), null, true, sameOwnerEvents);
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9542f105/server/test/com/cloud/event/EventControlsUnitTest.java
----------------------------------------------------------------------
diff --git a/server/test/com/cloud/event/EventControlsUnitTest.java b/server/test/com/cloud/event/EventControlsUnitTest.java
index 3c25275..e2a86cd 100644
--- a/server/test/com/cloud/event/EventControlsUnitTest.java
+++ b/server/test/com/cloud/event/EventControlsUnitTest.java
@@ -18,7 +18,6 @@ package com.cloud.event;
 
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.anyList;
-import static org.mockito.Matchers.anyLong;
 import static org.mockito.Matchers.anyString;
 import static org.mockito.Mockito.doNothing;
 import static org.mockito.Mockito.when;
@@ -58,7 +57,7 @@ public class EventControlsUnitTest extends TestCase{
         _mgmtServer._eventDao = _eventDao;
         _mgmtServer._accountMgr = _accountMgr;
         doNothing().when(_accountMgr).checkAccess(any(Account.class), any(AccessType.class), any(Boolean.class), any(ControlledEntity.class));
-        when(_eventDao.listToArchiveOrDeleteEvents(anyList(), anyString(), any(Date.class), anyLong())).thenReturn(_events);
+        when(_eventDao.listToArchiveOrDeleteEvents(anyList(), anyString(), any(Date.class), anyList())).thenReturn(_events);
     }
 
     @After


[15/20] git commit: updated refs/heads/ui-vpc-redesign to 59a9984

Posted by bf...@apache.org.
CLOUDSTACK-2116
Public IP addresses resource count of an account - number of ip addresses dedicated to an account
plus the number of ip addresses belonging to the system that have been allocated to the account


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

Branch: refs/heads/ui-vpc-redesign
Commit: f893aa8a786a071ebf108bad0368d148755ce233
Parents: 6d68875
Author: Likitha Shetty <li...@citrix.com>
Authored: Tue May 14 14:24:47 2013 +0530
Committer: Likitha Shetty <li...@citrix.com>
Committed: Wed May 15 18:05:01 2013 +0530

----------------------------------------------------------------------
 engine/schema/src/com/cloud/dc/dao/VlanDao.java    |    2 +
 .../schema/src/com/cloud/dc/dao/VlanDaoImpl.java   |   15 +++++++++
 .../configuration/ConfigurationManagerImpl.java    |   10 ++++++-
 .../src/com/cloud/network/NetworkManagerImpl.java  |   16 +++++-----
 .../resourcelimit/ResourceLimitManagerImpl.java    |   23 ++++++++++++++-
 5 files changed, 56 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f893aa8a/engine/schema/src/com/cloud/dc/dao/VlanDao.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/dc/dao/VlanDao.java b/engine/schema/src/com/cloud/dc/dao/VlanDao.java
index 605fb20..39fa818 100755
--- a/engine/schema/src/com/cloud/dc/dao/VlanDao.java
+++ b/engine/schema/src/com/cloud/dc/dao/VlanDao.java
@@ -54,4 +54,6 @@ public interface VlanDao extends GenericDao<VlanVO, Long> {
         List<VlanVO> listZoneWideNonDedicatedVlans(long zoneId);
 
     List<VlanVO> listVlansByNetworkIdAndGateway(long networkid, String gateway);
+
+    List<VlanVO> listDedicatedVlans(long accountId);
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f893aa8a/engine/schema/src/com/cloud/dc/dao/VlanDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/dc/dao/VlanDaoImpl.java b/engine/schema/src/com/cloud/dc/dao/VlanDaoImpl.java
index e8c68b1..eb3bde9 100755
--- a/engine/schema/src/com/cloud/dc/dao/VlanDaoImpl.java
+++ b/engine/schema/src/com/cloud/dc/dao/VlanDaoImpl.java
@@ -58,6 +58,7 @@ public class VlanDaoImpl extends GenericDaoBase<VlanVO, Long> implements VlanDao
     protected SearchBuilder<VlanVO> PhysicalNetworkVlanSearch;
     protected SearchBuilder<VlanVO> ZoneWideNonDedicatedVlanSearch;
     protected SearchBuilder<VlanVO> VlanGatewaysearch;
+    protected SearchBuilder<VlanVO> DedicatedVlanSearch;
 
     protected SearchBuilder<AccountVlanMapVO> AccountVlanMapSearch;
 
@@ -213,6 +214,13 @@ public class VlanDaoImpl extends GenericDaoBase<VlanVO, Long> implements VlanDao
         ZoneWideNonDedicatedVlanSearch.done();
         AccountVlanMapSearch.done();
 
+        DedicatedVlanSearch = createSearchBuilder();
+        AccountVlanMapSearch = _accountVlanMapDao.createSearchBuilder();
+        AccountVlanMapSearch.and("accountId", AccountVlanMapSearch.entity().getAccountId(), SearchCriteria.Op.EQ);
+        DedicatedVlanSearch.join("AccountVlanMapSearch", AccountVlanMapSearch, DedicatedVlanSearch.entity().getId(), AccountVlanMapSearch.entity().getVlanDbId(), JoinBuilder.JoinType.LEFTOUTER);
+        DedicatedVlanSearch.done();
+        AccountVlanMapSearch.done();
+
         return result;
     }
 
@@ -343,4 +351,11 @@ public class VlanDaoImpl extends GenericDaoBase<VlanVO, Long> implements VlanDao
         return listBy(sc);
     }
 
+    @Override
+    public List<VlanVO> listDedicatedVlans(long accountId) {
+        SearchCriteria<VlanVO> sc = DedicatedVlanSearch.create();
+        sc.setJoinParameters("AccountVlanMapSearch", "accountId", accountId);
+        return listBy(sc);
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f893aa8a/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 55e7b7e..e1aaa50 100755
--- a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
+++ b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
@@ -2853,6 +2853,8 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
                         ip.getDataCenterId(), ip.getId(), ip.getAddress().toString(), ip.isSourceNat(), vlan.getVlanType().toString(),
                         ip.getSystem(), ip.getClass().getName(), ip.getUuid());
             }
+            // increment resource count for dedicated public ip's
+            _resourceLimitMgr.incrementResourceCount(vlanOwner.getId(), ResourceType.public_ip, new Long(ips.size()));
         } else if (podId != null) {
             // This VLAN is pod-wide, so create a PodVlanMapVO entry
             PodVlanMapVO podVlanMapVO = new PodVlanMapVO(podId, vlan.getId());
@@ -3124,6 +3126,10 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
                     ip.getDataCenterId(), ip.getId(), ip.getAddress().toString(), ip.isSourceNat(), vlan.getVlanType().toString(),
                     ip.getSystem(), ip.getClass().getName(), ip.getUuid());
         }
+
+        // increment resource count for dedicated public ip's
+        _resourceLimitMgr.incrementResourceCount(vlanOwner.getId(), ResourceType.public_ip, new Long(ips.size()));
+
         return vlan;
     }
 
@@ -3187,10 +3193,12 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
         if (_accountVlanMapDao.remove(acctVln.get(0).getId())) {
             // generate usage events to remove dedication for every ip in the range
             for (IPAddressVO ip : ips) {
-                UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NET_IP_RELEASE, acctVln.get(0).getId(),
+                UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NET_IP_RELEASE, acctVln.get(0).getAccountId(),
                         ip.getDataCenterId(), ip.getId(), ip.getAddress().toString(), ip.isSourceNat(), vlan.getVlanType().toString(),
                         ip.getSystem(), ip.getClass().getName(), ip.getUuid());
             }
+            // decrement resource count for dedicated public ip's
+            _resourceLimitMgr.decrementResourceCount(acctVln.get(0).getAccountId(), ResourceType.public_ip, new Long(ips.size()));
             return true;
         } else {
             return false;

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f893aa8a/server/src/com/cloud/network/NetworkManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java
index 4ce5440..9440286 100755
--- a/server/src/com/cloud/network/NetworkManagerImpl.java
+++ b/server/src/com/cloud/network/NetworkManagerImpl.java
@@ -394,8 +394,8 @@ public class NetworkManagerImpl extends ManagerBase implements NetworkManager, L
                         addr.getDataCenterId(), addr.getId(), addr.getAddress().toString(), addr.isSourceNat(), guestType,
                         addr.getSystem(), addr.getClass().getName(), addr.getUuid());
             }
-            // don't increment resource count for direct ip addresses
-            if (addr.getAssociatedWithNetworkId() != null) {
+            // don't increment resource count for direct and dedicated ip addresses
+            if (addr.getAssociatedWithNetworkId() != null && !isIpDedicated(addr)) {
                 _resourceLimitMgr.incrementResourceCount(owner.getId(), ResourceType.public_ip);
             }
         }
@@ -640,10 +640,6 @@ public class NetworkManagerImpl extends ManagerBase implements NetworkManager, L
                 s_logger.debug("Associate IP address lock acquired");
             }
 
-            // Check that the maximum number of public IPs for the given
-            // accountId will not be exceeded
-            _resourceLimitMgr.checkResourceLimit(accountToLock, ResourceType.public_ip);
-
             txn.start();
 
             // If account has dedicated Public IP ranges, allocate IP from the dedicated range
@@ -668,6 +664,10 @@ public class NetworkManagerImpl extends ManagerBase implements NetworkManager, L
             }
 
             if (!allocateFromDedicatedRange) {
+                // Check that the maximum number of public IPs for the given
+                // accountId will not be exceeded
+                _resourceLimitMgr.checkResourceLimit(accountToLock, ResourceType.public_ip);
+
                 List<VlanVO> nonDedicatedVlans = _vlanDao.listZoneWideNonDedicatedVlans(zone.getId());
                 for (VlanVO nonDedicatedVlan : nonDedicatedVlans) {
                     nonDedicatedVlanDbIds.add(nonDedicatedVlan.getId());
@@ -2964,8 +2964,8 @@ public class NetworkManagerImpl extends ManagerBase implements NetworkManager, L
         if (ip.getState() != State.Releasing) {
             txn.start();
 
-            // don't decrement resource count for direct ips
-            if (ip.getAssociatedWithNetworkId() != null) {
+            // don't decrement resource count for direct and dedicated ips
+            if (ip.getAssociatedWithNetworkId() != null && !isIpDedicated(ip)) {
                 _resourceLimitMgr.decrementResourceCount(_ipAddressDao.findById(addrId).getAllocatedToAccountId(), ResourceType.public_ip);
             }
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f893aa8a/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 5bb7708..6d929c6 100755
--- a/server/src/com/cloud/resourcelimit/ResourceLimitManagerImpl.java
+++ b/server/src/com/cloud/resourcelimit/ResourceLimitManagerImpl.java
@@ -46,6 +46,8 @@ import com.cloud.configuration.dao.ConfigurationDao;
 import com.cloud.configuration.dao.ResourceCountDao;
 import com.cloud.configuration.dao.ResourceLimitDao;
 import com.cloud.dao.EntityManager;
+import com.cloud.dc.VlanVO;
+import com.cloud.dc.dao.VlanDao;
 import com.cloud.domain.Domain;
 import com.cloud.domain.DomainVO;
 import com.cloud.domain.dao.DomainDao;
@@ -53,6 +55,7 @@ import com.cloud.exception.InvalidParameterValueException;
 import com.cloud.exception.PermissionDeniedException;
 import com.cloud.exception.ResourceAllocationException;
 import com.cloud.network.dao.IPAddressDao;
+import com.cloud.network.dao.IPAddressVO;
 import com.cloud.network.dao.NetworkDao;
 import com.cloud.network.vpc.dao.VpcDao;
 import com.cloud.projects.Project;
@@ -141,6 +144,8 @@ public class ResourceLimitManagerImpl extends ManagerBase implements ResourceLim
     private ServiceOfferingDao _serviceOfferingDao;
     @Inject
     private VMTemplateHostDao _vmTemplateHostDao;
+    @Inject
+    private VlanDao _vlanDao;
 
     protected GenericSearchBuilder<VMTemplateHostVO, SumCount> templateSizeSearch;
 
@@ -814,7 +819,7 @@ public class ResourceLimitManagerImpl extends ManagerBase implements ResourceLim
         } else if (type == Resource.ResourceType.snapshot) {
             newCount = _snapshotDao.countSnapshotsForAccount(accountId);
         } else if (type == Resource.ResourceType.public_ip) {
-            newCount = _ipAddressDao.countAllocatedIPsForAccount(accountId);
+            newCount = calculatePublicIpForAccount(accountId);
         } else if (type == Resource.ResourceType.template) {
             newCount = _vmTemplateDao.countTemplatesForAccount(accountId);
         } else if (type == Resource.ResourceType.project) {
@@ -906,6 +911,22 @@ public class ResourceLimitManagerImpl extends ManagerBase implements ResourceLim
         return totalVolumesSize + totalSnapshotsSize + totalTemplatesSize;
     }
 
+    private long calculatePublicIpForAccount(long accountId) {
+        Long dedicatedCount = 0L;
+        Long allocatedCount = 0L;
+
+        List<VlanVO> dedicatedVlans = _vlanDao.listDedicatedVlans(accountId);
+        for (VlanVO dedicatedVlan : dedicatedVlans) {
+            List<IPAddressVO> ips = _ipAddressDao.listByVlanId(dedicatedVlan.getId());
+            dedicatedCount += new Long(ips.size());
+        }
+        allocatedCount = _ipAddressDao.countAllocatedIPsForAccount(accountId);
+        if (dedicatedCount > allocatedCount)
+            return dedicatedCount;
+        else
+            return allocatedCount;
+    }
+
     @Override
     public long getResourceCount(Account account, ResourceType type) {
         return _resourceCountDao.getResourceCount(account.getId(), ResourceOwnerType.Account, type);


[03/20] git commit: updated refs/heads/ui-vpc-redesign to 59a9984

Posted by bf...@apache.org.
CLOUDSTACK-2475: Failed to create PF rules with Cisco VNMC as the port pool object name is exceeding the max limit
Ip and port pool object names in VNMC were created by appending guest vlan, public ip and id of corresponding rule for better readability. This resulted in the name exceeding max. length allowed.
Shortened the name by removing public ip part from it.


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

Branch: refs/heads/ui-vpc-redesign
Commit: f484f4af09ce9e9532e17fb231c48d7a7e7c9e81
Parents: 1518e7e
Author: Koushik Das <ko...@citrix.com>
Authored: Wed May 15 09:12:48 2013 +0530
Committer: Koushik Das <ko...@citrix.com>
Committed: Wed May 15 09:12:48 2013 +0530

----------------------------------------------------------------------
 .../network/cisco/CiscoVnmcConnectionImpl.java     |   12 ++++++------
 .../cloud/network/resource/CiscoVnmcResource.java  |   12 +++++++-----
 2 files changed, 13 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f484f4af/plugins/network-elements/cisco-vnmc/src/com/cloud/network/cisco/CiscoVnmcConnectionImpl.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/cisco-vnmc/src/com/cloud/network/cisco/CiscoVnmcConnectionImpl.java b/plugins/network-elements/cisco-vnmc/src/com/cloud/network/cisco/CiscoVnmcConnectionImpl.java
index c7380ab..0e57cae 100644
--- a/plugins/network-elements/cisco-vnmc/src/com/cloud/network/cisco/CiscoVnmcConnectionImpl.java
+++ b/plugins/network-elements/cisco-vnmc/src/com/cloud/network/cisco/CiscoVnmcConnectionImpl.java
@@ -795,7 +795,7 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection {
     }
 
     private String getNameForPFPortPool(String tenantName, String identifier) {
-        return "PFPort-" + tenantName + "-" + identifier;
+        return "PortPool-" + tenantName + "-" + identifier;
     }
 
     private String getDnForPFPortPool(String tenantName, String identifier) {
@@ -803,7 +803,7 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection {
     }
 
     private String getNameForPFIpPool(String tenantName, String identifier) {
-        return "PFIp-" + tenantName + "-" + identifier;
+        return "IpPool-" + tenantName + "-" + identifier;
     }
 
     private String getDnForPFIpPool(String tenantName, String identifier) {
@@ -1010,8 +1010,8 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection {
         xml = replaceXmlValue(xml, "natruledn", getDnForPFRule(tenantName, identifier, policyIdentifier));
         xml = replaceXmlValue(xml, "natrulename", getNameForPFRule(tenantName, identifier));
         xml = replaceXmlValue(xml, "descr", "PF rule for Tenant VDC " + tenantName);
-        xml = replaceXmlValue(xml, "ippoolname", getNameForPFIpPool(tenantName, policyIdentifier + "-" + identifier));
-        xml = replaceXmlValue(xml, "portpoolname", getNameForPFPortPool(tenantName, policyIdentifier + "-" + identifier));
+        xml = replaceXmlValue(xml, "ippoolname", getNameForPFIpPool(tenantName, identifier));
+        xml = replaceXmlValue(xml, "portpoolname", getNameForPFPortPool(tenantName, identifier));
         xml = replaceXmlValue(xml, "ip", publicIp);
         xml = replaceXmlValue(xml, "startport", startPort);
         xml = replaceXmlValue(xml, "endport", endPort);
@@ -1088,7 +1088,7 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection {
     }
 
     private String getNameForDNatIpPool(String tenantName, String identifier) {
-        return "DNATIp-" + tenantName + "-" + identifier;
+        return "IpPool-" + tenantName + "-" + identifier;
     }
 
     private String getDnForDNatIpPool(String tenantName, String identifier) {
@@ -1135,7 +1135,7 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection {
         xml = replaceXmlValue(xml, "natruledn", getDnForDNatRule(tenantName, identifier, policyIdentifier));
         xml = replaceXmlValue(xml, "natrulename", getNameForDNatRule(tenantName, identifier));
         xml = replaceXmlValue(xml, "descr", "DNAT rule for Tenant VDC " + tenantName);
-        xml = replaceXmlValue(xml, "ippoolname", getNameForDNatIpPool(tenantName, policyIdentifier + "-" + identifier));
+        xml = replaceXmlValue(xml, "ippoolname", getNameForDNatIpPool(tenantName, identifier));
         xml = replaceXmlValue(xml, "ip", publicIp);
 
         List<String> rules = listChildren(getDnForDNatPolicy(tenantName, policyIdentifier));

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f484f4af/plugins/network-elements/cisco-vnmc/src/com/cloud/network/resource/CiscoVnmcResource.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/cisco-vnmc/src/com/cloud/network/resource/CiscoVnmcResource.java b/plugins/network-elements/cisco-vnmc/src/com/cloud/network/resource/CiscoVnmcResource.java
index 9c81b2e..176fdc4 100644
--- a/plugins/network-elements/cisco-vnmc/src/com/cloud/network/resource/CiscoVnmcResource.java
+++ b/plugins/network-elements/cisco-vnmc/src/com/cloud/network/resource/CiscoVnmcResource.java
@@ -364,7 +364,8 @@ public class CiscoVnmcResource implements ServerResource {
                     } else {
                         String[] externalIpRange = getIpRangeFromCidr(rule.getSourceCidrList().get(0));
                         if (rule.getTrafficType() == TrafficType.Ingress) {
-                            if (!rule.getProtocol().equalsIgnoreCase("icmp")) {
+                            if (!rule.getProtocol().equalsIgnoreCase("icmp")
+                                    && rule.getSrcPortRange() != null) {
                                 if (!_connection.createTenantVDCIngressAclRule(tenant,
                                         Long.toString(rule.getId()), policyIdentifier,
                                         rule.getProtocol().toUpperCase(), externalIpRange[0], externalIpRange[1],
@@ -379,7 +380,8 @@ public class CiscoVnmcResource implements ServerResource {
                                 }
                             }
                         } else {
-                            if (rule.getProtocol().equalsIgnoreCase("tcp") || rule.getProtocol().equalsIgnoreCase("udp")) {
+                            if ((rule.getProtocol().equalsIgnoreCase("tcp") || rule.getProtocol().equalsIgnoreCase("udp"))
+                                    && rule.getSrcPortRange() != null) {
                                 if (!_connection.createTenantVDCEgressAclRule(tenant,
                                         Long.toString(rule.getId()), policyIdentifier,
                                         rule.getProtocol().toUpperCase(),
@@ -477,7 +479,7 @@ public class CiscoVnmcResource implements ServerResource {
                             throw new Exception("Failed to delete ACL ingress rule for DNAT in VNMC for guest network with vlan " + vlanId);
                         }
                     } else {
-                        if (!_connection.createTenantVDCDNatIpPool(tenant, policyIdentifier + "-" + rule.getId(), rule.getDstIp())) {
+                        if (!_connection.createTenantVDCDNatIpPool(tenant, Long.toString(rule.getId()), rule.getDstIp())) {
                             throw new Exception("Failed to create DNAT ip pool in VNMC for guest network with vlan " + vlanId);
                         }
 
@@ -572,10 +574,10 @@ public class CiscoVnmcResource implements ServerResource {
                             throw new Exception("Failed to delete ACL ingress rule for PF in VNMC for guest network with vlan " + vlanId);
                         }
                     } else {
-                        if (!_connection.createTenantVDCPFIpPool(tenant, policyIdentifier + "-" + rule.getId(), rule.getDstIp())) {
+                        if (!_connection.createTenantVDCPFIpPool(tenant, Long.toString(rule.getId()), rule.getDstIp())) {
                             throw new Exception("Failed to create PF ip pool in VNMC for guest network with vlan " + vlanId);
                         }
-                        if (!_connection.createTenantVDCPFPortPool(tenant, policyIdentifier + "-" + rule.getId(),
+                        if (!_connection.createTenantVDCPFPortPool(tenant, Long.toString(rule.getId()),
                                 Integer.toString(rule.getDstPortRange()[0]), Integer.toString(rule.getDstPortRange()[1]))) {
                             throw new Exception("Failed to create PF port pool in VNMC for guest network with vlan " + vlanId);
                         }


[12/20] git commit: updated refs/heads/ui-vpc-redesign to 59a9984

Posted by bf...@apache.org.
CLOUDSTACK-2369 fixed adding same private gw twice


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

Branch: refs/heads/ui-vpc-redesign
Commit: 9b6513466f5826d4932bf69dcf3a531f05ac625c
Parents: 7370638
Author: Jayapal <ja...@citrix.com>
Authored: Wed May 15 15:40:23 2013 +0530
Committer: Kishan Kavala <ki...@cloud.com>
Committed: Wed May 15 16:45:52 2013 +0530

----------------------------------------------------------------------
 .../com/cloud/network/vpc/dao/PrivateIpDao.java    |    3 ++-
 .../cloud/network/vpc/dao/PrivateIpDaoImpl.java    |   11 ++++++++++-
 .../src/com/cloud/network/NetworkServiceImpl.java  |    4 +++-
 3 files changed, 15 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9b651346/engine/schema/src/com/cloud/network/vpc/dao/PrivateIpDao.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/network/vpc/dao/PrivateIpDao.java b/engine/schema/src/com/cloud/network/vpc/dao/PrivateIpDao.java
index 02df92e..ff8c26a 100644
--- a/engine/schema/src/com/cloud/network/vpc/dao/PrivateIpDao.java
+++ b/engine/schema/src/com/cloud/network/vpc/dao/PrivateIpDao.java
@@ -70,6 +70,7 @@ public interface PrivateIpDao extends GenericDao<PrivateIpVO, Long>{
      */
     PrivateIpVO findByIpAndVpcId(long vpcId, String ip4Address);
 
-    
 
+
+    PrivateIpVO findByIpAndSourceNetworkIdAndVpcId(long networkId, String ip4Address, long vpcId);
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9b651346/engine/schema/src/com/cloud/network/vpc/dao/PrivateIpDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/network/vpc/dao/PrivateIpDaoImpl.java b/engine/schema/src/com/cloud/network/vpc/dao/PrivateIpDaoImpl.java
index ecab3bb..fe435c0 100644
--- a/engine/schema/src/com/cloud/network/vpc/dao/PrivateIpDaoImpl.java
+++ b/engine/schema/src/com/cloud/network/vpc/dao/PrivateIpDaoImpl.java
@@ -114,7 +114,16 @@ public class PrivateIpDaoImpl extends GenericDaoBase<PrivateIpVO, Long> implemen
         sc.setParameters("networkId", networkId);
         return findOneBy(sc);
     }
-    
+
+    @Override
+    public PrivateIpVO findByIpAndSourceNetworkIdAndVpcId(long networkId, String ip4Address, long vpcId) {
+        SearchCriteria<PrivateIpVO> sc = AllFieldsSearch.create();
+        sc.setParameters("ip", ip4Address);
+        sc.setParameters("networkId", networkId);
+        sc.setParameters("vpcId", vpcId);
+        return findOneBy(sc);
+    }
+
     @Override
     public PrivateIpVO findByIpAndVpcId(long vpcId, String ip4Address) {
         SearchCriteria<PrivateIpVO> sc = AllFieldsSearch.create();

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9b651346/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 f3ec253..d3ef320 100755
--- a/server/src/com/cloud/network/NetworkServiceImpl.java
+++ b/server/src/com/cloud/network/NetworkServiceImpl.java
@@ -3813,10 +3813,12 @@ public class NetworkServiceImpl extends ManagerBase implements  NetworkService {
             s_logger.debug("Created private network " + privateNetwork);
         } else {
             s_logger.debug("Private network already exists: " + privateNetwork);
+            throw new InvalidParameterValueException("Private network for the vlan: " + vlan + " and cidr  "+ cidr +"  already exists " +
+                    " in zone " + _configMgr.getZone(pNtwk.getDataCenterId()).getName());
         }
 
         //add entry to private_ip_address table
-        PrivateIpVO privateIp = _privateIpDao.findByIpAndSourceNetworkId(privateNetwork.getId(), startIp);
+        PrivateIpVO privateIp = _privateIpDao.findByIpAndSourceNetworkIdAndVpcId(privateNetwork.getId(), startIp, vpcId);
         if (privateIp != null) {
             throw new InvalidParameterValueException("Private ip address " + startIp + " already used for private gateway" +
                     " in zone " + _configMgr.getZone(pNtwk.getDataCenterId()).getName());


[08/20] git commit: updated refs/heads/ui-vpc-redesign to 59a9984

Posted by bf...@apache.org.
don't let requests logs

requests logs to the logger making it hard to distinguish marvin logs
from http logs.

Signed-off-by: Prasanna Santhanam <ts...@apache.org>


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

Branch: refs/heads/ui-vpc-redesign
Commit: b17be94cf5592e9cfd5d346b3d678f31f0a8e374
Parents: 24cdddb
Author: Prasanna Santhanam <ts...@apache.org>
Authored: Wed May 15 14:51:37 2013 +0530
Committer: Prasanna Santhanam <ts...@apache.org>
Committed: Wed May 15 14:52:33 2013 +0530

----------------------------------------------------------------------
 tools/marvin/marvin/cloudstackConnection.py |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b17be94c/tools/marvin/marvin/cloudstackConnection.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/cloudstackConnection.py b/tools/marvin/marvin/cloudstackConnection.py
index 8039117..b5ff5bf 100644
--- a/tools/marvin/marvin/cloudstackConnection.py
+++ b/tools/marvin/marvin/cloudstackConnection.py
@@ -20,6 +20,7 @@ import urllib
 import base64
 import hmac
 import hashlib
+import logging
 import time
 import cloudstackException
 from cloudstackAPI import *
@@ -37,6 +38,7 @@ class cloudConnection(object):
                  apiKey=None, securityKey=None,
                  asyncTimeout=3600, logging=None, scheme='http',
                  path='client/api'):
+        self.loglevel() #Turn off requests logs
         self.apiKey = apiKey
         self.securityKey = securityKey
         self.mgtSvr = mgtSvr
@@ -65,6 +67,13 @@ class cloudConnection(object):
                                self.asyncTimeout, self.logging, self.protocol,
                                self.path)
 
+    def loglevel(self, lvl=logging.WARNING):
+        """
+        Turns off the INFO/DEBUG logs from `requests`
+        """
+        requests_log = logging.getLogger("requests")
+        requests_log.setLevel(lvl)
+
     def poll(self, jobid, response):
         """
         polls the completion of a given jobid


[06/20] git commit: updated refs/heads/ui-vpc-redesign to 59a9984

Posted by bf...@apache.org.
Updated network acl service test to avoid default ACL modification


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

Branch: refs/heads/ui-vpc-redesign
Commit: 39caa0ebdd183f54b2f2b7b635c40f70f1a51d01
Parents: 3388b77
Author: Kishan Kavala <ki...@cloud.com>
Authored: Wed May 15 14:20:29 2013 +0530
Committer: Kishan Kavala <ki...@cloud.com>
Committed: Wed May 15 14:20:29 2013 +0530

----------------------------------------------------------------------
 .../test/com/cloud/vpc/NetworkACLServiceTest.java  |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/39caa0eb/server/test/com/cloud/vpc/NetworkACLServiceTest.java
----------------------------------------------------------------------
diff --git a/server/test/com/cloud/vpc/NetworkACLServiceTest.java b/server/test/com/cloud/vpc/NetworkACLServiceTest.java
index 7cc7200..9a368b9 100644
--- a/server/test/com/cloud/vpc/NetworkACLServiceTest.java
+++ b/server/test/com/cloud/vpc/NetworkACLServiceTest.java
@@ -83,7 +83,7 @@ public class NetworkACLServiceTest extends TestCase{
         createACLItemCmd = new CreateNetworkACLCmd(){
             @Override
             public Long getACLId(){
-                return 1L;
+                return 3L;
             }
 
             @Override


[18/20] git commit: updated refs/heads/ui-vpc-redesign to 59a9984

Posted by bf...@apache.org.
CLOUDSTACK-962: Because of the same reason to this (CLOUDSTACK-685)
https://reviews.apache.org/r/11157/

Signed-off-by: Chip Childers <ch...@gmail.com>


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

Branch: refs/heads/ui-vpc-redesign
Commit: 8f7a51ee5f5d745026d51b9ca3b2746a39f00bf2
Parents: 987c342
Author: Wei Zhou <w....@leaseweb.com>
Authored: Wed May 15 15:54:03 2013 +0100
Committer: Chip Childers <ch...@gmail.com>
Committed: Wed May 15 16:39:22 2013 +0100

----------------------------------------------------------------------
 .../router/VirtualNetworkApplianceManagerImpl.java |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8f7a51ee/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 522b90e..29ef0d5 100755
--- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
+++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
@@ -3956,6 +3956,11 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V
                                 stats.setNetBytesSent(stats.getNetBytesSent() + stats.getCurrentBytesSent());
                             }
                             stats.setCurrentBytesSent(answer.getBytesSent());
+                            if (! _dailyOrHourly) {
+                                //update agg bytes
+                                stats.setAggBytesSent(stats.getNetBytesSent() + stats.getCurrentBytesSent());
+                                stats.setAggBytesReceived(stats.getNetBytesReceived() + stats.getCurrentBytesReceived());
+                            }
                             _userStatsDao.update(stats.getId(), stats);
                             txn.commit();
                         } catch (Exception e) {


[16/20] git commit: updated refs/heads/ui-vpc-redesign to 59a9984

Posted by bf...@apache.org.
CLOUDSTACK-2134 updated acl checks for aquiring nic secondary ip


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

Branch: refs/heads/ui-vpc-redesign
Commit: 36a312d4b24908cad107c2ae351c2c686890b995
Parents: f893aa8
Author: Jayapal <ja...@citrix.com>
Authored: Thu Apr 25 12:56:38 2013 +0530
Committer: Murali Reddy <mu...@gmail.com>
Committed: Wed May 15 18:08:15 2013 +0530

----------------------------------------------------------------------
 .../src/com/cloud/network/NetworkServiceImpl.java  |   49 ++++++++-------
 1 files changed, 27 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/36a312d4/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 d3ef320..5f51a30 100755
--- a/server/src/com/cloud/network/NetworkServiceImpl.java
+++ b/server/src/com/cloud/network/NetworkServiceImpl.java
@@ -610,18 +610,7 @@ public class NetworkServiceImpl extends ManagerBase implements  NetworkService {
             throw new InvalidParameterValueException("Invalid network id is given");
         }
 
-        Network network = _networksDao.findById(networkId);
-        if (network == null) {
-            throw new InvalidParameterValueException("Invalid network id is given");
-        }
-        accountId = network.getAccountId();
-        domainId = network.getDomainId();
-
-        // Validate network offering
-        NetworkOfferingVO ntwkOff = _networkOfferingDao.findById(network.getNetworkOfferingId());
-
-        // verify permissions
-        _accountMgr.checkAccess(ipOwner, null, true, network);
+        Account caller = UserContext.current().getCaller();
 
         //check whether the nic belongs to user vm.
         NicVO nicVO = _nicDao.findById(nicId);
@@ -633,6 +622,25 @@ public class NetworkServiceImpl extends ManagerBase implements  NetworkService {
             throw new InvalidParameterValueException("The nic is not belongs to user vm");
         }
 
+        Nic nic = _nicDao.findById(nicId);
+        VirtualMachine vm = _userVmDao.findById(nicVO.getInstanceId());
+        if (vm == null) {
+            throw new InvalidParameterValueException("There is no vm with the nic");
+        }
+        // verify permissions
+        _accountMgr.checkAccess(ipOwner, null, true, vm);
+
+
+        Network network = _networksDao.findById(networkId);
+        if (network == null) {
+            throw new InvalidParameterValueException("Invalid network id is given");
+        }
+        accountId = network.getAccountId();
+        domainId = network.getDomainId();
+
+        // Validate network offering
+        NetworkOfferingVO ntwkOff = _networkOfferingDao.findById(network.getNetworkOfferingId());
+
         DataCenter dc = _dcDao.findById(network.getDataCenterId());
         Long id = nicVO.getInstanceId();
 
@@ -649,14 +657,7 @@ public class NetworkServiceImpl extends ManagerBase implements  NetworkService {
                 throw new InvalidParameterValueException("Allocating guest ip for nic failed");
             }
         } else if (dc.getNetworkType() == NetworkType.Basic || ntwkOff.getGuestType()  == Network.GuestType.Shared) {
-            Account caller = UserContext.current().getCaller();
-            long callerUserId = UserContext.current().getCallerUserId();
-            _accountMgr.checkAccess(caller, SecurityChecker.AccessType.UseNetwork, false, network);
             //handle the basic networks here
-            VirtualMachine vm = _userVmDao.findById(nicVO.getInstanceId());
-            if (vm == null) {
-                throw new InvalidParameterValueException("There is no vm with the nic");
-            }
             VMInstanceVO vmi = (VMInstanceVO)vm;
             Long podId = vmi.getPodIdToDeployIn();
             if (podId == null) {
@@ -718,6 +719,13 @@ public class NetworkServiceImpl extends ManagerBase implements  NetworkService {
             throw new InvalidParameterValueException("Unable to find ip address by id");
         }
 
+        VirtualMachine vm = _userVmDao.findById(secIpVO.getVmId());
+        if (vm == null) {
+            throw new InvalidParameterValueException("There is no vm with the nic");
+        }
+        // verify permissions
+        _accountMgr.checkAccess(caller, null, true, vm);
+
         Network network = _networksDao.findById(secIpVO.getNetworkId());
 
         if (network == null) {
@@ -727,9 +735,6 @@ public class NetworkServiceImpl extends ManagerBase implements  NetworkService {
         // Validate network offering
         NetworkOfferingVO ntwkOff = _networkOfferingDao.findById(network.getNetworkOfferingId());
 
-        // verify permissions
-        _accountMgr.checkAccess(caller, null, true, network);
-
         Long nicId = secIpVO.getNicId();
         s_logger.debug("ip id = " + ipAddressId + " nic id = " + nicId);
         //check is this the last secondary ip for NIC


[11/20] git commit: updated refs/heads/ui-vpc-redesign to 59a9984

Posted by bf...@apache.org.
CLOUDSTACK:685 Fix user stat collection in PrepareStop part of VirtualNetworkApplianceImpl


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

Branch: refs/heads/ui-vpc-redesign
Commit: 737063891592af1d896f150cca02ff3d63a0198c
Parents: ffe90c0
Author: Wei Zhou <w....@leaseweb.com>
Authored: Wed May 15 15:53:36 2013 +0530
Committer: Kishan Kavala <ki...@cloud.com>
Committed: Wed May 15 16:45:52 2013 +0530

----------------------------------------------------------------------
 .../router/VirtualNetworkApplianceManagerImpl.java |   33 ++++++++-------
 1 files changed, 18 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/73706389/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 f6057e8..522b90e 100755
--- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
+++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
@@ -3888,26 +3888,29 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V
         String privateIP = router.getPrivateIpAddress();
 
         if (privateIP != null) {
+            boolean forVpc = router.getVpcId() != null;
             List<? extends Nic> routerNics = _nicDao.listByVmId(router.getId());
             for (Nic routerNic : routerNics) {
                 Network network = _networkModel.getNetwork(routerNic.getNetworkId());
-                if (network.getTrafficType() == TrafficType.Public) {
-                    boolean forVpc = router.getVpcId() != null;
+                //Send network usage command for public nic in VPC VR
+                //Send network usage command for isolated guest nic of non VPC VR
+                if ((forVpc && network.getTrafficType() == TrafficType.Public) || (!forVpc && network.getTrafficType() == TrafficType.Guest && network.getGuestType() == Network.GuestType.Isolated)) {
                     final NetworkUsageCommand usageCmd = new NetworkUsageCommand(privateIP, router.getHostName(),
                             forVpc, routerNic.getIp4Address());
+                    String routerType = router.getType().toString();
                     UserStatisticsVO previousStats = _userStatsDao.findBy(router.getAccountId(),
-                            router.getDataCenterId(), network.getId(), null, router.getId(), router.getType().toString());
+                            router.getDataCenterId(), network.getId(), (forVpc ? routerNic.getIp4Address() : null), router.getId(), routerType);
                     NetworkUsageAnswer answer = null;
                     try {
                         answer = (NetworkUsageAnswer) _agentMgr.easySend(router.getHostId(), usageCmd);
                     } catch (Exception e) {
-                        s_logger.warn("Error while collecting network stats from router: "+router.getInstanceName()+" from host: "+router.getHostId(), e);
+                        s_logger.warn("Error while collecting network stats from router: " + router.getInstanceName() + " from host: " + router.getHostId(), e);
                         continue;
                     }
 
                     if (answer != null) {
                         if (!answer.getResult()) {
-                            s_logger.warn("Error while collecting network stats from router: "+router.getInstanceName()+" from host: "+router.getHostId() + "; details: " + answer.getDetails());
+                            s_logger.warn("Error while collecting network stats from router: " + router.getInstanceName() + " from host: " + router.getHostId() + "; details: " + answer.getDetails());
                             continue;
                         }
                         Transaction txn = Transaction.open(Transaction.CLOUD_DB);
@@ -3918,26 +3921,26 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V
                             }
                             txn.start();
                             UserStatisticsVO stats = _userStatsDao.lock(router.getAccountId(),
-                                    router.getDataCenterId(), network.getId(), null, router.getId(), router.getType().toString());
+                                    router.getDataCenterId(), network.getId(), (forVpc ? routerNic.getIp4Address() : null), router.getId(), routerType);
                             if (stats == null) {
                                 s_logger.warn("unable to find stats for account: " + router.getAccountId());
                                 continue;
                             }
 
-                            if(previousStats != null 
-                                    && ((previousStats.getCurrentBytesReceived() != stats.getCurrentBytesReceived()) 
-                                            || (previousStats.getCurrentBytesSent() != stats.getCurrentBytesSent()))){
+                            if (previousStats != null
+                                    && ((previousStats.getCurrentBytesReceived() != stats.getCurrentBytesReceived())
+                                    || (previousStats.getCurrentBytesSent() != stats.getCurrentBytesSent()))){
                                 s_logger.debug("Router stats changed from the time NetworkUsageCommand was sent. " +
-                                        "Ignoring current answer. Router: "+answer.getRouterName()+" Rcvd: " + 
-                                        answer.getBytesReceived()+ "Sent: " +answer.getBytesSent());
+                                        "Ignoring current answer. Router: " + answer.getRouterName() + " Rcvd: " +
+                                        answer.getBytesReceived() + "Sent: " + answer.getBytesSent());
                                 continue;
                             }
 
                             if (stats.getCurrentBytesReceived() > answer.getBytesReceived()) {
                                 if (s_logger.isDebugEnabled()) {
                                     s_logger.debug("Received # of bytes that's less than the last one.  " +
-                                            "Assuming something went wrong and persisting it. Router: " + 
-                                            answer.getRouterName()+" Reported: " + answer.getBytesReceived()
+                                            "Assuming something went wrong and persisting it. Router: " +
+                                            answer.getRouterName() + " Reported: " + answer.getBytesReceived()
                                             + " Stored: " + stats.getCurrentBytesReceived());
                                 }
                                 stats.setNetBytesReceived(stats.getNetBytesReceived() + stats.getCurrentBytesReceived());
@@ -3946,8 +3949,8 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V
                             if (stats.getCurrentBytesSent() > answer.getBytesSent()) {
                                 if (s_logger.isDebugEnabled()) {
                                     s_logger.debug("Received # of bytes that's less than the last one.  " +
-                                            "Assuming something went wrong and persisting it. Router: " + 
-                                            answer.getRouterName()+" Reported: " + answer.getBytesSent()
+                                            "Assuming something went wrong and persisting it. Router: " +
+                                            answer.getRouterName() + " Reported: " + answer.getBytesSent()
                                             + " Stored: " + stats.getCurrentBytesSent());
                                 }
                                 stats.setNetBytesSent(stats.getNetBytesSent() + stats.getCurrentBytesSent());


[17/20] git commit: updated refs/heads/ui-vpc-redesign to 59a9984

Posted by bf...@apache.org.
Midonet Plugin bugfixes

* Updated SQL upgrade scripts to include midonet configs.
* Fixed bug where default ICMP allow rule was missing
  on static NAT creation, keeping VMs from being able
  to ping the gateway.
* Changed the filter in the MidoNetElement callbacks to allow
  calls when Midonet is configured.

Signed-off-by: Hugo Trippaers <ht...@schubergphilis.com>


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

Branch: refs/heads/ui-vpc-redesign
Commit: 987c3427dd26f36a060571d022efb7043d0ee473
Parents: 36a312d
Author: Joe Mills <jo...@midokura.jp>
Authored: Wed May 15 17:47:58 2013 +0900
Committer: Hugo Trippaers <ht...@schubergphilis.com>
Committed: Wed May 15 17:06:00 2013 +0200

----------------------------------------------------------------------
 .../com/cloud/network/element/MidoNetElement.java  |  113 +++++++++------
 .../network/guru/MidoNetGuestNetworkGuru.java      |   13 ++-
 .../network/guru/MidoNetPublicNetworkGuru.java     |    9 +-
 .../cloud/network/element/MidoNetElementTest.java  |   31 +++--
 setup/db/db/schema-410to420.sql                    |    2 +
 5 files changed, 107 insertions(+), 61 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/987c3427/plugins/network-elements/midonet/src/com/cloud/network/element/MidoNetElement.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/midonet/src/com/cloud/network/element/MidoNetElement.java b/plugins/network-elements/midonet/src/com/cloud/network/element/MidoNetElement.java
index d07fa56..ab6a6de 100644
--- a/plugins/network-elements/midonet/src/com/cloud/network/element/MidoNetElement.java
+++ b/plugins/network-elements/midonet/src/com/cloud/network/element/MidoNetElement.java
@@ -36,7 +36,6 @@ import com.cloud.network.NetworkModel;
 import com.cloud.network.Networks;
 import com.cloud.network.PhysicalNetworkServiceProvider;
 import com.cloud.network.PublicIpAddress;
-import com.cloud.network.dao.NetworkServiceMapDao;
 import com.cloud.network.rules.FirewallRule;
 import com.cloud.network.rules.PortForwardingRule;
 import com.cloud.network.rules.StaticNat;
@@ -47,6 +46,8 @@ import com.cloud.utils.Pair;
 import com.cloud.utils.component.AdapterBase;
 import com.cloud.utils.component.PluggableService;
 import com.cloud.utils.net.NetUtils;
+import com.cloud.user.AccountVO;
+import com.cloud.user.dao.AccountDao;
 import com.cloud.vm.NicProfile;
 import com.cloud.vm.NicVO;
 import com.cloud.vm.ReservationContext;
@@ -131,14 +132,14 @@ public class MidoNetElement extends AdapterBase implements
     @Inject
     AccountManager _accountMgr;
     @Inject
-    NetworkServiceMapDao _ntwkSrvcDao;
+    AccountDao _accountDao;
 
     public void setMidonetApi(MidonetApi api) {
         this.api = api;
     }
 
-    public void setNtwkSrvcDao(NetworkServiceMapDao ntwkSrvcDao){
-        this._ntwkSrvcDao = ntwkSrvcDao;
+    public void setAccountDao(AccountDao aDao) {
+        this._accountDao = aDao;
     }
 
     @Override
@@ -172,10 +173,13 @@ public class MidoNetElement extends AdapterBase implements
     }
 
     public boolean midoInNetwork(Network network) {
-        for (String pname : _ntwkSrvcDao.getDistinctProviders(network.getId())) {
-            if (pname.equals(getProvider().getName())) {
-                return true;
-            }
+        if((network.getTrafficType() == Networks.TrafficType.Public) &&
+           (network.getBroadcastDomainType() == Networks.BroadcastDomainType.Mido)){
+            return true;
+        }
+        if((network.getTrafficType() == Networks.TrafficType.Guest) &&
+           (network.getBroadcastDomainType() == Networks.BroadcastDomainType.Mido)){
+            return true;
         }
         return false;
     }
@@ -280,6 +284,11 @@ public class MidoNetElement extends AdapterBase implements
         post.addRule().type(DtoRule.RevDNAT).flowAction(DtoRule.Accept).create();
     }
 
+    public String getAccountUuid(Network network) {
+        AccountVO acc = _accountDao.findById(network.getAccountId());
+        return acc.getUuid();
+    }
+
     public boolean associatePublicIP(Network network, final List<? extends PublicIpAddress> ipAddress)
         throws ResourceUnavailableException {
 
@@ -316,7 +325,7 @@ public class MidoNetElement extends AdapterBase implements
                     tenantUplink = ports[0];
                     providerDownlink = ports[1];
 
-                    accountIdStr = String.valueOf(network.getAccountId());
+                    accountIdStr = getAccountUuid(network);
                     boolean isVpc = getIsVpc(network);
                     long id = getRouterId(network, isVpc);
                     routerName = getRouterName(isVpc, id);
@@ -611,7 +620,7 @@ public class MidoNetElement extends AdapterBase implements
         RuleChain preNat = null;
         RuleChain post = null;
 
-        String accountIdStr = String.valueOf(network.getAccountId());
+        String accountIdStr = getAccountUuid(network);
         String networkUUIDStr = String.valueOf(network.getId());
 
         for (StaticNat rule : rules) {
@@ -659,7 +668,7 @@ public class MidoNetElement extends AdapterBase implements
             return false;
         }
         if (canHandle(config, Service.Firewall)) {
-            String accountIdStr = String.valueOf(config.getAccountId());
+            String accountIdStr = getAccountUuid(config);
             String networkUUIDStr = String.valueOf(config.getId());
             RuleChain preFilter = getChain(accountIdStr, networkUUIDStr, RuleChainCode.TR_PREFILTER);
             RuleChain preNat = getChain(accountIdStr, networkUUIDStr, RuleChainCode.TR_PRENAT);
@@ -947,7 +956,7 @@ public class MidoNetElement extends AdapterBase implements
             return false;
         }
 
-        String accountIdStr = String.valueOf(network.getAccountId());
+        String accountIdStr = getAccountUuid(network);
         String networkUUIDStr = String.valueOf(network.getId());
         RuleChain preNat = getChain(accountIdStr, networkUUIDStr, RuleChainCode.TR_PRENAT);
         RuleChain postNat = getChain(accountIdStr, networkUUIDStr, RuleChainCode.TR_POST);
@@ -1170,16 +1179,16 @@ public class MidoNetElement extends AdapterBase implements
         return routerName + "-tenantrouter-" + chain;
     }
 
-    protected RuleChain getChain(String accountID, String routerName, RuleChainCode chainCode){
-        return getChain("", accountID, routerName, chainCode);
+    protected RuleChain getChain(String accountUuid, String routerName, RuleChainCode chainCode){
+        return getChain("", accountUuid, routerName, chainCode);
     }
 
-    protected RuleChain getChain(String networkId, String accountID,
+    protected RuleChain getChain(String networkId, String accountUuid,
                                String routerName, RuleChainCode chainCode){
         String chainName = getChainName(networkId, routerName, chainCode);
 
         MultivaluedMap findChain = new MultivaluedMapImpl();
-        findChain.add("tenant_id", accountID);
+        findChain.add("tenant_id", accountUuid);
 
         ResourceCollection<RuleChain> ruleChains = api.getChains(findChain);
 
@@ -1303,7 +1312,7 @@ public class MidoNetElement extends AdapterBase implements
         String routerName = getRouterName(isVpc, id);
 
         RuleChain egressChain = getChain(String.valueOf(network.getId()),
-                                         String.valueOf(network.getAccountId()),
+                                         getAccountUuid(network),
                                          routerName,
                                          RuleChainCode.ACL_EGRESS);
 
@@ -1325,7 +1334,7 @@ public class MidoNetElement extends AdapterBase implements
         String routerName = getRouterName(isVpc, id);
 
         RuleChain egressChain = getChain(String.valueOf(network.getId()),
-                                         String.valueOf(network.getAccountId()),
+                                         getAccountUuid(network),
                                          routerName,
                                          RuleChainCode.ACL_EGRESS);
 
@@ -1355,6 +1364,14 @@ public class MidoNetElement extends AdapterBase implements
             .position(pos++)
             .create();
 
+        // If it is ICMP to the router, accept that
+        egressChain.addRule().type(DtoRule.Accept)
+            .nwProto(SimpleFirewallRule.stringToProtocolNumber("icmp"))
+            .nwDstAddress(network.getGateway())
+            .nwDstLength(32)
+            .position(pos++)
+            .create();
+
         // Everything else gets dropped
         egressChain.addRule()
             .type(DtoRule.Drop)
@@ -1369,7 +1386,7 @@ public class MidoNetElement extends AdapterBase implements
         boolean isVpc = getIsVpc(network);
         long id = getRouterId(network, isVpc);
         String routerName = getRouterName(isVpc, id);
-        String accountIdStr = String.valueOf(network.getAccountId());
+        String accountIdStr = getAccountUuid(network);
 
         // Add interior port on bridge side
         BridgePort bridgePort = netBridge.addInteriorPort().create();
@@ -1406,6 +1423,14 @@ public class MidoNetElement extends AdapterBase implements
                          .position(pos++)
                          .create();
 
+            // If it is ICMP to the router, accept that
+            inc.addRule().type(DtoRule.Accept)
+                   .nwProto(SimpleFirewallRule.stringToProtocolNumber("icmp"))
+                         .nwDstAddress(network.getGateway())
+                         .nwDstLength(32)
+                         .position(pos++)
+                         .create();
+
             // If it is connection tracked, accept that as well
             inc.addRule().type(DtoRule.Accept)
                          .matchReturnFlow(true)
@@ -1449,27 +1474,25 @@ public class MidoNetElement extends AdapterBase implements
 
     private Bridge getOrCreateNetworkBridge(Network network){
         // Find the single bridge for this network, create if doesn't exist
-        return getOrCreateNetworkBridge(network.getId(), network.getAccountId());
+        return getOrCreateNetworkBridge(network.getId(), getAccountUuid(network));
     }
 
-    private Bridge getOrCreateNetworkBridge(long networkID, long accountID){
-        Bridge netBridge = getNetworkBridge(networkID, accountID);
+    private Bridge getOrCreateNetworkBridge(long networkID, String accountUuid){
+        Bridge netBridge = getNetworkBridge(networkID, accountUuid);
         if(netBridge == null){
 
-            String accountIdStr = String.valueOf(accountID);
             String networkUUIDStr = String.valueOf(networkID);
 
-            netBridge = api.addBridge().tenantId(accountIdStr).name(networkUUIDStr).create();
+            netBridge = api.addBridge().tenantId(accountUuid).name(networkUUIDStr).create();
         }
         return netBridge;
     }
 
-    private Bridge getNetworkBridge(long networkID, long accountID){
+    private Bridge getNetworkBridge(long networkID, String accountUuid){
 
         MultivaluedMap qNetBridge = new MultivaluedMapImpl();
-        String accountIdStr = String.valueOf(accountID);
         String networkUUIDStr = String.valueOf(networkID);
-        qNetBridge.add("tenant_id", accountIdStr);
+        qNetBridge.add("tenant_id", accountUuid);
 
         for (Bridge b : this. api.getBridges(qNetBridge)) {
             if(b.getName().equals(networkUUIDStr)){
@@ -1497,7 +1520,7 @@ public class MidoNetElement extends AdapterBase implements
         boolean isVpc = getIsVpc(network);
         long id = getRouterId(network, isVpc);
 
-        return getOrCreateGuestNetworkRouter(id, network.getAccountId(), isVpc);
+        return getOrCreateGuestNetworkRouter(id, getAccountUuid(network), isVpc);
 
     }
 
@@ -1509,29 +1532,28 @@ public class MidoNetElement extends AdapterBase implements
         }
     }
 
-    protected Router createRouter(long id, long accountID, boolean isVpc) {
+    protected Router createRouter(long id, String accountUuid, boolean isVpc) {
 
-        String accountIdStr = String.valueOf(accountID);
         String routerName = getRouterName(isVpc, id);
 
         //Set up rule chains
         RuleChain pre = api.addChain()
                             .name(getChainName(routerName, RuleChainCode.TR_PRE))
-                            .tenantId(accountIdStr)
+                            .tenantId(accountUuid)
                             .create();
         RuleChain post = api.addChain()
                             .name(getChainName(routerName, RuleChainCode.TR_POST))
-                            .tenantId(accountIdStr)
+                            .tenantId(accountUuid)
                             .create();
 
         // Set up NAT and filter chains for pre-routing
         RuleChain preFilter = api.addChain()
                                   .name(getChainName(routerName, RuleChainCode.TR_PREFILTER))
-                                  .tenantId(accountIdStr)
+                                  .tenantId(accountUuid)
                                   .create();
         RuleChain preNat = api.addChain()
                                   .name(getChainName(routerName, RuleChainCode.TR_PRENAT))
-                                  .tenantId(accountIdStr)
+                                  .tenantId(accountUuid)
                                   .create();
 
         // Hook the chains in - first jump to Filter chain, then jump to Nat chain
@@ -1545,28 +1567,27 @@ public class MidoNetElement extends AdapterBase implements
                      .create();
 
         return api.addRouter()
-                   .tenantId(accountIdStr)
+                   .tenantId(accountUuid)
                    .name(routerName)
                    .inboundFilterId(pre.getId())
                    .outboundFilterId(post.getId())
                    .create();
     }
 
-    private Router getOrCreateGuestNetworkRouter(long id, long accountID, boolean isVpc) {
-        Router tenantRouter = getGuestNetworkRouter(id, accountID, isVpc);
+    private Router getOrCreateGuestNetworkRouter(long id, String accountUuid, boolean isVpc) {
+        Router tenantRouter = getGuestNetworkRouter(id, accountUuid, isVpc);
         if(tenantRouter == null){
-            tenantRouter = createRouter(id, accountID, isVpc);
+            tenantRouter = createRouter(id, accountUuid, isVpc);
         }
         return tenantRouter;
     }
 
-    private Router getGuestNetworkRouter(long id, long accountID, boolean isVpc){
+    private Router getGuestNetworkRouter(long id, String accountUuid, boolean isVpc){
 
         MultivaluedMap qNetRouter = new MultivaluedMapImpl();
-        String accountIdStr = String.valueOf(accountID);
         String routerName = getRouterName(isVpc, id);
 
-        qNetRouter.add("tenant_id", accountIdStr);
+        qNetRouter.add("tenant_id", accountUuid);
 
         for (Router router : api.getRouters(qNetRouter)) {
             if(router.getName().equals(routerName)){
@@ -1613,10 +1634,10 @@ public class MidoNetElement extends AdapterBase implements
     }
 
     private void deleteNetworkBridges(Network network){
-        long accountID = network.getAccountId();
+        String accountUuid = getAccountUuid(network);
         long networkID = network.getId();
 
-        Bridge netBridge = getNetworkBridge(networkID, accountID);
+        Bridge netBridge = getNetworkBridge(networkID, accountUuid);
         if(netBridge != null){
 
             cleanBridge(netBridge);
@@ -1632,11 +1653,11 @@ public class MidoNetElement extends AdapterBase implements
     }
 
     private void deleteGuestNetworkRouters(Network network){
-        long accountID = network.getAccountId();
+        String accountUuid = getAccountUuid(network);
         boolean isVpc = getIsVpc(network);
         long id = getRouterId(network, isVpc);
 
-        Router tenantRouter = getGuestNetworkRouter(id, accountID, isVpc);
+        Router tenantRouter = getGuestNetworkRouter(id, accountUuid, isVpc);
 
         // Delete any peer ports corresponding to this router
         for(Port peerPort : tenantRouter.getPeerPorts((new MultivaluedMapImpl()))){
@@ -1677,7 +1698,7 @@ public class MidoNetElement extends AdapterBase implements
             }
 
             // Remove inbound and outbound filter chains
-            String accountIdStr = String.valueOf(accountID);
+            String accountIdStr = String.valueOf(accountUuid);
             String routerName = getRouterName(isVpc, id);
 
             RuleChain pre = api.getChain(tenantRouter.getInboundFilterId());

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/987c3427/plugins/network-elements/midonet/src/com/cloud/network/guru/MidoNetGuestNetworkGuru.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/midonet/src/com/cloud/network/guru/MidoNetGuestNetworkGuru.java b/plugins/network-elements/midonet/src/com/cloud/network/guru/MidoNetGuestNetworkGuru.java
index 20b74b9..d57affc 100644
--- a/plugins/network-elements/midonet/src/com/cloud/network/guru/MidoNetGuestNetworkGuru.java
+++ b/plugins/network-elements/midonet/src/com/cloud/network/guru/MidoNetGuestNetworkGuru.java
@@ -30,6 +30,8 @@ import com.cloud.network.*;
 import com.cloud.network.PhysicalNetwork;
 import com.cloud.offering.NetworkOffering;
 import com.cloud.user.Account;
+import com.cloud.user.AccountVO;
+import com.cloud.user.dao.AccountDao;
 import com.cloud.vm.*;
 import com.midokura.midonet.client.resource.Bridge;
 import com.cloud.utils.net.NetUtils;
@@ -46,12 +48,16 @@ import com.cloud.vm.Nic.ReservationStrategy;
 
 import javax.ejb.Local;
 import java.util.UUID;
+import javax.inject.Inject;
 
 @Component
 @Local(value = NetworkGuru.class)
 public class MidoNetGuestNetworkGuru extends GuestNetworkGuru {
     private static final Logger s_logger = Logger.getLogger(MidoNetGuestNetworkGuru.class);
 
+    @Inject
+    AccountDao _accountDao;
+
     public MidoNetGuestNetworkGuru() {
         super();
         _isolationMethods = new PhysicalNetwork.IsolationMethod[] { PhysicalNetwork.IsolationMethod.MIDO };
@@ -118,7 +124,8 @@ public class MidoNetGuestNetworkGuru extends GuestNetworkGuru {
             implemented.setCidr(network.getCidr());
         }
 
-        String accountIdStr = String.valueOf(network.getAccountId());
+        AccountVO acc = _accountDao.findById(network.getAccountId());
+        String accountUUIDStr = acc.getUuid();
         String routerName = "";
         if (network.getVpcId() != null) {
             routerName = "VPC" + String.valueOf(network.getVpcId());
@@ -126,7 +133,9 @@ public class MidoNetGuestNetworkGuru extends GuestNetworkGuru {
             routerName = String.valueOf(network.getId());
         }
 
-        String broadcastUriStr = accountIdStr + "." + String.valueOf(network.getId()) + ":" + routerName;
+        String broadcastUriStr = accountUUIDStr + "."
+                                 + String.valueOf(network.getId())
+                                 + ":" + routerName;
 
         implemented.setBroadcastUri(Networks.BroadcastDomainType.Mido.toUri(broadcastUriStr));
         s_logger.debug("Broadcast URI set to " + broadcastUriStr);

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/987c3427/plugins/network-elements/midonet/src/com/cloud/network/guru/MidoNetPublicNetworkGuru.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/midonet/src/com/cloud/network/guru/MidoNetPublicNetworkGuru.java b/plugins/network-elements/midonet/src/com/cloud/network/guru/MidoNetPublicNetworkGuru.java
index 7e93edb..1daf0ba 100644
--- a/plugins/network-elements/midonet/src/com/cloud/network/guru/MidoNetPublicNetworkGuru.java
+++ b/plugins/network-elements/midonet/src/com/cloud/network/guru/MidoNetPublicNetworkGuru.java
@@ -34,6 +34,8 @@ import com.cloud.utils.db.DB;
 import com.cloud.utils.db.Transaction;
 import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.utils.net.NetUtils;
+import com.cloud.user.AccountVO;
+import com.cloud.user.dao.AccountDao;
 import com.cloud.network.dao.NetworkVO;
 import com.cloud.network.dao.IPAddressVO;
 import com.cloud.vm.*;
@@ -50,6 +52,8 @@ public class MidoNetPublicNetworkGuru extends PublicNetworkGuru {
     // Inject any stuff we need to use (DAOs etc)
     @Inject
     NetworkModel _networkModel;
+    @Inject
+    AccountDao _accountDao;
 
     // Don't need to change traffic type stuff, public is fine
 
@@ -228,9 +232,10 @@ public class MidoNetPublicNetworkGuru extends PublicNetworkGuru {
     }
 
     private URI generateBroadcastUri(Network network){
-        String accountIdStr = String.valueOf(network.getAccountId());
+        AccountVO acc = _accountDao.findById(network.getAccountId());
+        String accountUUIDStr = acc.getUuid();
         String networkUUIDStr = String.valueOf(network.getId());
-        return Networks.BroadcastDomainType.Mido.toUri(accountIdStr +
+        return Networks.BroadcastDomainType.Mido.toUri(accountUUIDStr +
                                                        "." +
                                                        networkUUIDStr +
                                                        ":" +

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/987c3427/plugins/network-elements/midonet/test/com/cloud/network/element/MidoNetElementTest.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/midonet/test/com/cloud/network/element/MidoNetElementTest.java b/plugins/network-elements/midonet/test/com/cloud/network/element/MidoNetElementTest.java
index aec9c2d..baf99b9 100644
--- a/plugins/network-elements/midonet/test/com/cloud/network/element/MidoNetElementTest.java
+++ b/plugins/network-elements/midonet/test/com/cloud/network/element/MidoNetElementTest.java
@@ -18,12 +18,13 @@
  */
 
 import com.cloud.network.element.MidoNetElement;
+import com.cloud.user.AccountVO;
+import com.cloud.user.dao.AccountDao;
 import junit.framework.TestCase;
 import static org.junit.Assert.assertEquals;
 import static org.mockito.Mockito.*;
 import com.midokura.midonet.client.MidonetApi;
 import com.midokura.midonet.client.resource.*;
-import com.cloud.network.dao.NetworkServiceMapDao;
 import com.sun.jersey.core.util.MultivaluedMapImpl;
 import com.cloud.network.*;
 import com.cloud.vm.*;
@@ -46,10 +47,6 @@ public class MidoNetElementTest extends TestCase {
 
         //mockMgmt
         MidonetApi api = mock(MidonetApi.class, RETURNS_DEEP_STUBS);
-        ArrayList<String> arr = new ArrayList<String>();
-        arr.add("MidoNet");
-        NetworkServiceMapDao mockNSMD = mock(NetworkServiceMapDao.class);
-        when(mockNSMD.getDistinctProviders(anyLong())).thenReturn(arr);
 
         //mockDhcpHost
         DhcpHost mockDhcpHost = mock(DhcpHost.class);
@@ -82,6 +79,14 @@ public class MidoNetElementTest extends TestCase {
         when(mockNetwork.getGateway()).thenReturn("1.2.3.4");
         when(mockNetwork.getCidr()).thenReturn("1.2.3.0/24");
         when(mockNetwork.getId()).thenReturn((long)2);
+        when(mockNetwork.getBroadcastDomainType()).thenReturn(Networks.BroadcastDomainType.Mido);
+        when(mockNetwork.getTrafficType()).thenReturn(Networks.TrafficType.Guest);
+
+        //mockAccountDao
+        AccountDao mockAccountDao = mock(AccountDao.class);
+        AccountVO mockAccountVO = mock(AccountVO.class);
+        when(mockAccountDao.findById(anyLong())).thenReturn(mockAccountVO);
+        when(mockAccountVO.getUuid()).thenReturn("1");
 
         //mockNic
         NicProfile mockNic = mock(NicProfile.class);
@@ -96,8 +101,8 @@ public class MidoNetElementTest extends TestCase {
         when(mockVm.getType()).thenReturn(VirtualMachine.Type.User);
 
         MidoNetElement elem = new MidoNetElement();
-        elem.setNtwkSrvcDao(mockNSMD);
         elem.setMidonetApi(api);
+        elem.setAccountDao(mockAccountDao);
 
         boolean result = false;
         try {
@@ -119,14 +124,16 @@ public class MidoNetElementTest extends TestCase {
     public void testImplement() {
         //mock
         MidonetApi api = mock(MidonetApi.class, RETURNS_DEEP_STUBS);
-        ArrayList<String> arr = new ArrayList<String>();
-        arr.add("MidoNet");
-        NetworkServiceMapDao mockNSMD = mock(NetworkServiceMapDao.class);
-        when(mockNSMD.getDistinctProviders(anyLong())).thenReturn(arr);
 
+        //mockAccountDao
+        AccountDao mockAccountDao = mock(AccountDao.class);
+        AccountVO mockAccountVO = mock(AccountVO.class);
+        when(mockAccountDao.findById(anyLong())).thenReturn(mockAccountVO);
+        when(mockAccountVO.getUuid()).thenReturn("1");
         MidoNetElement elem = new MidoNetElement();
-        elem.setNtwkSrvcDao(mockNSMD);
+
         elem.setMidonetApi(api);
+        elem.setAccountDao(mockAccountDao);
 
         //mockRPort
         RouterPort mockRPort = mock(RouterPort.class);
@@ -161,6 +168,8 @@ public class MidoNetElementTest extends TestCase {
         when(mockNetwork.getGateway()).thenReturn("1.2.3.4");
         when(mockNetwork.getCidr()).thenReturn("1.2.3.0/24");
         when(mockNetwork.getId()).thenReturn((long)2);
+        when(mockNetwork.getBroadcastDomainType()).thenReturn(Networks.BroadcastDomainType.Mido);
+        when(mockNetwork.getTrafficType()).thenReturn(Networks.TrafficType.Public);
 
         boolean result = false;
         try {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/987c3427/setup/db/db/schema-410to420.sql
----------------------------------------------------------------------
diff --git a/setup/db/db/schema-410to420.sql b/setup/db/db/schema-410to420.sql
index 9e1a871..334aae7 100644
--- a/setup/db/db/schema-410to420.sql
+++ b/setup/db/db/schema-410to420.sql
@@ -29,6 +29,8 @@ INSERT IGNORE INTO `cloud`.`hypervisor_capabilities`(hypervisor_type, hypervisor
 INSERT IGNORE INTO `cloud`.`hypervisor_capabilities`(hypervisor_type, hypervisor_version, max_guests_limit, security_group_enabled, max_hosts_per_cluster) VALUES ('VMware', '5.1', 128, 0, 32);
 DELETE FROM `cloud`.`configuration` where name='vmware.percluster.host.max';
 INSERT IGNORE INTO `cloud`.`configuration` VALUES ('Advanced', 'DEFAULT', 'AgentManager', 'xen.nics.max', '7', 'Maximum allowed nics for Vms created on Xen');
+INSERT IGNORE INTO `cloud`.`configuration` VALUES ('Network', 'DEFAULT', 'management-server', 'midonet.apiserver.address', 'http://localhost:8081', 'Specify the address at which the Midonet API server can be contacted (if using Midonet)');
+INSERT IGNORE INTO `cloud`.`configuration` VALUES ('Network', 'DEFAULT', 'management-server', 'midonet.providerrouter.id', 'd7c5e6a3-e2f4-426b-b728-b7ce6a0448e5', 'Specifies the UUID of the Midonet provider router (if using Midonet)');
 ALTER TABLE `cloud`.`load_balancer_vm_map` ADD state VARCHAR(40) NULL COMMENT 'service status updated by LB healthcheck manager';
 
 alter table storage_pool change storage_provider_id storage_provider_name varchar(255);


[07/20] git commit: updated refs/heads/ui-vpc-redesign to 59a9984

Posted by bf...@apache.org.
CLOUDSTACK-2459 Fix the scale vm tests


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

Branch: refs/heads/ui-vpc-redesign
Commit: 24cdddbf5e645da92855f3f19c8d81b1ddf57e06
Parents: 39caa0e
Author: Nitin Mehta <ni...@citrix.com>
Authored: Wed May 15 14:25:39 2013 +0530
Committer: Nitin Mehta <ni...@citrix.com>
Committed: Wed May 15 14:25:39 2013 +0530

----------------------------------------------------------------------
 server/test/com/cloud/vm/UserVmManagerTest.java |   17 ++++++++---------
 1 files changed, 8 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/24cdddbf/server/test/com/cloud/vm/UserVmManagerTest.java
----------------------------------------------------------------------
diff --git a/server/test/com/cloud/vm/UserVmManagerTest.java b/server/test/com/cloud/vm/UserVmManagerTest.java
index 939ecdc..6a97114 100755
--- a/server/test/com/cloud/vm/UserVmManagerTest.java
+++ b/server/test/com/cloud/vm/UserVmManagerTest.java
@@ -246,8 +246,8 @@ public class UserVmManagerTest {
 
     }
 
-    // Test scaleVm on incompatible HV.
-    //@Test(expected=InvalidParameterValueException.class)
+    // Test scaleVm on equal service offerings.
+    @Test(expected=InvalidParameterValueException.class)
     public void testScaleVMF2()  throws Exception {
 
         ScaleVMCmd cmd = new ScaleVMCmd();
@@ -261,14 +261,11 @@ public class UserVmManagerTest {
         serviceOfferingIdField.setAccessible(true);
         serviceOfferingIdField.set(cmd, 1L);
 
-        //UserContext.current().setEventDetails("Vm Id: "+getId());
-       // Account account = (Account) new AccountVO("testaccount", 1L, "networkdomain", (short) 0, 1);
-        //AccountVO(String accountName, long domainId, String networkDomain, short type, int regionId)
-       // UserContext.registerContext(1, account, null, true);
 
         when(_vmInstanceDao.findById(anyLong())).thenReturn(_vmInstance);
         doReturn(Hypervisor.HypervisorType.XenServer).when(_vmInstance).getHypervisorType();
 
+        doReturn(VirtualMachine.State.Running).when(_vmInstance).getState();
 
         doNothing().when(_accountMgr).checkAccess(_account, null, true, _templateMock);
 
@@ -285,8 +282,8 @@ public class UserVmManagerTest {
 
     }
 
-    // Test scaleVm for Stopped vm. Full positive test.
-    //@Test
+    // Test scaleVm for Stopped vm.
+    @Test(expected=InvalidParameterValueException.class)
     public void testScaleVMF3()  throws Exception {
 
         ScaleVMCmd cmd = new ScaleVMCmd();
@@ -316,10 +313,12 @@ public class UserVmManagerTest {
         when(_configMgr.getServiceOffering(1L)).thenReturn(so1);
 
         doReturn(VirtualMachine.State.Stopped).when(_vmInstance).getState();
+        when(_vmDao.findById(anyLong())).thenReturn(null);
+
 
         doReturn(true).when(_itMgr).upgradeVmDb(anyLong(),anyLong());
 
-        when(_vmDao.findById(anyLong())).thenReturn(_vmMock);
+        //when(_vmDao.findById(anyLong())).thenReturn(_vmMock);
 
         _userVmMgr.upgradeVirtualMachine(cmd);