You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by is...@apache.org on 2013/12/05 15:58:21 UTC
git commit: initial impl of getting DeploymentPolicies through Rest
API
Updated Branches:
refs/heads/master b6591566f -> 2d4c62af5
initial impl of getting DeploymentPolicies through Rest API
Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/2d4c62af
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/2d4c62af
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/2d4c62af
Branch: refs/heads/master
Commit: 2d4c62af59108acb9fdf1473890f873553273610
Parents: b659156
Author: Isuru <is...@wso2.com>
Authored: Thu Dec 5 20:27:22 2013 +0530
Committer: Isuru <is...@wso2.com>
Committed: Thu Dec 5 20:27:22 2013 +0530
----------------------------------------------------------------------
.../autoscaler/partition/PartitionGroup.java | 34 +++++++++
.../bean/autoscaler/policy/AutoscalePolicy.java | 30 --------
.../policy/autoscale/AutoscalePolicy.java | 32 ++++++++
.../policy/deployment/DeploymentPolicy.java | 35 +++++++++
.../service/client/AutoscalerServiceClient.java | 16 ++++
.../rest/endpoint/services/ServiceUtils.java | 78 +++++++++++++++++++-
.../rest/endpoint/services/StratosAdmin.java | 13 +++-
7 files changed, 205 insertions(+), 33 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/2d4c62af/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/autoscaler/partition/PartitionGroup.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/autoscaler/partition/PartitionGroup.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/autoscaler/partition/PartitionGroup.java
new file mode 100644
index 0000000..563cecd
--- /dev/null
+++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/autoscaler/partition/PartitionGroup.java
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+
+package org.apache.stratos.rest.endpoint.bean.autoscaler.partition;
+
+import javax.xml.bind.annotation.XmlRootElement;
+import java.util.List;
+
+@XmlRootElement
+public class PartitionGroup {
+
+ public String id;
+
+ public String partitionAlgo;
+
+ //partition Ids
+ public List<String> partition;
+}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/2d4c62af/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/autoscaler/policy/AutoscalePolicy.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/autoscaler/policy/AutoscalePolicy.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/autoscaler/policy/AutoscalePolicy.java
deleted file mode 100644
index 43c565f..0000000
--- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/autoscaler/policy/AutoscalePolicy.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * 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.
- */
-
-package org.apache.stratos.rest.endpoint.bean.autoscaler.policy;
-
-import javax.xml.bind.annotation.XmlRootElement;
-
-@XmlRootElement
-public class AutoscalePolicy {
-
- public String id;
- public String displayName;
- public String description;
-}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/2d4c62af/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/autoscaler/policy/autoscale/AutoscalePolicy.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/autoscaler/policy/autoscale/AutoscalePolicy.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/autoscaler/policy/autoscale/AutoscalePolicy.java
new file mode 100644
index 0000000..a37431e
--- /dev/null
+++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/autoscaler/policy/autoscale/AutoscalePolicy.java
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+
+package org.apache.stratos.rest.endpoint.bean.autoscaler.policy.autoscale;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement
+public class AutoscalePolicy {
+
+ public String id;
+
+ public String displayName;
+
+ public String description;
+}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/2d4c62af/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/autoscaler/policy/deployment/DeploymentPolicy.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/autoscaler/policy/deployment/DeploymentPolicy.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/autoscaler/policy/deployment/DeploymentPolicy.java
new file mode 100644
index 0000000..b818d91
--- /dev/null
+++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/autoscaler/policy/deployment/DeploymentPolicy.java
@@ -0,0 +1,35 @@
+/*
+ * 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.
+ */
+
+package org.apache.stratos.rest.endpoint.bean.autoscaler.policy.deployment;
+
+
+import org.apache.stratos.rest.endpoint.bean.autoscaler.partition.PartitionGroup;
+
+import javax.xml.bind.annotation.XmlRootElement;
+import java.util.List;
+
+@XmlRootElement
+public class DeploymentPolicy {
+
+ public String id;
+
+ //partition groups
+ public List<PartitionGroup> partitionGroup;
+}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/2d4c62af/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/service/client/AutoscalerServiceClient.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/service/client/AutoscalerServiceClient.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/service/client/AutoscalerServiceClient.java
index 571b89c..9ca19fc 100644
--- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/service/client/AutoscalerServiceClient.java
+++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/service/client/AutoscalerServiceClient.java
@@ -92,4 +92,20 @@ public class AutoscalerServiceClient {
return autoscalePolicies;
}
+
+ public org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy [] getDeploymentPolicies()
+ throws Exception {
+
+ org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy[] deploymentPolicies;
+ try {
+ deploymentPolicies = stub.getAllDeploymentPolicies();
+
+ } catch (RemoteException e) {
+ String errorMsg = "Error in getting available deployment policies";
+ log.error(errorMsg, e);
+ throw new Exception(errorMsg, e);
+ }
+
+ return deploymentPolicies;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/2d4c62af/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java
index 4de74a8..ae87419 100644
--- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java
+++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java
@@ -36,7 +36,9 @@ import org.apache.stratos.adc.mgt.utils.PersistenceManager;
import org.apache.stratos.adc.topology.mgt.service.TopologyManagementService;
import org.apache.stratos.cloud.controller.pojo.*;
import org.apache.stratos.rest.endpoint.bean.autoscaler.partition.Partition;
-import org.apache.stratos.rest.endpoint.bean.autoscaler.policy.AutoscalePolicy;
+import org.apache.stratos.rest.endpoint.bean.autoscaler.partition.PartitionGroup;
+import org.apache.stratos.rest.endpoint.bean.autoscaler.policy.autoscale.AutoscalePolicy;
+import org.apache.stratos.rest.endpoint.bean.autoscaler.policy.deployment.DeploymentPolicy;
import org.apache.stratos.rest.endpoint.bean.cartridge.definition.CartridgeDefinitionBean;
import org.apache.stratos.rest.endpoint.bean.cartridge.definition.IaasProviderBean;
import org.apache.stratos.rest.endpoint.bean.cartridge.definition.PortMappingBean;
@@ -286,7 +288,7 @@ public class ServiceUtils {
autoscalePolicies = autoscalerServiceClient.getAutoScalePolicies();
} catch (Exception e) {
- String errorMsg = "Error getting available partitions";
+ String errorMsg = "Error getting available autoscaling policies";
log.error(errorMsg, e);
throw new RestAPIException(errorMsg, e);
}
@@ -316,6 +318,78 @@ public class ServiceUtils {
return autoscalePolicyBeans;
}
+
+ public static DeploymentPolicy[] getDeploymentPolicies () throws RestAPIException {
+
+ org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy [] deploymentPolicies = null;
+ AutoscalerServiceClient autoscalerServiceClient = getAutoscalerServiceClient();
+ if (autoscalerServiceClient != null) {
+ try {
+ deploymentPolicies = autoscalerServiceClient.getDeploymentPolicies();
+
+ } catch (Exception e) {
+ String errorMsg = "Error getting available deployment policies";
+ log.error(errorMsg, e);
+ throw new RestAPIException(errorMsg, e);
+ }
+ }
+
+ return populateDeploymentPolicyPojo(deploymentPolicies);
+ }
+
+ private static DeploymentPolicy[] populateDeploymentPolicyPojo (org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy []
+ deploymentPolicies) {
+ DeploymentPolicy[] deploymentPolicyBeans;
+ if(deploymentPolicies == null) {
+ deploymentPolicyBeans = new DeploymentPolicy[0];
+ return deploymentPolicyBeans;
+ }
+
+ deploymentPolicyBeans = new DeploymentPolicy[deploymentPolicies.length];
+ for (int i = 0 ; i < deploymentPolicies.length ; i++) {
+ DeploymentPolicy deploymentPolicy = new DeploymentPolicy();
+ deploymentPolicy.id = deploymentPolicies[i].getId();
+
+ //if(deploymentPolicies[i].getPartitionGroups() != null &&
+ // deploymentPolicies[i].getPartitionGroups().length > 0) {
+ // deploymentPolicy.partitionGroup = getPartitionGroups(deploymentPolicies[i].getPartitionGroups());
+ //}
+
+ deploymentPolicyBeans[i] = deploymentPolicy;
+ }
+
+ return deploymentPolicyBeans;
+ }
+
+ private static List<PartitionGroup> getPartitionGroups (org.apache.stratos.autoscaler.partition.xsd.PartitionGroup[] partitionGroups) {
+
+ List<PartitionGroup> partitionGroupList = new ArrayList<PartitionGroup>();
+ for (int i = 0 ; i < partitionGroups.length ; i ++) {
+ PartitionGroup partitionGroup = new PartitionGroup();
+ partitionGroup.id = partitionGroups[i].getId();
+ partitionGroup.partitionAlgo = partitionGroups[i].getPartitionAlgo();
+
+ if(partitionGroups[i].getPartitions() != null && partitionGroups[i].getPartitions().length > 0){
+ partitionGroup.partition = getPartitionIdsList(partitionGroups[i].getPartitions());
+ }
+
+ partitionGroupList.add(partitionGroup);
+ }
+
+ return partitionGroupList;
+ }
+
+ private static List<String> getPartitionIdsList(org.apache.stratos.cloud.controller.deployment.partition.Partition[]
+ partitions) {
+
+ ArrayList<String> partitionIdList = new ArrayList<String>();
+ for (int i = 0 ; i < partitions.length ; i++) {
+ partitionIdList.add(partitions[i].getId());
+ }
+
+ return partitionIdList;
+ }
+
static List<Cartridge> getAvailableCartridges(String cartridgeSearchString, Boolean multiTenant, ConfigurationContext configurationContext) throws ADCException {
List<Cartridge> cartridges = new ArrayList<Cartridge>();
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/2d4c62af/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/StratosAdmin.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/StratosAdmin.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/StratosAdmin.java
index 60688f5..c7a646d 100644
--- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/StratosAdmin.java
+++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/StratosAdmin.java
@@ -32,7 +32,8 @@ import org.apache.stratos.rest.endpoint.annotation.AuthorizationAction;
import org.apache.stratos.rest.endpoint.annotation.SuperTenantService;
import org.apache.stratos.rest.endpoint.bean.CartridgeInfoBean;
import org.apache.stratos.rest.endpoint.bean.autoscaler.partition.Partition;
-import org.apache.stratos.rest.endpoint.bean.autoscaler.policy.AutoscalePolicy;
+import org.apache.stratos.rest.endpoint.bean.autoscaler.policy.autoscale.AutoscalePolicy;
+import org.apache.stratos.rest.endpoint.bean.autoscaler.policy.deployment.DeploymentPolicy;
import org.apache.stratos.rest.endpoint.bean.cartridge.definition.CartridgeDefinitionBean;
import org.apache.stratos.rest.endpoint.exception.RestAPIException;
import org.apache.stratos.tenant.mgt.util.TenantMgtUtil;
@@ -99,6 +100,16 @@ public class StratosAdmin extends AbstractAdmin {
}
@GET
+ @Path("/policy/deployment")
+ @Produces("application/json")
+ @Consumes("application/json")
+ @AuthorizationAction("/permission/protected/manage/monitor/tenants")
+ public DeploymentPolicy[] getDeploymentPolicies () throws RestAPIException {
+
+ return ServiceUtils.getDeploymentPolicies();
+ }
+
+ @GET
@Path("/cartridge/tenanted/list")
@Produces("application/json")
@Consumes("application/json")