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
