Ravi Nori has uploaded a new change for review.

Change subject: restapi : Error concerning "update network --cluster-identifier 
--usages-usage"
......................................................................

restapi : Error concerning "update network --cluster-identifier --usages-usage"

update network --usage-usage throws error message stating that
usage is not valid xml type.

This patch converts usage to an XmlObject from type string

update network mynetwork --cluster-identifier Default
--usages-usage "usage.value=display"

Change-Id: I3104e0c7a7d076afe929c45c806aee5dce17028b
Bug-Url: https://bugzilla.redhat.com/950993
Signed-off-by: Ravi Nori <[email protected]>
---
M 
backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
M 
backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendCapabilitiesResource.java
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/NetworkValidator.java
M 
backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendClusterNetworkResourceTest.java
M 
backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/NetworkMapper.java
6 files changed, 41 insertions(+), 14 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/68/13868/1

diff --git 
a/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
 
b/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
index b0dc308..88b0bc9 100644
--- 
a/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
+++ 
b/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
@@ -250,8 +250,14 @@
     </xs:sequence>
   </xs:complexType>
 
-  <xs:element name="usages" type="Usages" />
+  <xs:element name="usage" type="Usage"/>
+  <xs:complexType name="Usage">
+    <xs:sequence>
+      <xs:element name="value" type="xs:string" minOccurs="0" maxOccurs="1"/>
+    </xs:sequence>
+  </xs:complexType>
 
+  <xs:element name="usages" type="Usages" />
   <xs:complexType name="Usages">
     <xs:sequence>
       <xs:annotation>
@@ -259,7 +265,7 @@
             <jaxb:property name="usages"/>
         </xs:appinfo>
       </xs:annotation>
-      <xs:element name="usage" type="xs:string" minOccurs="0" 
maxOccurs="unbounded"/>
+      <xs:element name="usage" type="Usage" minOccurs="0" 
maxOccurs="unbounded"/>
     </xs:sequence>
   </xs:complexType>
 
diff --git 
a/backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml
 
b/backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml
index 917565a..cf7b87f 100644
--- 
a/backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml
+++ 
b/backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml
@@ -1105,7 +1105,7 @@
       parameterType: Network
       signatures:
       - mandatoryArguments: {}
-        optionalArguments: {network.display: 'xs:boolean', 
network.usages.usage--COLLECTION: {usage: 'xs:string'}}
+        optionalArguments: {network.display: 'xs:boolean', 
network.usages.usage--COLLECTION: {usage.value: 'xs:string'}}
     urlparams: {}
     headers:
       Content-Type: {value: application/xml|json, required: true}
@@ -1398,7 +1398,7 @@
       parameterType: Network
       signatures:
       - mandatoryArguments: {}
-        optionalArguments: {network.display: 'xs:boolean', 
network.usages.usage--COLLECTION: {usage: 'xs:string'}}
+        optionalArguments: {network.display: 'xs:boolean', 
network.usages.usage--COLLECTION: {usage.value: 'xs:string'}}
     urlparams: {}
     headers:
       Content-Type: {value: application/xml|json, required: true}
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendCapabilitiesResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendCapabilitiesResource.java
index 40d760e..2ad4b69 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendCapabilitiesResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendCapabilitiesResource.java
@@ -73,6 +73,7 @@
 import org.ovirt.engine.api.model.TemplateStatus;
 import org.ovirt.engine.api.model.TransportType;
 import org.ovirt.engine.api.model.TransportTypes;
+import org.ovirt.engine.api.model.Usage;
 import org.ovirt.engine.api.model.Usages;
 import org.ovirt.engine.api.model.Version;
 import org.ovirt.engine.api.model.VersionCaps;
@@ -262,7 +263,9 @@
         if (VersionUtils.greaterOrEqual(version, VERSION_3_1)) {
             version.setUsages(new Usages());
             for (NetworkUsage usage : values) {
-                version.getUsages().getUsages().add(usage.value());
+                Usage oneUsage = new Usage();
+                oneUsage.setValue(usage.value());
+                version.getUsages().getUsages().add(oneUsage);
             }
         }
     }
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/NetworkValidator.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/NetworkValidator.java
index 41bd959..c2f5a64 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/NetworkValidator.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/NetworkValidator.java
@@ -3,6 +3,7 @@
 import org.ovirt.engine.api.model.Network;
 import org.ovirt.engine.api.restapi.types.NetworkUsage;
 import static org.ovirt.engine.api.common.util.EnumValidator.validateEnum;
