You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ni...@apache.org on 2014/12/07 13:40:45 UTC
[12/16] stratos git commit: Fixing deployment policy validation to
cater docker partitions.
Fixing deployment policy validation to cater docker partitions.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/9affb35a
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/9affb35a
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/9affb35a
Branch: refs/heads/master
Commit: 9affb35a4808459b356dbb8f5d98d6d95d4a6344
Parents: 826bc65
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Sat Dec 6 18:18:33 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sun Dec 7 18:00:49 2014 +0530
----------------------------------------------------------------------
.../concurrent/PartitionValidatorCallable.java | 46 ++++------------
.../impl/CloudControllerServiceImpl.java | 45 +++-------------
.../impl/CloudControllerServiceUtil.java | 56 ++++++++++++++++++++
3 files changed, 73 insertions(+), 74 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/9affb35a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/concurrent/PartitionValidatorCallable.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/concurrent/PartitionValidatorCallable.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/concurrent/PartitionValidatorCallable.java
index 7cb88f1..b13d6fe 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/concurrent/PartitionValidatorCallable.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/concurrent/PartitionValidatorCallable.java
@@ -27,6 +27,7 @@ import org.apache.stratos.cloud.controller.exception.InvalidIaasProviderExceptio
import org.apache.stratos.cloud.controller.exception.InvalidPartitionException;
import org.apache.stratos.cloud.controller.domain.Cartridge;
import org.apache.stratos.cloud.controller.domain.IaasProvider;
+import org.apache.stratos.cloud.controller.services.impl.CloudControllerServiceUtil;
import org.apache.stratos.cloud.controller.util.CloudControllerUtil;
import org.apache.stratos.cloud.controller.iaases.Iaas;
import org.apache.stratos.cloud.controller.iaases.validators.IaasBasedPartitionValidator;
@@ -46,47 +47,20 @@ public class PartitionValidatorCallable implements Callable<IaasProvider> {
@Override
public IaasProvider call() throws Exception {
- if (log.isDebugEnabled()) {
- log.debug("Partition validation started for "+partition+" of "+cartridge);
- }
- String provider = partition.getProvider();
- IaasProvider iaasProvider = cartridge.getIaasProvider(provider);
-
- if (iaasProvider == null) {
- String msg =
- "Invalid Partition - " + partition.toString() +
- ". Cause: Iaas Provider is null for Provider: " + provider;
- log.error(msg);
- throw new InvalidPartitionException(msg);
+ if (log.isDebugEnabled()) {
+ log.debug("Partition validation started for " + partition + " of " + cartridge);
}
+ String provider = partition.getProvider();
+ IaasProvider iaasProvider = cartridge.getIaasProvider(provider);
- Iaas iaas = iaasProvider.getIaas();
-
- if (iaas == null) {
-
- try {
- iaas = CloudControllerUtil.getIaas(iaasProvider);
- } catch (InvalidIaasProviderException e) {
- String msg =
- "Invalid Partition - " + partition.toString() +
- ". Cause: Unable to build Iaas of this IaasProvider [Provider] : " + provider+". "+e.getMessage();
- log.error(msg, e);
- throw new InvalidPartitionException(msg, e);
- }
-
- }
-
- IaasBasedPartitionValidator validator = (IaasBasedPartitionValidator) iaas.getPartitionValidator();
- validator.setIaasProvider(iaasProvider);
IaasProvider updatedIaasProvider =
- validator.validate(partition.getId(),
- CloudControllerUtil.toJavaUtilProperties(partition.getProperties()));
-
+ CloudControllerServiceUtil.validatePartitionAndGetIaasProvider(partition, iaasProvider);
+
if (log.isDebugEnabled()) {
- log.debug("Partition "+partition.toString()+ " is validated successfully "
- + "against the Cartridge: "+cartridge.getType());
+ log.debug("Partition " + partition.toString() + " is validated successfully " + "against the Cartridge: "
+ + cartridge.getType());
}
-
+
return updatedIaasProvider;
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/9affb35a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
index 3049735..b8fd6c5 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
@@ -1003,8 +1003,13 @@ public class CloudControllerServiceImpl implements CloudControllerService {
String partitionId = entry.getKey();
Future<IaasProvider> job = entry.getValue();
try {
+
// add to a temporary Map
- partitionToIaasProviders.put(partitionId, job.get());
+ IaasProvider iaasProvider = job.get();
+
+ if(iaasProvider != null) {
+ partitionToIaasProviders.put(partitionId, iaasProvider);
+ }
// add to cache
CloudControllerContext.getInstance().addToCartridgeTypeToPartitionIdMap(cartridgeType, partitionId);
@@ -1050,47 +1055,11 @@ public class CloudControllerServiceImpl implements CloudControllerService {
String provider = partition.getProvider();
String partitionId = partition.getId();
- Properties partitionProperties = CloudControllerUtil.toJavaUtilProperties(partition.getProperties());
handleNullObject(provider, "Partition [" + partitionId + "] validation failed. Partition provider is null.");
IaasProvider iaasProvider = CloudControllerConfig.getInstance().getIaasProvider(provider);
- if (iaasProvider != null) {
- // if this is a IaaS based partition
- Iaas iaas = iaasProvider.getIaas();
-
- if (iaas == null) {
-
- try {
- iaas = CloudControllerUtil.getIaas(iaasProvider);
- } catch (InvalidIaasProviderException e) {
- String msg =
- "Invalid Partition - " + partition.toString()
- + ". Cause: Unable to build Iaas of this IaasProvider [Provider] : " + provider
- + ". " + e.getMessage();
- log.error(msg, e);
- throw new InvalidPartitionException(msg, e);
- }
- }
-
- IaasBasedPartitionValidator validator = (IaasBasedPartitionValidator) iaas.getPartitionValidator();
- validator.setIaasProvider(iaasProvider);
- validator.validate(partitionId, partitionProperties);
- return true;
-
- } else if (CloudControllerConstants.DOCKER_PARTITION_PROVIDER.equals(provider)) {
- // if this is a docker based Partition
- KubernetesBasedPartitionValidator validator = new KubernetesBasedPartitionValidator();
- validator.validate(partitionId, partitionProperties);
- return true;
-
- } else {
-
- String msg =
- "Invalid Partition - " + partition.toString() + ". Cause: Cannot identify as a valid partition.";
- log.error(msg);
- throw new InvalidPartitionException(msg);
- }
+ return CloudControllerServiceUtil.validatePartition(partition, iaasProvider);
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/9affb35a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceUtil.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceUtil.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceUtil.java
index 056d991..4fbf294 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceUtil.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceUtil.java
@@ -19,19 +19,27 @@
package org.apache.stratos.cloud.controller.services.impl;
+import java.util.Properties;
+
import com.google.common.net.InetAddresses;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.stratos.cloud.controller.context.CloudControllerContext;
import org.apache.stratos.cloud.controller.domain.ClusterContext;
import org.apache.stratos.cloud.controller.domain.IaasProvider;
import org.apache.stratos.cloud.controller.domain.MemberContext;
+import org.apache.stratos.cloud.controller.domain.Partition;
import org.apache.stratos.cloud.controller.domain.Volume;
import org.apache.stratos.cloud.controller.exception.CloudControllerException;
import org.apache.stratos.cloud.controller.exception.InvalidIaasProviderException;
+import org.apache.stratos.cloud.controller.exception.InvalidPartitionException;
import org.apache.stratos.cloud.controller.iaases.Iaas;
+import org.apache.stratos.cloud.controller.iaases.validators.IaasBasedPartitionValidator;
+import org.apache.stratos.cloud.controller.iaases.validators.KubernetesBasedPartitionValidator;
import org.apache.stratos.cloud.controller.messaging.publisher.CartridgeInstanceDataPublisher;
import org.apache.stratos.cloud.controller.messaging.topology.TopologyBuilder;
+import org.apache.stratos.cloud.controller.util.CloudControllerConstants;
import org.apache.stratos.cloud.controller.util.CloudControllerUtil;
import org.apache.stratos.messaging.domain.topology.MemberStatus;
import org.jclouds.rest.ResourceNotFoundException;
@@ -141,4 +149,52 @@ public class CloudControllerServiceUtil {
boolean isValid = InetAddresses.isInetAddress(ip);
return isValid;
}
+
+ public static IaasProvider validatePartitionAndGetIaasProvider(Partition partition, IaasProvider iaasProvider) throws InvalidPartitionException {
+ String provider = partition.getProvider();
+ String partitionId = partition.getId();
+ Properties partitionProperties = CloudControllerUtil.toJavaUtilProperties(partition.getProperties());
+
+ if (iaasProvider != null) {
+ // if this is a IaaS based partition
+ Iaas iaas = iaasProvider.getIaas();
+
+ if (iaas == null) {
+
+ try {
+ iaas = CloudControllerUtil.getIaas(iaasProvider);
+ } catch (InvalidIaasProviderException e) {
+ String msg =
+ "Invalid Partition - " + partition.toString()
+ + ". Cause: Unable to build Iaas of this IaasProvider [Provider] : " + provider
+ + ". " + e.getMessage();
+ log.error(msg, e);
+ throw new InvalidPartitionException(msg, e);
+ }
+ }
+
+ IaasBasedPartitionValidator validator = (IaasBasedPartitionValidator) iaas.getPartitionValidator();
+ validator.setIaasProvider(iaasProvider);
+ iaasProvider = validator.validate(partitionId, partitionProperties);
+ return iaasProvider;
+
+ } else if (CloudControllerConstants.DOCKER_PARTITION_PROVIDER.equals(provider)) {
+ // if this is a docker based Partition
+ KubernetesBasedPartitionValidator validator = new KubernetesBasedPartitionValidator();
+ validator.validate(partitionId, partitionProperties);
+ return null;
+
+ } else {
+
+ String msg =
+ "Invalid Partition - " + partition.toString() + ". Cause: Cannot identify as a valid partition.";
+ log.error(msg);
+ throw new InvalidPartitionException(msg);
+ }
+ }
+
+ public static boolean validatePartition(Partition partition, IaasProvider iaasProvider) throws InvalidPartitionException {
+ validatePartitionAndGetIaasProvider(partition, iaasProvider);
+ return true;
+ }
}