diff --git a/api/src/com/cloud/api/commands/ListVirtualRouterElementsCmd.java b/api/src/com/cloud/api/commands/ListVirtualRouterElementsCmd.java index 403432fd818..7d4035aa9b8 100644 --- a/api/src/com/cloud/api/commands/ListVirtualRouterElementsCmd.java +++ b/api/src/com/cloud/api/commands/ListVirtualRouterElementsCmd.java @@ -34,6 +34,9 @@ public class ListVirtualRouterElementsCmd extends BaseListCmd { @Parameter(name=ApiConstants.ID, type=CommandType.LONG, description="list virtual router elements by id") private Long id; + @Parameter(name=ApiConstants.NSP_ID, type=CommandType.LONG, description="list virtual router elements by network service provider id") + private Long nspId; + @Parameter(name=ApiConstants.ENABLED, type=CommandType.BOOLEAN, description="list network offerings by enabled state") private Boolean enabled; @@ -49,6 +52,14 @@ public class ListVirtualRouterElementsCmd extends BaseListCmd { return id; } + public void setNspId(Long nspId) { + this.nspId = nspId; + } + + public Long getNspId() { + return nspId; + } + public void setEnabled(Boolean enabled) { this.enabled = enabled; } diff --git a/server/src/com/cloud/api/ApiResponseHelper.java b/server/src/com/cloud/api/ApiResponseHelper.java index 8436e9ee6d7..49194c49019 100755 --- a/server/src/com/cloud/api/ApiResponseHelper.java +++ b/server/src/com/cloud/api/ApiResponseHelper.java @@ -2817,6 +2817,8 @@ public class ApiResponseHelper implements ResponseGenerator { response.setId(result.getId()); response.setNspId(result.getNspId()); response.setEnabled(result.isEnabled()); + + response.setObjectName("VirtualRouterElement"); return response; } } diff --git a/server/src/com/cloud/network/element/VirtualRouterElement.java b/server/src/com/cloud/network/element/VirtualRouterElement.java index 2e86136242f..e36ef167184 100644 --- a/server/src/com/cloud/network/element/VirtualRouterElement.java +++ b/server/src/com/cloud/network/element/VirtualRouterElement.java @@ -68,6 +68,10 @@ import com.cloud.user.AccountManager; import com.cloud.uservm.UserVm; import com.cloud.utils.component.AdapterBase; import com.cloud.utils.component.Inject; +import com.cloud.utils.db.SearchCriteria; +import com.cloud.utils.db.SearchCriteria2; +import com.cloud.utils.db.SearchCriteriaService; +import com.cloud.utils.db.SearchCriteria.Op; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.vm.DomainRouterVO; import com.cloud.vm.NicProfile; @@ -572,18 +576,20 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl @Override public List searchForVirtualRouterElement(ListVirtualRouterElementsCmd cmd) { - if (cmd.getEnabled() == null && cmd.getId() == null) { - return _vrProviderDao.listByType(VirtualRouterProviderType.VirtualRouter); + Long id = cmd.getId(); + Long nspId = cmd.getNspId(); + Boolean enabled = cmd.getEnabled(); + + SearchCriteriaService sc = SearchCriteria2.create(VirtualRouterProviderVO.class); + if (id != null) { + sc.addAnd(sc.getEntity().getId(), Op.EQ, id); } - if (cmd.getId() == null) { - return _vrProviderDao.listByEnabledAndType(cmd.getEnabled(), VirtualRouterProviderType.VirtualRouter); + if (nspId != null) { + sc.addAnd(sc.getEntity().getNspId(), Op.EQ, nspId); } - //Search by Id - List list = new ArrayList(); - VirtualRouterProviderVO provider = _vrProviderDao.findById(cmd.getId()); - if (provider != null) { - list.add(provider); + if (enabled != null) { + sc.addAnd(sc.getEntity().isEnabled(), Op.EQ, enabled); } - return list; + return sc.list(); } }