Yevgeny Zaspitsky has uploaded a new change for review. Change subject: restapi: Enable specifying management network on cluster update ......................................................................
restapi: Enable specifying management network on cluster update Enable specifying management network on cluster update. That is needed when updating DC on a detached cluster and being processed by the backend only in that case. Change-Id: Id531ee5f21145386de2a32c6e412e808563e0326 Signed-off-by: Yevgeny Zaspitsky <yzasp...@redhat.com> --- 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/BackendClusterResource.java M backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendClustersResource.java M backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendDataCenterClusterResource.java A backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/ManagementNetworkFinder.java 5 files changed, 77 insertions(+), 33 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/49/37749/1 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 e057ee2..c54f04b 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 @@ -1940,7 +1940,8 @@ cluster.scheduling_policy.id: 'xs:string', cluster.scheduling_policy.properties.property--COLLECTION: {property.name: 'xs:string', property.value: 'xs:string'}, cluster.error_handling.on_error: 'xs:string', cluster.virt_service: 'xs:boolean', cluster.gluster_service: 'xs:boolean', cluster.threads_as_cores: 'xs:boolean', cluster.tunnel_migration: 'xs:boolean', cluster.ballooning_enabled: 'xs:boolean', cluster.cpu.architecture: 'xs:string', cluster.display.proxy: 'xs:string', cluster.ksm.enabled: 'xs:boolean', - cluster.fencing_policy.enabled: 'xs:boolean', cluster.fencing_policy.skip_if_sd_active.enabled: 'xs:boolean', cluster.fencing_policy.skip_if_connectivity_broken.enabled: 'xs:boolean', cluster.fencing_policy.skip_if_connectivity_broken.threshold: 'xs:int'} + cluster.fencing_policy.enabled: 'xs:boolean', cluster.fencing_policy.skip_if_sd_active.enabled: 'xs:boolean', cluster.fencing_policy.skip_if_connectivity_broken.enabled: 'xs:boolean', cluster.fencing_policy.skip_if_connectivity_broken.threshold: 'xs:int', + cluster.management_network.id|name: 'xs:string'} description: update the specified cluster in the system. The capabilities like virt service, cluster service, tarnsparent huge pages etc can be changed. urlparams: {} headers: @@ -2365,7 +2366,8 @@ cluster.scheduling_policy.thresholds.low--DEPRECATED: 'xs:int', cluster.scheduling_policy.thresholds.high--DEPRECATED: 'xs:int', cluster.scheduling_policy.thresholds.duration--DEPRECATED: 'xs:int', cluster.scheduling_policy.id: 'xs:string', cluster.scheduling_policy.properties.property--COLLECTION: {property.name: 'xs:string', property.value: 'xs:string'}, cluster.error_handling.on_error: 'xs:string', cluster.virt_service: 'xs:boolean', cluster.gluster_service: 'xs:boolean', cluster.threads_as_cores: 'xs:boolean', cluster.tunnel_migration: 'xs:boolean', cluster.trusted_service: 'xs:boolean', cluster.ha_reservation: 'xs:boolean', cluster.ballooning_enabled: 'xs:boolean', - cluster.cpu.architecture: 'xs:string', cluster.display.proxy: 'xs:string', cluster.ksm.enabled: 'xs:boolean',} + cluster.cpu.architecture: 'xs:string', cluster.display.proxy: 'xs:string', cluster.ksm.enabled: 'xs:boolean', + cluster.management_network.id|name: 'xs:string'} description: update specified cluster in the data center urlparams: {} headers: diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendClusterResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendClusterResource.java index e0c5dd6..d399550 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendClusterResource.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendClusterResource.java @@ -23,11 +23,13 @@ import static org.ovirt.engine.api.restapi.resource.BackendClustersResource.SUB_COLLECTIONS; -public class BackendClusterResource extends AbstractBackendSubResource<Cluster, VDSGroup> implements - ClusterResource { +public class BackendClusterResource extends AbstractBackendSubResource<Cluster, VDSGroup> implements ClusterResource { + + private final ManagementNetworkFinder managementNetworkFinder; public BackendClusterResource(String id) { super(id, Cluster.class, VDSGroup.class, SUB_COLLECTIONS); + managementNetworkFinder = new ManagementNetworkFinder(this); } @Override @@ -58,10 +60,22 @@ VdcObjectType.VdsGroups)); } - protected class UpdateParametersProvider implements ParametersProvider<Cluster, VDSGroup> { + private class UpdateParametersProvider implements ParametersProvider<Cluster, VDSGroup> { @Override public VdcActionParametersBase getParameters(Cluster incoming, VDSGroup entity) { - return new ManagementNetworkOnClusterOperationParameters(map(incoming, entity)); + final VDSGroup cluster = map(incoming, entity); + final ManagementNetworkOnClusterOperationParameters managementNetworkOnClusterOperationParameters; + final Guid dcId = getDataCenterId(cluster); + if (dcId == null) { + managementNetworkOnClusterOperationParameters = + new ManagementNetworkOnClusterOperationParameters(cluster); + } else { + final Guid managementNetworkId = + managementNetworkFinder.getManagementNetworkId(incoming, dcId); + managementNetworkOnClusterOperationParameters = + new ManagementNetworkOnClusterOperationParameters(cluster, managementNetworkId); + } + return managementNetworkOnClusterOperationParameters; } } @@ -89,4 +103,8 @@ public AssignedCpuProfilesResource getCpuProfilesResource() { return inject(new BackendAssignedCpuProfilesResource(id)); } + + protected Guid getDataCenterId(VDSGroup cluster) { + return cluster.getStoragePoolId(); + } } diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendClustersResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendClustersResource.java index 13eac67..b186201 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendClustersResource.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendClustersResource.java @@ -6,10 +6,8 @@ import org.ovirt.engine.api.model.Cluster; import org.ovirt.engine.api.model.Clusters; -import org.ovirt.engine.api.model.Network; import org.ovirt.engine.api.resource.ClusterResource; import org.ovirt.engine.api.resource.ClustersResource; -import org.ovirt.engine.api.restapi.utils.GuidUtils; import org.ovirt.engine.core.common.action.ManagementNetworkOnClusterOperationParameters; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.action.VdsGroupParametersBase; @@ -17,7 +15,6 @@ import org.ovirt.engine.core.common.businessentities.VDSGroup; import org.ovirt.engine.core.common.interfaces.SearchType; import org.ovirt.engine.core.common.mode.ApplicationMode; -import org.ovirt.engine.core.common.queries.IdAndNameQueryParameters; import org.ovirt.engine.core.common.queries.IdQueryParameters; import org.ovirt.engine.core.common.queries.VdcQueryParametersBase; import org.ovirt.engine.core.common.queries.VdcQueryType; @@ -31,8 +28,12 @@ static final String[] SUB_COLLECTIONS = { "networks", "permissions", "glustervolumes", "glusterhooks", "affinitygroups", "cpuprofiles" }; static final String[] VIRT_ONLY_MODE_COLLECTIONS_TO_HIDE = {"glustervolumes", "glusterhooks" }; + + private final ManagementNetworkFinder managementNetworkFinder; + public BackendClustersResource() { super(Cluster.class, VDSGroup.class, SUB_COLLECTIONS); + managementNetworkFinder = new ManagementNetworkFinder(this); } @Override @@ -91,34 +92,14 @@ return getStoragePool(cluster.getDataCenter(), this); } - private Guid getManagementNetworkId(Cluster cluster, Guid dataCenterId) { - Guid managementNetworkId = null; - if (cluster.isSetManagementNetwork()) { - validateParameters(cluster.getManagementNetwork(), "id|name"); - final Network rawManagementNetwork = cluster.getManagementNetwork(); - if (rawManagementNetwork.isSetId()) { - managementNetworkId = GuidUtils.asGuid(rawManagementNetwork.getId()); - } else { - final org.ovirt.engine.core.common.businessentities.network.Network managementNetwork = - getEntity(org.ovirt.engine.core.common.businessentities.network.Network.class, - VdcQueryType.GetNetworkByNameAndDataCenter, - new IdAndNameQueryParameters(dataCenterId, rawManagementNetwork.getName()), - String.format("Network: %s", rawManagementNetwork.getName())); - - managementNetworkId = managementNetwork.getId(); - } - } - return managementNetworkId; - } - - protected ManagementNetworkOnClusterOperationParameters createAddCommandParams(Cluster cluster, StoragePool dataCenter) { + private ManagementNetworkOnClusterOperationParameters createAddCommandParams(Cluster cluster, StoragePool dataCenter) { VDSGroup clusterEntity = map(cluster, map(dataCenter)); if (!(cluster.isSetErrorHandling() && cluster.getErrorHandling().isSetOnError())) { clusterEntity.setMigrateOnError(null); } - final Guid managementNetworkId = getManagementNetworkId(cluster, dataCenter.getId()); + final Guid managementNetworkId = managementNetworkFinder.getManagementNetworkId(cluster, dataCenter.getId()); return new ManagementNetworkOnClusterOperationParameters(clusterEntity, managementNetworkId); } diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendDataCenterClusterResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendDataCenterClusterResource.java index 900434f..0fcb069 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendDataCenterClusterResource.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendDataCenterClusterResource.java @@ -1,20 +1,26 @@ package org.ovirt.engine.api.restapi.resource; - - import java.util.List; + import org.ovirt.engine.api.model.Cluster; import org.ovirt.engine.core.common.businessentities.VDSGroup; +import org.ovirt.engine.core.compat.Guid; public class BackendDataCenterClusterResource extends BackendClusterResource { private BackendDataCenterClustersResource parent; + public BackendDataCenterClusterResource(BackendDataCenterClustersResource parent, String id) { super(id); this.parent = parent; } @Override + protected Guid getDataCenterId(VDSGroup cluster) { + return guid; + } + + @Override public Cluster get() { VDSGroup entity = getVdsGroup(); if (entity == null) { diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/ManagementNetworkFinder.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/ManagementNetworkFinder.java new file mode 100644 index 0000000..af778b0 --- /dev/null +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/ManagementNetworkFinder.java @@ -0,0 +1,37 @@ +package org.ovirt.engine.api.restapi.resource; + +import org.ovirt.engine.api.model.Cluster; +import org.ovirt.engine.api.model.Network; +import org.ovirt.engine.api.restapi.utils.GuidUtils; +import org.ovirt.engine.core.common.queries.IdAndNameQueryParameters; +import org.ovirt.engine.core.common.queries.VdcQueryType; +import org.ovirt.engine.core.compat.Guid; + +public class ManagementNetworkFinder { + + private final BackendResource backendResource; + + public ManagementNetworkFinder(BackendResource backendResource) { + this.backendResource = backendResource; + } + + Guid getManagementNetworkId(Cluster cluster, Guid dataCenterId) { + Guid managementNetworkId = null; + if (cluster.isSetManagementNetwork()) { + backendResource.validateParameters(cluster.getManagementNetwork(), "id|name"); + final Network rawManagementNetwork = cluster.getManagementNetwork(); + if (rawManagementNetwork.isSetId()) { + managementNetworkId = GuidUtils.asGuid(rawManagementNetwork.getId()); + } else { + final org.ovirt.engine.core.common.businessentities.network.Network managementNetwork = + backendResource.getEntity(org.ovirt.engine.core.common.businessentities.network.Network.class, + VdcQueryType.GetNetworkByNameAndDataCenter, + new IdAndNameQueryParameters(dataCenterId, rawManagementNetwork.getName()), + String.format("Network: %s", rawManagementNetwork.getName())); + + managementNetworkId = managementNetwork.getId(); + } + } + return managementNetworkId; + } +} -- To view, visit http://gerrit.ovirt.org/37749 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Id531ee5f21145386de2a32c6e412e808563e0326 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Yevgeny Zaspitsky <yzasp...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches