Add the rest api operation for list cartridges based on the provider
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/ac4928f8 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/ac4928f8 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/ac4928f8 Branch: refs/heads/master Commit: ac4928f8ca00ad11de6af3b42c99ec4beee2eb24 Parents: efd079d Author: gayan <[email protected]> Authored: Thu Dec 4 20:51:08 2014 +0530 Committer: gayan <[email protected]> Committed: Thu Dec 4 21:33:39 2014 +0530 ---------------------------------------------------------------------- .../cloud/controller/domain/Cartridge.java | 9 + .../cloud/controller/domain/CartridgeInfo.java | 10 + .../controller/util/CloudControllerUtil.java | 1 + .../apache/stratos/manager/dto/Cartridge.java | 8 + .../rest/endpoint/api/StratosApiV41.java | 12 + .../rest/endpoint/api/StratosApiV41Utils.java | 88 +- .../AverageInFlightRequestsFinder.xml | 2 +- .../main/resources/CloudControllerService.wsdl | 2244 +++++++++--------- 8 files changed, 1303 insertions(+), 1071 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/ac4928f8/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/Cartridge.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/Cartridge.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/Cartridge.java index da92b12..4303fc0 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/Cartridge.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/Cartridge.java @@ -39,6 +39,8 @@ public class Cartridge implements Serializable{ private String hostName; private String provider; + + private String category; private String displayName; @@ -401,4 +403,11 @@ public class Cartridge implements Serializable{ this.exportingProperties = exportingProperties; } + public String getCategory() { + return category; + } + + public void setCategory(String category) { + this.category = category; + } } http://git-wip-us.apache.org/repos/asf/stratos/blob/ac4928f8/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/CartridgeInfo.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/CartridgeInfo.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/CartridgeInfo.java index e35f357..a9c3ed0 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/CartridgeInfo.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/CartridgeInfo.java @@ -44,6 +44,8 @@ public class CartridgeInfo { private AppType[] appTypes; private String provider; + + private String category; private String version; @@ -229,4 +231,12 @@ public class CartridgeInfo { public void setServiceGroup(String serviceGroup) { this.serviceGroup = serviceGroup; } + + public String getCategory() { + return category; + } + + public void setCategory(String category) { + this.category = category; + } } http://git-wip-us.apache.org/repos/asf/stratos/blob/ac4928f8/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java index e6c8d6f..2e4e505 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java @@ -192,6 +192,7 @@ public class CloudControllerUtil { carInfo.setHostName(cartridge.getHostName()); carInfo.setDeploymentDirs(cartridge.getDeploymentDirs()); carInfo.setProvider(cartridge.getProvider()); + carInfo.setCategory(cartridge.getCategory()); carInfo.setVersion(cartridge.getVersion()); carInfo.setMultiTenant(cartridge.isMultiTenant()); carInfo.setBaseDir(cartridge.getBaseDir()); http://git-wip-us.apache.org/repos/asf/stratos/blob/ac4928f8/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/dto/Cartridge.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/dto/Cartridge.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/dto/Cartridge.java index 94efad9..6bcd740 100644 --- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/dto/Cartridge.java +++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/dto/Cartridge.java @@ -39,6 +39,7 @@ public class Cartridge implements Comparable<Cartridge> { private String status; //private String ip; private String provider; + private String category; private String version; private boolean multiTenant; private boolean isLoadBalancer; @@ -323,4 +324,11 @@ public class Cartridge implements Comparable<Cartridge> { this.clusterId = clusterId; } + public String getCategory() { + return category; + } + + public void setCategory(String category) { + this.category = category; + } } http://git-wip-us.apache.org/repos/asf/stratos/blob/ac4928f8/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java index a8eab46..fcc128d 100644 --- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java +++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java @@ -162,6 +162,18 @@ public class StratosApiV41 extends AbstractApi { return Response.noContent().build(); } + @GET + @Path("/cartridges/{provider}") + @Produces("application/json") + @Consumes("application/json") + @AuthorizationAction("/permission/admin/manage/view/cartridge") + public Response getCartridgesByProvider(@PathParam("provider") String provider) throws RestAPIException { + List<Cartridge> cartridges = StratosApiV41Utils.getAvailableCartridgesByProvider(provider, getConfigContext()); + ResponseBuilder rb = Response.ok(); + rb.entity(cartridges.isEmpty() ? new Cartridge[0] : cartridges.toArray(new Cartridge[cartridges.size()])); + return rb.build(); + } + @GET @Path("/cartridges/singleTenant") @Produces("application/json") http://git-wip-us.apache.org/repos/asf/stratos/blob/ac4928f8/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java index 08ef896..2ad9a11 100644 --- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java +++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java @@ -725,6 +725,91 @@ public class StratosApiV41Utils { return lbCartridges; } + static List<Cartridge> getAvailableCartridgesByProvider(String provider, ConfigurationContext configurationContext) throws RestAPIException { + List<Cartridge> cartridges = new ArrayList<Cartridge>(); + + if (log.isDebugEnabled()) { + log.debug("Getting available cartridges. Privider name : " + provider ); + } + + boolean allowMultipleSubscription = new Boolean( + System.getProperty(CartridgeConstants.FEATURE_MULTI_TENANT_MULTIPLE_SUBSCRIPTION_ENABLED)); + + try { + + + String[] availableCartridges = CloudControllerServiceClient.getServiceClient().getRegisteredCartridges(); + + if (availableCartridges != null) { + for (String cartridgeType : availableCartridges) { + CartridgeInfo cartridgeInfo = null; + try { + cartridgeInfo = CloudControllerServiceClient.getServiceClient().getCartridgeInfo(cartridgeType); + } catch (Exception e) { + if (log.isWarnEnabled()) { + log.warn("Error when calling getCartridgeInfo for " + cartridgeType + ", Error: " + + e.getMessage()); + } + } + if (cartridgeInfo == null) { + // This cannot happen. But continue + if (log.isDebugEnabled()) { + log.debug("Cartridge Info not found: " + cartridgeType); + } + continue; + } + + + if (!cartridgeInfo.getProvider().equals(provider)) { + continue; + } + + Cartridge cartridge = new Cartridge(); + cartridge.setCartridgeType(cartridgeType); + cartridge.setProvider(cartridgeInfo.getProvider()); + cartridge.setDisplayName(cartridgeInfo.getDisplayName()); + cartridge.setDescription(cartridgeInfo.getDescription()); + cartridge.setVersion(cartridgeInfo.getVersion()); + cartridge.setMultiTenant(cartridgeInfo.getMultiTenant()); + cartridge.setHostName(cartridgeInfo.getHostName()); + cartridge.setDefaultAutoscalingPolicy(cartridgeInfo.getDefaultAutoscalingPolicy()); + cartridge.setDefaultDeploymentPolicy(cartridgeInfo.getDefaultDeploymentPolicy()); + //cartridge.setStatus(CartridgeConstants.NOT_SUBSCRIBED); + cartridge.setCartridgeAlias("-"); + cartridge.setPersistence(cartridgeInfo.getPersistence()); + cartridge.setServiceGroup(cartridgeInfo.getServiceGroup()); + + if (cartridgeInfo.getProperties() != null) { + for (org.apache.stratos.cloud.controller.stub.Property property : cartridgeInfo + .getProperties()) { + if (property.getName().equals("load.balancer")) { + cartridge.setLoadBalancer(true); + } + } + } + //cartridge.setActiveInstances(0); + cartridges.add(cartridge); + } + } else { + if (log.isDebugEnabled()) { + log.debug("There are no available cartridges"); + } + } + } catch (Exception e) { + String msg = "Error while getting available cartridges. Cause: " + e.getMessage(); + log.error(msg, e); + throw new RestAPIException(msg, e); + } + + Collections.sort(cartridges); + + if (log.isDebugEnabled()) { + log.debug("Returning available cartridges " + cartridges.size()); + } + + return cartridges; + } + static List<Cartridge> getAvailableCartridges(String cartridgeSearchString, Boolean multiTenant, ConfigurationContext configurationContext) throws RestAPIException { List<Cartridge> cartridges = new ArrayList<Cartridge>(); @@ -774,7 +859,8 @@ public class StratosApiV41Utils { Cartridge cartridge = new Cartridge(); cartridge.setCartridgeType(cartridgeType); cartridge.setProvider(cartridgeInfo.getProvider()); - cartridge.setDisplayName(cartridgeInfo.getDisplayName()); + cartridge.setCategory(cartridgeInfo.getCategory()); + cartridge.setDisplayName(cartridgeInfo.getDisplayName()); cartridge.setDescription(cartridgeInfo.getDescription()); cartridge.setVersion(cartridgeInfo.getVersion()); cartridge.setMultiTenant(cartridgeInfo.getMultiTenant()); http://git-wip-us.apache.org/repos/asf/stratos/blob/ac4928f8/extensions/cep/artifacts/executionplans/AverageInFlightRequestsFinder.xml ---------------------------------------------------------------------- diff --git a/extensions/cep/artifacts/executionplans/AverageInFlightRequestsFinder.xml b/extensions/cep/artifacts/executionplans/AverageInFlightRequestsFinder.xml index e8cd8f6..fbc605d 100644 --- a/extensions/cep/artifacts/executionplans/AverageInFlightRequestsFinder.xml +++ b/extensions/cep/artifacts/executionplans/AverageInFlightRequestsFinder.xml @@ -33,7 +33,7 @@ <queryExpressions><