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

Reply via email to