GutoVeronezi commented on code in PR #6442:
URL: https://github.com/apache/cloudstack/pull/6442#discussion_r1174280152


##########
server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java:
##########
@@ -6207,34 +6209,32 @@ void validateLoadBalancerServiceCapabilities(final 
Map<Capability, String> lbSer
     }
 
     void validateSourceNatServiceCapablities(final Map<Capability, String> 
sourceNatServiceCapabilityMap) {
-        if (sourceNatServiceCapabilityMap != null && 
!sourceNatServiceCapabilityMap.isEmpty()) {
-            if (sourceNatServiceCapabilityMap.keySet().size() > 2) {
-                throw new InvalidParameterValueException("Only " + 
Capability.SupportedSourceNatTypes.getName() + " and " + 
Capability.RedundantRouter
-                        + " capabilities can be sepcified for source nat 
service");
-            }
-
-            for (final Map.Entry<Capability ,String> srcNatPair : 
sourceNatServiceCapabilityMap.entrySet()) {
-                final Capability capability = srcNatPair.getKey();
-                final String value = srcNatPair.getValue();
-                if (capability == Capability.SupportedSourceNatTypes) {
-                    final boolean perAccount = value.contains("peraccount");
-                    final boolean perZone = value.contains("perzone");
-                    if (perAccount && perZone || !perAccount && !perZone) {
-                        throw new InvalidParameterValueException("Either 
peraccount or perzone source NAT type can be specified for "
-                                + 
Capability.SupportedSourceNatTypes.getName());
-                    }
-                } else if (capability == Capability.RedundantRouter) {
-                    final boolean enabled = value.contains("true");
-                    final boolean disabled = value.contains("false");
-                    if (!enabled && !disabled) {
-                        throw new InvalidParameterValueException("Unknown 
specified value for " + Capability.RedundantRouter.getName());
-                    }
-                } else {
-                    throw new InvalidParameterValueException("Only " + 
Capability.SupportedSourceNatTypes.getName() + " and " + 
Capability.RedundantRouter
-                            + " capabilities can be sepcified for source nat 
service");
+        if (MapUtils.isNotEmpty(sourceNatServiceCapabilityMap) && 
(sourceNatServiceCapabilityMap.size() > 2 || ! 
sourceNatCapabilitiesContainValidValues(sourceNatServiceCapabilityMap))) {
+            throw new InvalidParameterValueException("Only " + 
Capability.SupportedSourceNatTypes.getName()
+                    + ", " + Capability.RedundantRouter
+                    + " capabilities can be sepcified for source nat service");

Review Comment:
   ```suggestion
                       + " capabilities can be specified for source nat 
service");
   ```



##########
api/src/main/java/org/apache/cloudstack/api/response/IPAddressResponse.java:
##########
@@ -159,10 +159,9 @@ public class IPAddressResponse extends 
BaseResponseWithAnnotations implements Co
     @Param(description="the name of the Network where ip belongs to")
     private String networkName;
 
-    /*
-        @SerializedName(ApiConstants.JOB_ID) @Param(description="shows the 
current pending asynchronous job ID. This tag is not returned if no current 
pending jobs are acting on the volume")
-        private IdentityProxy jobId = new IdentityProxy("async_job");
-    */
+    @SerializedName(ApiConstants.HAS_RULES)
+    @Param(description="whether the ip address has 
Frewall-/PortForwarding-/LoadBalancing-rules defined")

Review Comment:
   ```suggestion
       @Param(description="whether the ip address has 
Firewall/PortForwarding/LoadBalancing rules defined")
   ```



##########
server/src/test/java/com/cloud/configuration/ConfigurationManagerTest.java:
##########
@@ -547,16 +548,68 @@ public void searchForNetworkOfferingsTest() {
         assertThat(configurationMgr.searchForNetworkOfferings(cmd).second(), 
is(2));
     }
 
+    @Test
+    public void validateEmptySourceNatServiceCapablitiesTest() {
+        Map<Capability, String> sourceNatServiceCapabilityMap = new 
HashMap<>();
+
+        
configurationMgr.validateSourceNatServiceCapablities(sourceNatServiceCapabilityMap);
+    }
+
+    @Test
+    public void 
validateInvalidSourceNatTypeForSourceNatServiceCapablitiesTest() {
+        Map<Capability, String> sourceNatServiceCapabilityMap = new 
HashMap<>();
+        sourceNatServiceCapabilityMap.put(Capability.SupportedSourceNatTypes, 
"perDomain");
+
+        boolean caught = false;
+        try {
+            
configurationMgr.validateSourceNatServiceCapablities(sourceNatServiceCapabilityMap);
+        } catch (InvalidParameterValueException e) {
+            Assert.assertTrue(e.getMessage(), e.getMessage().contains("Either 
peraccount or perzone source NAT type can be specified for 
SupportedSourceNatTypes"));
+            caught = true;
+        }
+        Assert.assertTrue("should not be accepted", caught);
+    }
+
+    @Test
+    public void 
validateInvalidBooleanValueForSourceNatServiceCapablitiesTest() {
+        Map<Capability, String> sourceNatServiceCapabilityMap = new 
HashMap<>();
+        sourceNatServiceCapabilityMap.put(Capability.RedundantRouter, "maybe");
+
+        boolean caught = false;
+        try {
+            
configurationMgr.validateSourceNatServiceCapablities(sourceNatServiceCapabilityMap);
+        } catch (InvalidParameterValueException e) {
+            Assert.assertTrue(e.getMessage(), e.getMessage().contains("Unknown 
specified value for RedundantRouter"));
+            caught = true;
+        }
+        Assert.assertTrue("should not be accepted", caught);
+    }
+
+    @Test
+    public void validateInvalidCapabilityForSourceNatServiceCapablitiesTest() {
+        Map<Capability, String> sourceNatServiceCapabilityMap = new 
HashMap<>();
+        sourceNatServiceCapabilityMap.put(Capability.ElasticIp, "perDomain");
+
+        boolean caught = false;
+        try {
+            
configurationMgr.validateSourceNatServiceCapablities(sourceNatServiceCapabilityMap);
+        } catch (InvalidParameterValueException e) {
+            Assert.assertTrue(e.getMessage(), e.getMessage().contains("Only 
SupportedSourceNatTypes, Network.Capability[name=RedundantRouter] capabilities 
can be sepcified for source nat service"));

Review Comment:
   ```suggestion
               Assert.assertTrue(e.getMessage(), e.getMessage().contains("Only 
SupportedSourceNatTypes, Network.Capability[name=RedundantRouter] capabilities 
can be specified for source nat service"));
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to