Send selected zone and account to listSolidFireVirtualNetworks API command

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

Branch: refs/heads/sf-plugins
Commit: 620af9ca67d8620a6f713cb4d59ffa06a06e6a7a
Parents: 26af0a4
Author: Mike Tutkowski <[email protected]>
Authored: Wed Jul 8 19:45:54 2015 -0600
Committer: Mike Tutkowski <[email protected]>
Committed: Fri Sep 18 19:28:19 2015 -0600

----------------------------------------------------------------------
 .../ListSolidFireVirtualNetworksCmd.java        |  8 +++++++-
 .../solidfire/ApiSolidFireService2.java         |  5 +++--
 .../solidfire/ApiSolidFireServiceImpl2.java     | 20 +++++++++++++++++---
 ui/plugins/sfSharedVolume/sfSharedVolume.js     | 10 ++++++++--
 4 files changed, 35 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/620af9ca/plugins/api/solidfire/src/org/apache/cloudstack/api/command/user/solidfire/ListSolidFireVirtualNetworksCmd.java
----------------------------------------------------------------------
diff --git 
a/plugins/api/solidfire/src/org/apache/cloudstack/api/command/user/solidfire/ListSolidFireVirtualNetworksCmd.java
 
b/plugins/api/solidfire/src/org/apache/cloudstack/api/command/user/solidfire/ListSolidFireVirtualNetworksCmd.java
index a8c0ccd..750f1c8 100644
--- 
a/plugins/api/solidfire/src/org/apache/cloudstack/api/command/user/solidfire/ListSolidFireVirtualNetworksCmd.java
+++ 
b/plugins/api/solidfire/src/org/apache/cloudstack/api/command/user/solidfire/ListSolidFireVirtualNetworksCmd.java
@@ -31,6 +31,7 @@ import org.apache.cloudstack.api.Parameter;
 import org.apache.cloudstack.api.ServerApiException;
 import org.apache.cloudstack.api.ResponseObject.ResponseView;
 import org.apache.cloudstack.api.helper.ApiHelper;
+import org.apache.cloudstack.api.response.AccountResponse;
 import org.apache.cloudstack.api.response.ApiSolidFireVirtualNetworkResponse;
 import org.apache.cloudstack.api.response.ListResponse;
 import org.apache.cloudstack.api.response.ZoneResponse;
@@ -51,6 +52,11 @@ public class ListSolidFireVirtualNetworksCmd extends 
BaseListCmd {
     @Parameter(name = ApiConstants.ZONE_ID, type = CommandType.UUID, 
entityType = ZoneResponse.class, description = ApiHelper.ZONE_ID_DESC)
     private Long _zoneId;
 
+    @Parameter(name = ApiConstants.ACCOUNT_ID, type = CommandType.UUID, 
entityType = AccountResponse.class, description = ApiHelper.ACCOUNT_ID_DESC)
+    private long _accountId;
+
+    @Inject private ApiHelper _apiHelper;
+
     /////////////////////////////////////////////////////
     /////////////// API Implementation///////////////////
     /////////////////////////////////////////////////////
@@ -77,7 +83,7 @@ public class ListSolidFireVirtualNetworksCmd extends 
BaseListCmd {
                 }
             }
             else {
-                sfVirtualNetworks = 
_apiSolidFireService2.listSolidFireVirtualNetworks(_zoneId);
+                sfVirtualNetworks = 
_apiSolidFireService2.listSolidFireVirtualNetworks(_zoneId, _accountId);
             }
 
             ResponseView responseView = ApiHelper.instance().isRootAdmin() ? 
ResponseView.Full : ResponseView.Restricted;

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/620af9ca/plugins/api/solidfire/src/org/apache/cloudstack/solidfire/ApiSolidFireService2.java
----------------------------------------------------------------------
diff --git 
a/plugins/api/solidfire/src/org/apache/cloudstack/solidfire/ApiSolidFireService2.java
 
