Moti Asayag has uploaded a new change for review.

Change subject: engine: Validate network provider properties
......................................................................

engine: Validate network provider properties

Validates that host which is installed with network provider
supplies all of the required properties or the provider has
them defined.

Change-Id: Idcdcddb9694426c1e656c9fa1e04dc7f37e8115c
Bug-Url: https://bugzilla.redhat.com/1061728
Signed-off-by: Moti Asayag <masa...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVdsCommand.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
2 files changed, 62 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/20/29520/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVdsCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVdsCommand.java
index 332fd07..191113c 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVdsCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVdsCommand.java
@@ -30,7 +30,10 @@
 import org.ovirt.engine.core.common.action.VdsActionParameters;
 import 
org.ovirt.engine.core.common.action.VdsOperationActionParameters.AuthenticationMethod;
 import 
org.ovirt.engine.core.common.businessentities.BusinessEntitiesDefinitions;
+import 
org.ovirt.engine.core.common.businessentities.OpenstackNetworkProviderProperties;
+import 
org.ovirt.engine.core.common.businessentities.OpenstackNetworkProviderProperties.AgentConfiguration;
 import org.ovirt.engine.core.common.businessentities.Provider;
+import org.ovirt.engine.core.common.businessentities.ProviderType;
 import org.ovirt.engine.core.common.businessentities.StoragePool;
 import org.ovirt.engine.core.common.businessentities.VDS;
 import org.ovirt.engine.core.common.businessentities.VDSStatus;
@@ -343,6 +346,18 @@
             }
         }
 
+        if (returnValue && getParameters().getNetworkProviderId() != null) {
+
+            NetworkProviderValidator validator =
+                    new 
NetworkProviderValidator(getParameters().getNetworkProviderId(),
+                            getParameters().getNetworkMappings());
+
+            returnValue = validate(validator.providerExists())
+                    && validate(validator.providerTypeValid())
+                    && validate(validator.networkMappingsProvided())
+                    && validate(validator.messagingBrokerPropertiesProvided());
+        }
+
         if (returnValue && isGlusterSupportEnabled()) {
             if (clusterHasServers()) {
                 VDS upServer = getClusterUtils().getUpServer(getVdsGroupId());
@@ -554,4 +569,48 @@
         return jobProperties;
     }
 
+    public class NetworkProviderValidator {
+        private Guid providerId;
+        private String mappings;
+        private Provider<?> provider;
+
+        public NetworkProviderValidator(Guid providerId, String mappings) {
+            this.providerId = providerId;
+            this.mappings = mappings;
+        }
+
+        public ValidationResult providerExists() {
+            provider = getProviderDao().get(providerId);
+            return provider == null
+                    ? new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_PROVIDER_DOESNT_EXIST)
+                    : ValidationResult.VALID;
+        }
+
+        public ValidationResult providerTypeValid() {
+            return provider.getType() == ProviderType.OPENSTACK_NETWORK
+                    ? ValidationResult.VALID
+                    : new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_PROVIDER_TYPE_MISMATCH);
+        }
+
+        public ValidationResult networkMappingsProvided() {
+            return StringUtils.isBlank(mappings)
+                    && 
StringUtils.isBlank(getProviderProperties().getNetworkMappings())
+                    ? new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_MISSING_NETWORK_MAPPINGS)
+                    : ValidationResult.VALID;
+        }
+
+        public ValidationResult messagingBrokerPropertiesProvided() {
+            AgentConfiguration properties = getProviderProperties();
+            return properties.getMessagingConfiguration() == null
+                    || 
StringUtils.isEmpty(properties.getMessagingConfiguration().getAddress())
+                    ? new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_MISSING_MESSAGING_BROKER_PROPERTIES)
+                    : ValidationResult.VALID;
+        }
+
+        public AgentConfiguration getProviderProperties() {
+            OpenstackNetworkProviderProperties properties =
+                    (OpenstackNetworkProviderProperties) 
provider.getAdditionalProperties();
+            return properties.getAgentConfiguration();
+        }
+    }
 }
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
index fe44459..7401dd6 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
@@ -547,6 +547,9 @@
     
ACTION_TYPE_FAILED_EXTERNAL_NETWORK_CANNOT_BE_REQUIRED(ErrorType.NOT_SUPPORTED),
     
ACTION_TYPE_FAILED_ISCSI_BOND_NETWORK_CANNOT_BE_REQUIRED(ErrorType.NOT_SUPPORTED),
     ACTION_TYPE_FAILED_PROVIDER_NETWORKS_USED(ErrorType.CONFLICT),
+    ACTION_TYPE_FAILED_PROVIDER_TYPE_MISMATCH(ErrorType.BAD_PARAMETERS),
+    ACTION_TYPE_FAILED_MISSING_NETWORK_MAPPINGS(ErrorType.BAD_PARAMETERS),
+    
ACTION_TYPE_FAILED_MISSING_MESSAGING_BROKER_PROPERTIES(ErrorType.BAD_PARAMETERS),
     
ACTION_TYPE_FAILED_EXTERNAL_NETWORK_CANNOT_BE_PORT_MIRRORED(ErrorType.NOT_SUPPORTED),
     
ACTION_TYPE_FAILED_EXTERNAL_NETWORK_CANNOT_BE_REWIRED(ErrorType.NOT_SUPPORTED),
     
ACTION_TYPE_FAILED_EXTERNAL_NETWORK_CANNOT_HAVE_MTU(ErrorType.NOT_SUPPORTED),


-- 
To view, visit http://gerrit.ovirt.org/29520
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Idcdcddb9694426c1e656c9fa1e04dc7f37e8115c
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Moti Asayag <masa...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to