Updated Branches:
  refs/heads/master 232d44bf6 -> 6f60833f9

CLOUDSTACK-2120: mixed zone management - (1) extend listRouters API to to take 
in zonetype. (2) UI: populate Routers list page with ones whose networktype 
matches selected option in zone type dropdown on top menu. (3) UI: count total 
number of Routers based on selected option in zone type dropdown on top menu.


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

Branch: refs/heads/master
Commit: 6f60833f9321bb1639372900bb625dd657006229
Parents: 232d44b
Author: Jessica Wang <[email protected]>
Authored: Thu Apr 25 15:09:45 2013 -0700
Committer: Jessica Wang <[email protected]>
Committed: Thu Apr 25 15:10:33 2013 -0700

----------------------------------------------------------------------
 .../api/command/admin/router/ListRoutersCmd.java   |    7 +
 .../src/com/cloud/api/query/QueryManagerImpl.java  |   12 ++-
 ui/scripts/system.js                               |   93 ++++++++++-----
 3 files changed, 78 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/6f60833f/api/src/org/apache/cloudstack/api/command/admin/router/ListRoutersCmd.java
----------------------------------------------------------------------
diff --git 
a/api/src/org/apache/cloudstack/api/command/admin/router/ListRoutersCmd.java 
b/api/src/org/apache/cloudstack/api/command/admin/router/ListRoutersCmd.java
index d2b26c0..9fbc940 100644
--- a/api/src/org/apache/cloudstack/api/command/admin/router/ListRoutersCmd.java
+++ b/api/src/org/apache/cloudstack/api/command/admin/router/ListRoutersCmd.java
@@ -64,6 +64,9 @@ public class ListRoutersCmd extends 
BaseListProjectAndAccountResourcesCmd {
             description="the Zone ID of the router")
     private Long zoneId;
 
+    @Parameter(name=ApiConstants.ZONE_TYPE, type=CommandType.STRING, 
description="the network type of the zone that the virtual machine belongs to")
+    private String zoneType;
+    
     @Parameter(name=ApiConstants.NETWORK_ID, type=CommandType.UUID, 
entityType=NetworkResponse.class,
             description="list by network id")
     private Long networkId;
@@ -103,6 +106,10 @@ public class ListRoutersCmd extends 
BaseListProjectAndAccountResourcesCmd {
         return zoneId;
     }
 
+    public String getZoneType() {
+        return zoneType;
+    }
+    
     public Long getNetworkId() {
         return networkId;
     }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/6f60833f/server/src/com/cloud/api/query/QueryManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/query/QueryManagerImpl.java 