b/plugins/api/solidfire/src/org/apache/cloudstack/solidfire/ApiSolidFireService2.java
index 288b7f7..07f200a 100644
--- 
a/plugins/api/solidfire/src/org/apache/cloudstack/solidfire/ApiSolidFireService2.java
+++ 
b/plugins/api/solidfire/src/org/apache/cloudstack/solidfire/ApiSolidFireService2.java
@@ -44,8 +44,9 @@ public interface ApiSolidFireService2 extends 
PluggableService, Configurable {
 
     SfVirtualNetwork listSolidFireVirtualNetwork(long id);
 
-    // Long (instead of long) because it's optional and null is used to 
indicate that it's not present
-    List<SfVirtualNetwork> listSolidFireVirtualNetworks(Long zoneId);
+    // Long (instead of long) for both zoneId and accountId because they're 
optional and null is used to indicate that they're not present
+    // zoneId and accountId are not dependent upon one another (i.e. either 
one can be null, both can be null, or both can be not be null)
+    List<SfVirtualNetwork> listSolidFireVirtualNetworks(Long zoneId, Long 
accountId);
 
     SfVirtualNetwork createSolidFireVirtualNetwork(String clusterName, String 
name, String tag, String startIp, int size,
             String netmask, String svip, long accountId);

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/620af9ca/plugins/api/solidfire/src/org/apache/cloudstack/solidfire/ApiSolidFireServiceImpl2.java
----------------------------------------------------------------------
diff --git 
a/plugins/api/solidfire/src/org/apache/cloudstack/solidfire/ApiSolidFireServiceImpl2.java
 
b/plugins/api/solidfire/src/org/apache/cloudstack/solidfire/ApiSolidFireServiceImpl2.java
index 9af4ac2..d91febc 100644
--- 
a/plugins/api/solidfire/src/org/apache/cloudstack/solidfire/ApiSolidFireServiceImpl2.java
+++ 
b/plugins/api/solidfire/src/org/apache/cloudstack/solidfire/ApiSolidFireServiceImpl2.java
@@ -254,20 +254,34 @@ public class ApiSolidFireServiceImpl2 extends AdapterBase 
implements APIChecker,
     }
 
     @Override
-    public List<SfVirtualNetwork> listSolidFireVirtualNetworks(Long zoneId) {
+    public List<SfVirtualNetwork> listSolidFireVirtualNetworks(Long zoneId, 
Long accountId) {
         s_logger.info("listSolidFireVirtualNetworks invoked");
 
         final List<SfVirtualNetworkVO> sfVirtualNetworkVOs;
 
         if (ApiHelper.instance().isRootAdmin()) {
             if (zoneId != null) {
-                sfVirtualNetworkVOs = 
filterVirtualNetworksByZone(_sfVirtualNetworkDao.listAll(), zoneId);
+                if (accountId != null) {
+                    sfVirtualNetworkVOs = 
filterVirtualNetworksByZone(_sfVirtualNetworkDao.findByAccountId(accountId), 
zoneId);
+                }
+                else {
+                    sfVirtualNetworkVOs = 
filterVirtualNetworksByZone(_sfVirtualNetworkDao.listAll(), zoneId);
+                }
             }
             else {
-                sfVirtualNetworkVOs = _sfVirtualNetworkDao.listAll();
+                if (accountId != null) {
+                    sfVirtualNetworkVOs = 
_sfVirtualNetworkDao.findByAccountId(accountId);
+                }
+                else {
+                    sfVirtualNetworkVOs = _sfVirtualNetworkDao.listAll();
+                }
             }
         }
         else {
+            if (accountId != null && accountId != 
_apiHelper.getCallingAccount().getId()) {
+                throw new CloudRuntimeException("Only a root admin can specify 
an account other than his own.");
+            }
+
             if (zoneId != null) {
                 sfVirtualNetworkVOs = 
filterVirtualNetworksByZone(_sfVirtualNetworkDao.findByAccountId(ApiHelper.instance().getCallingAccount().getId()),
 zoneId);
             }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/620af9ca/ui/plugins/sfSharedVolume/sfSharedVolume.js
----------------------------------------------------------------------
diff --git a/ui/plugins/sfSharedVolume/sfSharedVolume.js 
b/ui/plugins/sfSharedVolume/sfSharedVolume.js
index 0f55a5d..2d904cd 100644
--- a/ui/plugins/sfSharedVolume/sfSharedVolume.js
+++ b/ui/plugins/sfSharedVolume/sfSharedVolume.js
@@ -131,7 +131,7 @@
                           filteredAccountObjs = accountObjs;
                         }
                         else {
-                          for (int i = 0; i < accountObjs.length; i++) {
+                          for (i = 0; i < accountObjs.length; i++) {
                             var accountObj = accountObjs[i];
 
                             if (accountObj.domainid == g_domainid) {
@@ -155,9 +155,15 @@
                   validation: {
                     required: true
                   },
+                  dependsOn: ['availabilityZone', 'account'],
                   select: function(args) {
+                    var params = [];
+
+                    params.push("&zoneid=" + args.data.availabilityZone);
+                    params.push("&accountid=" + args.data.account);
+
                     $.ajax({
-                      url: createURL("listSolidFireVirtualNetworks"),
+                      url: createURL("listSolidFireVirtualNetworks" + 
params.join("")),
                       dataType: "json",
                       async: true,
                       success: function(json) {

Reply via email to