+import org.ovirt.engine.api.model.Usage;
 
 @ValidatedClass(clazz = Network.class)
 public class NetworkValidator implements Validator<Network> {
@@ -11,8 +12,8 @@
     public void validateEnums(Network network) {
         if (network != null) {
             if (network.isSetUsages()) {
-                for (String usage : network.getUsages().getUsages()) {
-                    validateEnum(NetworkUsage.class, usage, true);
+                for (Usage usage : network.getUsages().getUsages()) {
+                    validateEnum(NetworkUsage.class, usage.getValue(), true);
                 }
             }
         }
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendClusterNetworkResourceTest.java
 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendClusterNetworkResourceTest.java
index c8a7aa8..d6c8d44 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendClusterNetworkResourceTest.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendClusterNetworkResourceTest.java
@@ -4,11 +4,13 @@
 import static 
org.ovirt.engine.api.restapi.resource.BackendClusterNetworksResourceTest.CLUSTER_ID;
 
 import java.util.ArrayList;
+import java.util.List;
 
 import javax.ws.rs.WebApplicationException;
 
 import org.junit.Test;
 import org.ovirt.engine.api.model.Network;
+import org.ovirt.engine.api.model.Usage;
 import org.ovirt.engine.api.restapi.types.NetworkUsage;
 import org.ovirt.engine.core.common.action.NetworkClusterParameters;
 import org.ovirt.engine.core.common.action.VdcActionType;
@@ -101,12 +103,20 @@
         assertEquals(model.isDisplay(), true);
         assertTrue(model.isSetUsages());
         assertNotNull(model.getUsages().getUsages());
-        
assertTrue(model.getUsages().getUsages().contains(NetworkUsage.DISPLAY.value()));
-        
assertTrue(model.getUsages().getUsages().contains(NetworkUsage.MIGRATION.value()));
+        assertTrue(hasValue(model.getUsages().getUsages(), 
NetworkUsage.DISPLAY.value()));
+        assertTrue(hasValue(model.getUsages().getUsages(), 
NetworkUsage.MIGRATION.value()));
         assertTrue(model.isSetRequired());
         assertEquals(model.isRequired(), true);
    }
 
+    private boolean hasValue(List<Usage> usages, String value) {
+        for (Usage usage : usages) {
+            if (usage.getValue().equals(value)) {
+                return true;
+            }
+        }
+        return false;
+    }
 
     protected void setUpEntityQueryExpectations(int times, boolean isDisplay, 
boolean isMigration, boolean isRequired)
             throws Exception {
diff --git 
a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/NetworkMapper.java
 
b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/NetworkMapper.java
index 1c7ff44..1b21ae8 100644
--- 
a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/NetworkMapper.java
+++ 
b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/NetworkMapper.java
@@ -8,6 +8,7 @@
 import org.ovirt.engine.api.model.IP;
 import org.ovirt.engine.api.model.Network;
 import org.ovirt.engine.api.model.NetworkStatus;
+import org.ovirt.engine.api.model.Usage;
 import org.ovirt.engine.api.model.Usages;
 import org.ovirt.engine.api.model.VLAN;
 import org.ovirt.engine.api.restapi.utils.GuidUtils;
@@ -54,8 +55,8 @@
         }
         if (model.isSetUsages()) {
             List<NetworkUsage> networkUsages = new ArrayList<NetworkUsage>();
-            for (String usage : model.getUsages().getUsages()) {
-                networkUsages.add(NetworkUsage.fromValue(usage));
+            for (Usage usage : model.getUsages().getUsages()) {
+                networkUsages.add(NetworkUsage.fromValue(usage.getValue()));
             }
             
entity.getCluster().setDisplay(networkUsages.contains(NetworkUsage.DISPLAY));
             
entity.getCluster().setMigration(networkUsages.contains(NetworkUsage.MIGRATION));
@@ -101,14 +102,14 @@
 
         model.setUsages(new Usages());
         if (entity.isVmNetwork()) {
-            model.getUsages().getUsages().add(NetworkUsage.VM.value());
+            
model.getUsages().getUsages().add(buildUsage(NetworkUsage.VM.value()));
         }
         if (entity.getCluster() != null) {
             if (entity.getCluster().isDisplay()) {
-                
model.getUsages().getUsages().add(NetworkUsage.DISPLAY.value());
+                
model.getUsages().getUsages().add(buildUsage(NetworkUsage.DISPLAY.value()));
             }
             if (entity.getCluster().isMigration()) {
-                
model.getUsages().getUsages().add(NetworkUsage.MIGRATION.value());
+                
model.getUsages().getUsages().add(buildUsage(NetworkUsage.MIGRATION.value()));
             }
         }
         if (entity.getCluster() != null) {
@@ -121,6 +122,12 @@
         return model;
     }
 
+    private static Usage buildUsage(String value) {
+        Usage usage = new Usage();
+        usage.setValue(value);
+        return usage;
+    }
+
     @Mapping(from = 
org.ovirt.engine.core.common.businessentities.network.NetworkStatus.class, to = 
NetworkStatus.class)
     public static NetworkStatus 
map(org.ovirt.engine.core.common.businessentities.network.NetworkStatus 
entityStatus,
                                     NetworkStatus template) {


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I3104e0c7a7d076afe929c45c806aee5dce17028b
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Ravi Nori <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to