b/server/src/com/cloud/api/query/QueryManagerImpl.java
index 67af7e4..2c003d3 100644
--- a/server/src/com/cloud/api/query/QueryManagerImpl.java
+++ b/server/src/com/cloud/api/query/QueryManagerImpl.java
@@ -994,7 +994,8 @@ public class QueryManagerImpl extends ManagerBase 
implements QueryService {
         Long id = cmd.getId();
         String name = cmd.getRouterName();
         String state = cmd.getState();
-        Long zone = cmd.getZoneId();
+        Long zoneId = cmd.getZoneId();
+        String zoneType = cmd.getZoneType();
         Long pod = cmd.getPodId();
         Long hostId = cmd.getHostId();
         String keyword = cmd.getKeyword();
@@ -1027,6 +1028,7 @@ public class QueryManagerImpl extends ManagerBase 
implements QueryService {
         sb.and("accountId", sb.entity().getAccountId(), SearchCriteria.Op.IN);
         sb.and("state", sb.entity().getState(), SearchCriteria.Op.EQ);
         sb.and("dataCenterId", sb.entity().getDataCenterId(), 
SearchCriteria.Op.EQ);
+        sb.and("dataCenterType", sb.entity().getDataCenterType(), 
SearchCriteria.Op.EQ);
         sb.and("podId", sb.entity().getPodId(), SearchCriteria.Op.EQ);
         sb.and("hostId", sb.entity().getHostId(), SearchCriteria.Op.EQ);
         sb.and("vpcId", sb.entity().getVpcId(), SearchCriteria.Op.EQ);
@@ -1067,10 +1069,14 @@ public class QueryManagerImpl extends ManagerBase 
implements QueryService {
             sc.setParameters("state", state);
         }
 
-        if (zone != null) {
-            sc.setParameters("dataCenterId", zone);
+        if (zoneId != null) {
+            sc.setParameters("dataCenterId", zoneId);
         }
 
+        if (zoneType != null) {
+            sc.setParameters("dataCenterType", zoneType);
+        }
+        
         if (pod != null) {
             sc.setParameters("podId", pod);
         }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/6f60833f/ui/scripts/system.js
----------------------------------------------------------------------
diff --git a/ui/scripts/system.js b/ui/scripts/system.js
index fea7669..8c962fc 100644
--- a/ui/scripts/system.js
+++ b/ui/scripts/system.js
@@ -329,22 +329,35 @@
           },
 
           virtualRouterCount: function(data) {
+            var data2 = {
+              projectid: -1,
+              page: 1,
+              pagesize: 1  //specifying pagesize as 1 because we don't need 
any embedded objects to be returned here. The only thing we need from API 
response is "count" property.
+            };
+            if(cloudStack.context.zoneType != null && 
cloudStack.context.zoneType.length > 0) { //Basic type or Advanced type
+              $.extend(data2, {
+                zonetype: cloudStack.context.zoneType
+              });
+            }  
             $.ajax({
               url: createURL('listRouters'),
-              data: {
-                projectid: -1,
-                                                               page: 1,
-                                                               pagesize: 1  
//specifying pagesize as 1 because we don't need any embedded objects to be 
returned here. The only thing we need from API response is "count" property.
-              },
+              data: data2,
               success: function(json) {
-                var total1 = json.listroutersresponse.count ? 
json.listroutersresponse.count : 0;                                             
                 
+                var total1 = json.listroutersresponse.count ? 
json.listroutersresponse.count : 0;              
+                
+                var data3 = {
+                  listAll: true,
+                  page: 1,
+                  pagesize: 1  //specifying pagesize as 1 because we don't 
need any embedded objects to be returned here. The only thing we need from API 
response is "count" property.
+                };
+                if(cloudStack.context.zoneType != null && 
cloudStack.context.zoneType.length > 0) { //Basic type or Advanced type
+                  $.extend(data3, {
+                    zonetype: cloudStack.context.zoneType
+                  });
+                }  
                                                                $.ajax({
                                                                  url: 
createURL('listRouters'),
-                                                                       data: {
-                                                                         
listAll: true,
-                                                                               
page: 1,
-                                                                   pagesize: 1 
 //specifying pagesize as 1 because we don't need any embedded objects to be 
returned here. The only thing we need from API response is "count" property.
-                                                                       },
+                                                                       data: 
data3,
                                                                        
success: function(json) {
                                                                          var 
total2 = json.listroutersresponse.count ? json.listroutersresponse.count : 0;   
          
                                                                                
dataFns.capacity($.extend(data, {
@@ -2317,12 +2330,18 @@
                                                                                
        }
                                                                                
}
 
+                                                                               
var data2 = {
+                      forvpc: false
+                    };
+                                                                               
if(cloudStack.context.zoneType != null && cloudStack.context.zoneType.length > 
0) { //Basic type or Advanced type
+                                                   $.extend(data2, {
+                                                     zonetype: 
cloudStack.context.zoneType
+                                                   });
+                                                 }                             
                                                
                     var routers = [];
                     $.ajax({
                       url: createURL("listRouters&zoneid=" + 
selectedZoneObj.id + "&listAll=true&page=" + args.page + "&pagesize=" + 
pageSize + array1.join("")),
-                      data: {
-                                                                               
          forvpc: false
-                                                                               
        },
+                      data: data2,
                       success: function(json) {
                         var items = json.listroutersresponse.router ?
                               json.listroutersresponse.router : [];
@@ -2334,9 +2353,7 @@
                         // Get project routers
                         $.ajax({
                           url: createURL("listRouters&zoneid=" + 
selectedZoneObj.id + "&listAll=true&page=" + args.page + "&pagesize=" + 
pageSize + array1.join("") + "&projectid=-1"),
-                          data: {
-                                                                               
                                forvpc: false
-                                                                               
                        },
+                          data: data2,
                           success: function(json) {
                             var items = json.listroutersresponse.router ?
                                   json.listroutersresponse.router : [];
@@ -2798,13 +2815,19 @@
                                                                                
        }
                                                                                
}
 
+                                                                               
var data2 = {
+                      forvpc: true
+                    };
+                                           if(cloudStack.context.zoneType != 
null && cloudStack.context.zoneType.length > 0) { //Basic type or Advanced type
+                                             $.extend(data2, {
+                                               zonetype: 
cloudStack.context.zoneType
+                                             });
+                                           }    
                                                                                
var routers = [];
                     $.ajax({
                       url: createURL("listRouters&zoneid=" + 
selectedZoneObj.id + "&listAll=true&page=" + args.page + "&pagesize=" + 
pageSize + array1.join("")),
                       dataType: 'json',
-                                                                               
        data: {
-                                                                               
          forvpc: true
-                                                                               
        },
+                                                                               
        data: data2,
                       async: true,
                       success: function(json) {
                         var items = json.listroutersresponse.router;           
                                                                                
@@ -2816,9 +2839,7 @@
                                                                                
                $.ajax({
                                                                                
                        url: createURL("listRouters&zoneid=" + 
selectedZoneObj.id + "&listAll=true&page=" + args.page + "&pagesize=" + 
pageSize + array1.join("") + "&projectid=-1"),
                                                                                
                        dataType: 'json',
-                                                                               
                        data: {
-                                                                               
                                forvpc: true
-                                                                               
                        },
+                                                                               
                        data: data2,
                                                                                
                        async: true,
                                                                                
                        success: function(json) {
                                                                                
                                var items = json.listroutersresponse.router;    
                                                                                
                        
@@ -5754,10 +5775,16 @@
                   var searchByArgs = args.filterBy.search.value.length ?
                     '&name=' + args.filterBy.search.value : '';
 
+                  var data2 = {};                  
+                  if(cloudStack.context.zoneType != null && 
cloudStack.context.zoneType.length > 0) { //Basic type or Advanced type
+                    $.extend(data2, {
+                      zonetype: cloudStack.context.zoneType
+                    });
+                  }                      
                   var routers = [];
                   $.ajax({
                     url: createURL("listRouters&listAll=true&page=" + 
args.page + "&pagesize=" + pageSize + searchByArgs),
-                    dataType: 'json',
+                    data: data2,
                     async: true,
                     success: function(json) {
                       var items = json.listroutersresponse.router ?
@@ -5770,7 +5797,7 @@
                       // Get project routers
                       $.ajax({
                         url: createURL("listRouters&listAll=true&page=" + 
args.page + "&pagesize=" + pageSize + "&projectid=-1"),
-                        dataType: 'json',
+                        data: data2,
                         async: true,
                         success: function(json) {
                           var items = json.listroutersresponse.router ?
@@ -5854,12 +5881,18 @@
               }
             }
 
+            var data2 = {
+              forvpc: false
+            };
+            if(cloudStack.context.zoneType != null && 
cloudStack.context.zoneType.length > 0) { //Basic type or Advanced type
+              $.extend(data2, {
+                zonetype: cloudStack.context.zoneType
+              });
+            }    
             var routers = [];
             $.ajax({
               url: createURL("listRouters&zoneid=" + selectedZoneObj.id + 
"&listAll=true&page=" + args.page + "&pagesize=" + pageSize + array1.join("")),
-              data: {
-                                                         forvpc: false
-                                                       },
+              data: data2,
               success: function(json) {
                 var items = json.listroutersresponse.router ?
                       json.listroutersresponse.router : [];
@@ -5870,9 +5903,7 @@
                 // Get project routers
                 $.ajax({
                   url: createURL("listRouters&zoneid=" + selectedZoneObj.id + 
"&listAll=true&page=" + args.page + "&pagesize=" + pageSize + array1.join("") + 
"&projectid=-1"),
-                  data: {
-                                                                               
forvpc: false
-                                                                       },
+                  data: data2,
                   success: function(json) {
                     var items = json.listroutersresponse.router ?
                           json.listroutersresponse.router : [];

Reply via email to