Updated Branches: refs/heads/master e9f299054 -> 69843755d
removing AutoscalerServiceClient to adc.mgt and added a utility class for Pojo conversion Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/fc2ffe24 Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/fc2ffe24 Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/fc2ffe24 Branch: refs/heads/master Commit: fc2ffe241a02877ab9249374258ee80f79013f4f Parents: 90a1af7 Author: Isuru <[email protected]> Authored: Fri Dec 6 11:51:18 2013 +0530 Committer: Isuru <[email protected]> Committed: Fri Dec 6 11:51:18 2013 +0530 ---------------------------------------------------------------------- components/org.apache.stratos.adc.mgt/pom.xml | 6 +- .../adc/mgt/client/AutoscalerServiceClient.java | 111 +++++++ .../stratos/adc/mgt/utils/PojoConverter.java | 25 ++ .../bean/util/convert/PojoConverter.java | 25 -- .../bean/util/converter/PojoConverter.java | 297 +++++++++++++++++++ .../service/client/AutoscalerServiceClient.java | 111 ------- .../rest/endpoint/services/ServiceUtils.java | 282 +----------------- 7 files changed, 447 insertions(+), 410 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/fc2ffe24/components/org.apache.stratos.adc.mgt/pom.xml ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.adc.mgt/pom.xml b/components/org.apache.stratos.adc.mgt/pom.xml index af4618d..df8aa32 100644 --- a/components/org.apache.stratos.adc.mgt/pom.xml +++ b/components/org.apache.stratos.adc.mgt/pom.xml @@ -46,7 +46,11 @@ <artifactId>org.apache.stratos.cloud.controller.service.stub</artifactId> <version>${project.version}</version> </dependency> - + <dependency> + <groupId>org.apache.stratos</groupId> + <artifactId>org.apache.stratos.autoscaler.service.stub</artifactId> + <version>${project.version}</version> + </dependency> <dependency> <groupId>org.apache.stratos</groupId> <artifactId>org.apache.stratos.adc.topology.mgt</artifactId> http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/fc2ffe24/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/client/AutoscalerServiceClient.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/client/AutoscalerServiceClient.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/client/AutoscalerServiceClient.java new file mode 100644 index 0000000..43ae838 --- /dev/null +++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/client/AutoscalerServiceClient.java @@ -0,0 +1,111 @@ +/* + * 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.adc.mgt.client; + +import org.apache.axis2.AxisFault; +import org.apache.axis2.context.ConfigurationContext; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.stratos.adc.mgt.internal.DataHolder; +import org.apache.stratos.autoscaler.stub.AutoScalerServiceStub; + +import java.rmi.RemoteException; + +public class AutoscalerServiceClient { + + private AutoScalerServiceStub stub; + + private static final Log log = LogFactory.getLog(AutoscalerServiceClient.class); + private static volatile AutoscalerServiceClient serviceClient; + private static final String AUTOSCALER_SERVICE_URL = "autoscaler.service.url"; + + public AutoscalerServiceClient(String epr) throws AxisFault { + + ConfigurationContext clientConfigContext = DataHolder.getClientConfigContext(); + try { + stub = new AutoScalerServiceStub(clientConfigContext, epr); + stub._getServiceClient().getOptions().setTimeOutInMilliSeconds(300000); + + } catch (AxisFault axisFault) { + String msg = "Failed to initiate AutoscalerService client. " + axisFault.getMessage(); + log.error(msg, axisFault); + throw new AxisFault(msg, axisFault); + } + } + + public static AutoscalerServiceClient getServiceClient() throws AxisFault { + if (serviceClient == null) { + synchronized (AutoscalerServiceClient.class) { + if (serviceClient == null) { + serviceClient = new AutoscalerServiceClient(System.getProperty(AUTOSCALER_SERVICE_URL)); + } + } + } + return serviceClient; + } + + public org.apache.stratos.cloud.controller.deployment.partition.Partition[] getAvailablePartitions () + throws Exception { + + org.apache.stratos.cloud.controller.deployment.partition.Partition[] partitions; + try { + partitions = stub.getAllAvailablePartitions(); + + } catch (RemoteException e) { + String errorMsg = "Error in getting available partitions"; + log.error(errorMsg, e); + throw new Exception(errorMsg, e); + } + + return partitions; + } + + public org.apache.stratos.autoscaler.policy.model.AutoscalePolicy[] getAutoScalePolicies () + throws Exception { + + org.apache.stratos.autoscaler.policy.model.AutoscalePolicy[] autoscalePolicies; + try { + autoscalePolicies = stub.getAllAutoScalingPolicy(); + + } catch (RemoteException e) { + String errorMsg = "Error in getting available partitions"; + log.error(errorMsg, e); + throw new Exception(errorMsg, e); + } + + 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/fc2ffe24/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/utils/PojoConverter.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/utils/PojoConverter.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/utils/PojoConverter.java new file mode 100644 index 0000000..c46e3fe --- /dev/null +++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/utils/PojoConverter.java @@ -0,0 +1,25 @@ +/* + * 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.adc.mgt.utils; + +public class PojoConverter { + + +} http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/fc2ffe24/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/convert/PojoConverter.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/convert/PojoConverter.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/convert/PojoConverter.java deleted file mode 100644 index 41e17b9..0000000 --- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/convert/PojoConverter.java +++ /dev/null @@ -1,25 +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.util.convert; - -public class PojoConverter { - - -} http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/fc2ffe24/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java new file mode 100644 index 0000000..13766a6 --- /dev/null +++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java @@ -0,0 +1,297 @@ +/* + * 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.util.converter; + +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.partition.PartitionGroup; +import org.apache.stratos.rest.endpoint.bean.autoscaler.policy.autoscale.*; +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; +import org.apache.stratos.rest.endpoint.bean.cartridge.definition.PropertyBean; + +import java.util.ArrayList; +import java.util.List; + +public class PojoConverter { + + public static CartridgeConfig populateCartridgeConfigPojo (CartridgeDefinitionBean cartridgeDefinitionBean) { + + CartridgeConfig cartridgeConfig = new CartridgeConfig(); + + cartridgeConfig.setType(cartridgeDefinitionBean.type); + cartridgeConfig.setHostName(cartridgeDefinitionBean.host); + cartridgeConfig.setProvider(cartridgeDefinitionBean.provider); + cartridgeConfig.setVersion(cartridgeDefinitionBean.version); + cartridgeConfig.setMultiTenant(cartridgeDefinitionBean.multiTenant); + cartridgeConfig.setDisplayName(cartridgeDefinitionBean.displayName); + cartridgeConfig.setDescription(cartridgeDefinitionBean.description); + //deployment information + if(cartridgeDefinitionBean.deployment != null) { + cartridgeConfig.setBaseDir(cartridgeDefinitionBean.deployment.baseDir); + if(cartridgeDefinitionBean.deployment.dir != null && !cartridgeDefinitionBean.deployment.dir.isEmpty()) { + cartridgeConfig.setDeploymentDirs(cartridgeDefinitionBean.deployment.dir. + toArray(new String[cartridgeDefinitionBean.deployment.dir.size()])); + } + } + //port mapping + if(cartridgeDefinitionBean.portMapping != null && !cartridgeDefinitionBean.portMapping.isEmpty()) { + cartridgeConfig.setPortMappings(getPortMappingsAsArray(cartridgeDefinitionBean.portMapping)); + } + //IaaS + if(cartridgeDefinitionBean.iaasProvider != null & !cartridgeDefinitionBean.iaasProvider.isEmpty()) { + cartridgeConfig.setIaasConfigs(getIaasConfigsAsArray(cartridgeDefinitionBean.iaasProvider)); + } + //LB + if(cartridgeDefinitionBean.loadBalancer != null) { + //cartridgeConfig.set + } + //Properties + if(cartridgeDefinitionBean.property != null && !cartridgeDefinitionBean.property.isEmpty()) { + cartridgeConfig.setProperties(getProperties(cartridgeDefinitionBean.property)); + } + + return cartridgeConfig; + } + + private static PortMapping[] getPortMappingsAsArray(List<PortMappingBean> portMappingBeans) { + + //convert to an array + PortMappingBean [] portMappingBeanArray = new PortMappingBean[portMappingBeans.size()]; + portMappingBeans.toArray(portMappingBeanArray); + PortMapping [] portMappingArray = new PortMapping[portMappingBeanArray.length]; + + for (int i = 0 ; i < portMappingBeanArray.length ; i++) { + PortMapping portMapping = new PortMapping(); + portMapping.setProtocol(portMappingBeanArray[i].protocol); + portMapping.setPort(Integer.toString(portMappingBeanArray[i].port)); + portMapping.setProxyPort(Integer.toString(portMappingBeanArray[i].proxyPort)); + portMappingArray[i] = portMapping; + } + + return portMappingArray; + } + + private static IaasConfig[] getIaasConfigsAsArray (List<IaasProviderBean> iaasProviderBeans) { + + //convert to an array + IaasProviderBean [] iaasProviderBeansArray = new IaasProviderBean[iaasProviderBeans.size()]; + iaasProviderBeans.toArray(iaasProviderBeansArray); + IaasConfig [] iaasConfigsArray = new IaasConfig[iaasProviderBeansArray.length]; + + for (int i = 0 ; i < iaasProviderBeansArray.length ; i++) { + IaasConfig iaasConfig = new IaasConfig(); + iaasConfig.setType(iaasProviderBeansArray[i].type); + iaasConfig.setImageId(iaasProviderBeansArray[i].imageId); + iaasConfig.setMaxInstanceLimit(iaasProviderBeansArray[i].maxInstanceLimit); + iaasConfig.setName(iaasProviderBeansArray[i].name); + iaasConfig.setClassName(iaasProviderBeansArray[i].className); + iaasConfig.setCredential(iaasProviderBeansArray[i].credential); + iaasConfig.setIdentity(iaasProviderBeansArray[i].identity); + iaasConfig.setProvider(iaasProviderBeansArray[i].provider); + + if(iaasProviderBeansArray[i].property != null && !iaasProviderBeansArray[i].property.isEmpty()) { + //set the Properties instance to IaasConfig instance + iaasConfig.setProperties(getProperties(iaasProviderBeansArray[i].property)); + } + iaasConfigsArray[i] = iaasConfig; + } + return iaasConfigsArray; + } + + private static Properties getProperties (List<PropertyBean> propertyBeans) { + + //convert to an array + PropertyBean [] propertyBeansArray = new PropertyBean[propertyBeans.size()]; + propertyBeans.toArray(propertyBeansArray); + Property[] propertyArray = new Property[propertyBeansArray.length]; + + for (int j = 0 ; j < propertyBeansArray.length ; j++) { + Property property = new Property(); + property.setName(propertyBeansArray[j].name); + property.setValue(propertyBeansArray[j].value); + propertyArray[j] = property; + } + + Properties properties = new Properties(); + properties.setProperties(propertyArray); + return properties; + } + + public static Partition[] populatePartitionPojo (org.apache.stratos.cloud.controller.deployment.partition.Partition[] + partitions) { + + Partition [] partitionBeans; + if(partitions == null) { + partitionBeans = new Partition[0]; + return partitionBeans; + } + + partitionBeans = new Partition[partitions.length]; + for (int i = 0 ; i < partitions.length ; i++) { + Partition partition = new Partition(); + partition.id = partitions[i].getId(); + partition.provider = partitions[i].getProvider(); + partition.partitionMin = partitions[i].getPartitionMin(); + partition.partitionMax = partitions[i].getPartitionMax(); + //properties are not added currently, TODO if required + //if(partitions[i].getProperties() != null) { + // List<PropertyBean> propertyBeans = getPropertyBeans(partitions[i].getProperties()); + // partition.property = propertyBeans; + //} + partitionBeans[i] = partition; + } + return partitionBeans; + } + + private static List<PropertyBean> getPropertyBeans (Properties properties) { + + List<PropertyBean> propertyBeans = null; + if(properties.getProperties() != null && properties.getProperties().length != 0) { + Property [] propertyArr = properties.getProperties(); + propertyBeans = new ArrayList<PropertyBean>(); + for (int i = 0; i < propertyArr.length ; i++) { + PropertyBean propertyBean = new PropertyBean(); + propertyBean.name = propertyArr[i].getName(); + propertyBean.value = propertyArr[i].getValue(); + propertyBeans.add(propertyBean); + } + } + return propertyBeans; + } + + public static AutoscalePolicy[] populateAutoscalePojo(org.apache.stratos.autoscaler.policy.model.AutoscalePolicy[] + autoscalePolicies) { + + AutoscalePolicy [] autoscalePolicyBeans; + if(autoscalePolicies == null) { + autoscalePolicyBeans = new AutoscalePolicy[0]; + return autoscalePolicyBeans; + } + + autoscalePolicyBeans = new AutoscalePolicy[autoscalePolicies.length]; + for (int i = 0 ; i < autoscalePolicies.length ; i++) { + AutoscalePolicy autoscalePolicy = new AutoscalePolicy(); + autoscalePolicy.id = autoscalePolicies[i].getId(); + autoscalePolicy.displayName = autoscalePolicies[i].getDisplayName(); + autoscalePolicy.description = autoscalePolicies[i].getDescription(); + if(autoscalePolicies[i].getLoadThresholds() != null) { + autoscalePolicy.loadThresholds = populateLoadThresholds(autoscalePolicies[i].getLoadThresholds()); + } + autoscalePolicyBeans[i] = autoscalePolicy; + } + return autoscalePolicyBeans; + } + + private static LoadThresholds populateLoadThresholds (org.apache.stratos.autoscaler.policy.model.LoadThresholds + loadThresholds) { + + LoadThresholds loadThresholdBean = new LoadThresholds(); + if(loadThresholds.getLoadAverage() != null) { + LoadAverage loadAverage = new LoadAverage(); + loadAverage.average = loadThresholds.getLoadAverage().getAverage(); + loadAverage.gradient = loadThresholds.getLoadAverage().getGradient(); + loadAverage.scaleDownMarginOfGradient = loadThresholds.getLoadAverage().getScaleDownMarginOfGradient(); + loadAverage.scaleDownMarginOfSecondDerivative = loadThresholds.getLoadAverage(). + getScaleDownMarginOfSecondDerivative(); + loadAverage.secondDerivative = loadThresholds.getLoadAverage().getSecondDerivative(); + loadThresholdBean.loadAverage = loadAverage; + } + if(loadThresholds.getMemoryConsumption() != null) { + MemoryConsumption memoryConsumption = new MemoryConsumption(); + memoryConsumption.average = loadThresholds.getMemoryConsumption().getAverage(); + memoryConsumption.gradient = loadThresholds.getMemoryConsumption().getGradient(); + memoryConsumption.scaleDownMarginOfGradient = loadThresholds.getMemoryConsumption(). + getScaleDownMarginOfGradient(); + memoryConsumption.scaleDownMarginOfSecondDerivative = loadThresholds.getMemoryConsumption(). + getScaleDownMarginOfSecondDerivative(); + memoryConsumption.secondDerivative = loadThresholds.getMemoryConsumption().getSecondDerivative(); + loadThresholdBean.memoryConsumption = memoryConsumption; + } + if(loadThresholds.getRequestsInFlight() != null) { + RequestsInFlight requestsInFlight = new RequestsInFlight(); + requestsInFlight.average = loadThresholds.getRequestsInFlight().getAverage(); + requestsInFlight.gradient = loadThresholds.getRequestsInFlight().getGradient(); + requestsInFlight.scaleDownMarginOfGradient = loadThresholds.getRequestsInFlight(). + getScaleDownMarginOfGradient(); + requestsInFlight.scaleDownMarginOfSecondDerivative = loadThresholds.getRequestsInFlight(). + getScaleDownMarginOfSecondDerivative(); + requestsInFlight.secondDerivative = loadThresholds.getRequestsInFlight().getSecondDerivative(); + loadThresholdBean.requestsInFlight = requestsInFlight; + } + + return loadThresholdBean; + } + + public 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; + } +} http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/fc2ffe24/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 deleted file mode 100644 index 9ca19fc..0000000 --- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/service/client/AutoscalerServiceClient.java +++ /dev/null @@ -1,111 +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.service.client; - -import org.apache.axis2.AxisFault; -import org.apache.axis2.context.ConfigurationContext; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.stratos.autoscaler.stub.AutoScalerServiceStub; -import org.apache.stratos.rest.endpoint.ServiceHolder; - -import java.rmi.RemoteException; - -public class AutoscalerServiceClient { - - private AutoScalerServiceStub stub; - - private static final Log log = LogFactory.getLog(AutoscalerServiceClient.class); - private static volatile AutoscalerServiceClient serviceClient; - private static final String AUTOSCALER_SERVICE_URL = "autoscaler.service.url"; - - public AutoscalerServiceClient(String epr) throws AxisFault { - - ConfigurationContext clientConfigContext = ServiceHolder.getConfigurationContext().getClientConfigContext(); - try { - stub = new AutoScalerServiceStub(clientConfigContext, epr); - stub._getServiceClient().getOptions().setTimeOutInMilliSeconds(300000); - - } catch (AxisFault axisFault) { - String msg = "Failed to initiate AutoscalerService client. " + axisFault.getMessage(); - log.error(msg, axisFault); - throw new AxisFault(msg, axisFault); - } - } - - public static AutoscalerServiceClient getServiceClient() throws AxisFault { - if (serviceClient == null) { - synchronized (AutoscalerServiceClient.class) { - if (serviceClient == null) { - serviceClient = new AutoscalerServiceClient(System.getProperty(AUTOSCALER_SERVICE_URL)); - } - } - } - return serviceClient; - } - - public org.apache.stratos.cloud.controller.deployment.partition.Partition[] getAvailablePartitions () - throws Exception { - - org.apache.stratos.cloud.controller.deployment.partition.Partition[] partitions; - try { - partitions = stub.getAllAvailablePartitions(); - - } catch (RemoteException e) { - String errorMsg = "Error in getting available partitions"; - log.error(errorMsg, e); - throw new Exception(errorMsg, e); - } - - return partitions; - } - - public org.apache.stratos.autoscaler.policy.model.AutoscalePolicy[] getAutoScalePolicies () - throws Exception { - - org.apache.stratos.autoscaler.policy.model.AutoscalePolicy[] autoscalePolicies; - try { - autoscalePolicies = stub.getAllAutoScalingPolicy(); - - } catch (RemoteException e) { - String errorMsg = "Error in getting available partitions"; - log.error(errorMsg, e); - throw new Exception(errorMsg, e); - } - - 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/fc2ffe24/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 e0b846f..49f2f85 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 @@ -22,6 +22,7 @@ import org.apache.axis2.AxisFault; import org.apache.axis2.context.ConfigurationContext; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.stratos.adc.mgt.client.AutoscalerServiceClient; import org.apache.stratos.adc.mgt.client.CloudControllerServiceClient; import org.apache.stratos.adc.mgt.dao.CartridgeSubscriptionInfo; import org.apache.stratos.adc.mgt.dto.Cartridge; @@ -34,17 +35,14 @@ import org.apache.stratos.adc.mgt.utils.ApplicationManagementUtil; import org.apache.stratos.adc.mgt.utils.CartridgeConstants; 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.cloud.controller.pojo.CartridgeConfig; +import org.apache.stratos.cloud.controller.pojo.CartridgeInfo; import org.apache.stratos.rest.endpoint.bean.autoscaler.partition.Partition; -import org.apache.stratos.rest.endpoint.bean.autoscaler.partition.PartitionGroup; -import org.apache.stratos.rest.endpoint.bean.autoscaler.policy.autoscale.*; +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; -import org.apache.stratos.rest.endpoint.bean.cartridge.definition.PropertyBean; +import org.apache.stratos.rest.endpoint.bean.util.converter.PojoConverter; import org.apache.stratos.rest.endpoint.exception.RestAPIException; -import org.apache.stratos.rest.endpoint.service.client.AutoscalerServiceClient; import org.wso2.carbon.context.PrivilegedCarbonContext; import java.util.ArrayList; @@ -63,7 +61,7 @@ public class ServiceUtils { CloudControllerServiceClient cloudControllerServiceClient = getCloudControllerServiceClient(); if (cloudControllerServiceClient != null) { - CartridgeConfig cartridgeConfig = populateCartridgeConfigPojo(cartridgeDefinitionBean); + CartridgeConfig cartridgeConfig = PojoConverter.populateCartridgeConfigPojo(cartridgeDefinitionBean); if(cartridgeConfig == null) { throw new RestAPIException("Populated CartridgeConfig instance is null, cartridge deployment aborted"); @@ -78,125 +76,6 @@ public class ServiceUtils { } } - static CartridgeConfig populateCartridgeConfigPojo (CartridgeDefinitionBean cartridgeDefinitionBean) { - - CartridgeConfig cartridgeConfig = new CartridgeConfig(); - - cartridgeConfig.setType(cartridgeDefinitionBean.type); - cartridgeConfig.setHostName(cartridgeDefinitionBean.host); - cartridgeConfig.setProvider(cartridgeDefinitionBean.provider); - cartridgeConfig.setVersion(cartridgeDefinitionBean.version); - cartridgeConfig.setMultiTenant(cartridgeDefinitionBean.multiTenant); - cartridgeConfig.setDisplayName(cartridgeDefinitionBean.displayName); - cartridgeConfig.setDescription(cartridgeDefinitionBean.description); - //deployment information - if(cartridgeDefinitionBean.deployment != null) { - cartridgeConfig.setBaseDir(cartridgeDefinitionBean.deployment.baseDir); - if(cartridgeDefinitionBean.deployment.dir != null && !cartridgeDefinitionBean.deployment.dir.isEmpty()) { - cartridgeConfig.setDeploymentDirs(cartridgeDefinitionBean.deployment.dir. - toArray(new String[cartridgeDefinitionBean.deployment.dir.size()])); - } - } - //port mapping - if(cartridgeDefinitionBean.portMapping != null && !cartridgeDefinitionBean.portMapping.isEmpty()) { - cartridgeConfig.setPortMappings(getPortMappingsAsArray(cartridgeDefinitionBean.portMapping)); - } - //IaaS - if(cartridgeDefinitionBean.iaasProvider != null & !cartridgeDefinitionBean.iaasProvider.isEmpty()) { - cartridgeConfig.setIaasConfigs(getIaasConfigsAsArray(cartridgeDefinitionBean.iaasProvider)); - } - //LB - if(cartridgeDefinitionBean.loadBalancer != null) { - //cartridgeConfig.set - } - //Properties - if(cartridgeDefinitionBean.property != null && !cartridgeDefinitionBean.property.isEmpty()) { - cartridgeConfig.setProperties(getProperties(cartridgeDefinitionBean.property)); - } - - return cartridgeConfig; - } - - private static PortMapping[] getPortMappingsAsArray(List<PortMappingBean> portMappingBeans) { - - //convert to an array - PortMappingBean [] portMappingBeanArray = new PortMappingBean[portMappingBeans.size()]; - portMappingBeans.toArray(portMappingBeanArray); - PortMapping [] portMappingArray = new PortMapping[portMappingBeanArray.length]; - - for (int i = 0 ; i < portMappingBeanArray.length ; i++) { - PortMapping portMapping = new PortMapping(); - portMapping.setProtocol(portMappingBeanArray[i].protocol); - portMapping.setPort(Integer.toString(portMappingBeanArray[i].port)); - portMapping.setProxyPort(Integer.toString(portMappingBeanArray[i].proxyPort)); - portMappingArray[i] = portMapping; - } - - return portMappingArray; - } - - private static IaasConfig[] getIaasConfigsAsArray (List<IaasProviderBean> iaasProviderBeans) { - - //convert to an array - IaasProviderBean [] iaasProviderBeansArray = new IaasProviderBean[iaasProviderBeans.size()]; - iaasProviderBeans.toArray(iaasProviderBeansArray); - IaasConfig [] iaasConfigsArray = new IaasConfig[iaasProviderBeansArray.length]; - - for (int i = 0 ; i < iaasProviderBeansArray.length ; i++) { - IaasConfig iaasConfig = new IaasConfig(); - iaasConfig.setType(iaasProviderBeansArray[i].type); - iaasConfig.setImageId(iaasProviderBeansArray[i].imageId); - iaasConfig.setMaxInstanceLimit(iaasProviderBeansArray[i].maxInstanceLimit); - iaasConfig.setName(iaasProviderBeansArray[i].name); - iaasConfig.setClassName(iaasProviderBeansArray[i].className); - iaasConfig.setCredential(iaasProviderBeansArray[i].credential); - iaasConfig.setIdentity(iaasProviderBeansArray[i].identity); - iaasConfig.setProvider(iaasProviderBeansArray[i].provider); - - if(iaasProviderBeansArray[i].property != null && !iaasProviderBeansArray[i].property.isEmpty()) { - //set the Properties instance to IaasConfig instance - iaasConfig.setProperties(getProperties(iaasProviderBeansArray[i].property)); - } - iaasConfigsArray[i] = iaasConfig; - } - return iaasConfigsArray; - } - - private static Properties getProperties (List<PropertyBean> propertyBeans) { - - //convert to an array - PropertyBean [] propertyBeansArray = new PropertyBean[propertyBeans.size()]; - propertyBeans.toArray(propertyBeansArray); - Property [] propertyArray = new Property[propertyBeansArray.length]; - - for (int j = 0 ; j < propertyBeansArray.length ; j++) { - Property property = new Property(); - property.setName(propertyBeansArray[j].name); - property.setValue(propertyBeansArray[j].value); - propertyArray[j] = property; - } - - Properties properties = new Properties(); - properties.setProperties(propertyArray); - return properties; - } - - private static List<PropertyBean> getPropertyBeans (Properties properties) { - - List<PropertyBean> propertyBeans = null; - if(properties.getProperties() != null && properties.getProperties().length != 0) { - Property [] propertyArr = properties.getProperties(); - propertyBeans = new ArrayList<PropertyBean>(); - for (int i = 0; i < propertyArr.length ; i++) { - PropertyBean propertyBean = new PropertyBean(); - propertyBean.name = propertyArr[i].getName(); - propertyBean.value = propertyArr[i].getValue(); - propertyBeans.add(propertyBean); - } - } - return propertyBeans; - } - static void undeployCartridge (String cartridgeType) throws RestAPIException { CloudControllerServiceClient cloudControllerServiceClient = getCloudControllerServiceClient(); @@ -237,7 +116,7 @@ public class ServiceUtils { } } - return populatePartitionPojo(partitions); + return PojoConverter.populatePartitionPojo(partitions); } private static AutoscalerServiceClient getAutoscalerServiceClient () { @@ -252,33 +131,6 @@ public class ServiceUtils { return null; } - private static Partition[] populatePartitionPojo (org.apache.stratos.cloud.controller.deployment.partition.Partition[] - partitions) { - - Partition [] partitionBeans; - if(partitions == null) { - partitionBeans = new Partition[0]; - return partitionBeans; - } - - partitionBeans = new Partition[partitions.length]; - for (int i = 0 ; i < partitions.length ; i++) { - Partition partition = new Partition(); - partition.id = partitions[i].getId(); - partition.provider = partitions[i].getProvider(); - partition.partitionMin = partitions[i].getPartitionMin(); - partition.partitionMax = partitions[i].getPartitionMax(); - //properties are not added currently, TODO if required - //if(partitions[i].getProperties() != null) { - // List<PropertyBean> propertyBeans = getPropertyBeans(partitions[i].getProperties()); - // partition.property = propertyBeans; - //} - partitionBeans[i] = partition; - } - return partitionBeans; - } - - public static AutoscalePolicy[] getAutoScalePolicies () throws RestAPIException { org.apache.stratos.autoscaler.policy.model.AutoscalePolicy[] autoscalePolicies = null; @@ -294,70 +146,7 @@ public class ServiceUtils { } } - return populateAutoscalePojo(autoscalePolicies); - } - - private static AutoscalePolicy[] populateAutoscalePojo(org.apache.stratos.autoscaler.policy.model.AutoscalePolicy[] - autoscalePolicies) { - - AutoscalePolicy [] autoscalePolicyBeans; - if(autoscalePolicies == null) { - autoscalePolicyBeans = new AutoscalePolicy[0]; - return autoscalePolicyBeans; - } - - autoscalePolicyBeans = new AutoscalePolicy[autoscalePolicies.length]; - for (int i = 0 ; i < autoscalePolicies.length ; i++) { - AutoscalePolicy autoscalePolicy = new AutoscalePolicy(); - autoscalePolicy.id = autoscalePolicies[i].getId(); - autoscalePolicy.displayName = autoscalePolicies[i].getDisplayName(); - autoscalePolicy.description = autoscalePolicies[i].getDescription(); - if(autoscalePolicies[i].getLoadThresholds() != null) { - autoscalePolicy.loadThresholds = populateLoadThresholds(autoscalePolicies[i].getLoadThresholds()); - } - autoscalePolicyBeans[i] = autoscalePolicy; - } - return autoscalePolicyBeans; - } - - private static LoadThresholds populateLoadThresholds (org.apache.stratos.autoscaler.policy.model.LoadThresholds - loadThresholds) { - - LoadThresholds loadThresholdBean = new LoadThresholds(); - if(loadThresholds.getLoadAverage() != null) { - LoadAverage loadAverage = new LoadAverage(); - loadAverage.average = loadThresholds.getLoadAverage().getAverage(); - loadAverage.gradient = loadThresholds.getLoadAverage().getGradient(); - loadAverage.scaleDownMarginOfGradient = loadThresholds.getLoadAverage().getScaleDownMarginOfGradient(); - loadAverage.scaleDownMarginOfSecondDerivative = loadThresholds.getLoadAverage(). - getScaleDownMarginOfSecondDerivative(); - loadAverage.secondDerivative = loadThresholds.getLoadAverage().getSecondDerivative(); - loadThresholdBean.loadAverage = loadAverage; - } - if(loadThresholds.getMemoryConsumption() != null) { - MemoryConsumption memoryConsumption = new MemoryConsumption(); - memoryConsumption.average = loadThresholds.getMemoryConsumption().getAverage(); - memoryConsumption.gradient = loadThresholds.getMemoryConsumption().getGradient(); - memoryConsumption.scaleDownMarginOfGradient = loadThresholds.getMemoryConsumption(). - getScaleDownMarginOfGradient(); - memoryConsumption.scaleDownMarginOfSecondDerivative = loadThresholds.getMemoryConsumption(). - getScaleDownMarginOfSecondDerivative(); - memoryConsumption.secondDerivative = loadThresholds.getMemoryConsumption().getSecondDerivative(); - loadThresholdBean.memoryConsumption = memoryConsumption; - } - if(loadThresholds.getRequestsInFlight() != null) { - RequestsInFlight requestsInFlight = new RequestsInFlight(); - requestsInFlight.average = loadThresholds.getRequestsInFlight().getAverage(); - requestsInFlight.gradient = loadThresholds.getRequestsInFlight().getGradient(); - requestsInFlight.scaleDownMarginOfGradient = loadThresholds.getRequestsInFlight(). - getScaleDownMarginOfGradient(); - requestsInFlight.scaleDownMarginOfSecondDerivative = loadThresholds.getRequestsInFlight(). - getScaleDownMarginOfSecondDerivative(); - requestsInFlight.secondDerivative = loadThresholds.getRequestsInFlight().getSecondDerivative(); - loadThresholdBean.requestsInFlight = requestsInFlight; - } - - return loadThresholdBean; + return PojoConverter.populateAutoscalePojo(autoscalePolicies); } public static DeploymentPolicy[] getDeploymentPolicies () throws RestAPIException { @@ -375,60 +164,7 @@ public class ServiceUtils { } } - 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; + return PojoConverter.populateDeploymentPolicyPojo(deploymentPolicies); } static List<Cartridge> getAvailableCartridges(String cartridgeSearchString, Boolean multiTenant, ConfigurationContext configurationContext) throws ADCException {
