Maor Lipchuk has uploaded a new change for review.

Change subject: restapi: Add API to support warning for attached Storage Domains
......................................................................

restapi: Add API to support warning for attached Storage Domains

Adding a REST API to support warning for attached Storage Domains on
attach or import of Storage Domain

Change-Id: I4b12e5ea2abea66cb950e3cdd64baaaff72a6919
Bug-Url: https://bugzilla.redhat.com/1179246
Signed-off-by: Maor Lipchuk <mlipc...@redhat.com>
---
M 
backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/StorageDomainsResource.java
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/BackendStorageDomainsResource.java
3 files changed, 52 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/49/36849/1

diff --git 
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/StorageDomainsResource.java
 
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/StorageDomainsResource.java
index d0f1934..f96362e 100644
--- 
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/StorageDomainsResource.java
+++ 
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/StorageDomainsResource.java
@@ -39,6 +39,11 @@
     @Consumes({ApiMediaType.APPLICATION_XML, ApiMediaType.APPLICATION_JSON, 
ApiMediaType.APPLICATION_X_YAML})
     public Response add(StorageDomain storageDomains);
 
+    @POST
+    @Consumes({ApiMediaType.APPLICATION_XML, ApiMediaType.APPLICATION_JSON, 
ApiMediaType.APPLICATION_X_YAML})
+    @Path("getfilterattached")
+    public Response getFilterAttached(StorageDomain storageDomain);
+
     @DELETE
     @Consumes({ApiMediaType.APPLICATION_XML, ApiMediaType.APPLICATION_JSON, 
ApiMediaType.APPLICATION_X_YAML})
     @Path("{id}")
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 ebe75f0..4668f7d 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
@@ -1589,6 +1589,22 @@
       Content-Type: {value: application/xml|json, required: true}
       Expect: {value: 201-created, required: false}
       Correlation-Id: {value: 'any string', required: false}
+- name: /storagedomains|rel=getfilterattached
+  description: Querying if the Storage Domain is already attached to a Data 
Center. If the Storage Domain is attached then the Storage Domain will be 
returned otherwise an empty Storage Domain will be returned.
+  request:
+    body:
+      parameterType: StorageDomain
+      signatures:
+      - mandatoryArguments: {storagedomain.host.id|name: 'xs:string',
+          storagedomain.id: 'xs:string', storagedomain.id: 'xs:string'}}
+        optionalArguments: {}
+        description: Perform automatic logon on the VM using the guest agent.
+    urlparams:
+      async: {context: matrix, type: 'xs:boolean', value: true|false, 
required: false}
+    headers:
+      Content-Type: {value: application/xml|json, required: true}
+      Expect: {value: 201-created, required: false}
+      Correlation-Id: {value: 'any string', required: false}
 - name: /storagedomains/{storagedomain:id}/files|rel=get
   description: get the files stored in the iso storage domain
   request:
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainsResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainsResource.java
index b7c9ff3..c1f866a 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainsResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainsResource.java
@@ -11,6 +11,7 @@
 
 import org.apache.commons.lang.StringUtils;
 import org.ovirt.engine.api.common.util.StatusUtils;
+import org.ovirt.engine.api.model.CreationStatus;
 import org.ovirt.engine.api.model.Fault;
 import org.ovirt.engine.api.model.LogicalUnit;
 import org.ovirt.engine.api.model.Storage;
@@ -42,6 +43,7 @@
 import 
org.ovirt.engine.core.common.queries.GetUnregisteredBlockStorageDomainsParameters;
 import org.ovirt.engine.core.common.queries.IdQueryParameters;
 import org.ovirt.engine.core.common.queries.NameQueryParameters;
+import 
org.ovirt.engine.core.common.queries.StorageDomainsAndStoragePoolIdQueryParameters;
 import 
org.ovirt.engine.core.common.queries.StorageServerConnectionQueryParametersBase;
 import org.ovirt.engine.core.common.queries.VdcQueryParametersBase;
 import org.ovirt.engine.core.common.queries.VdcQueryType;
@@ -250,6 +252,35 @@
     }
 
     @Override
+    public Response getFilterAttached(StorageDomain storageDomain) {
+        validateParameters(storageDomain, "id", "host.id|name");
+        validateEnums(StorageDomain.class, storageDomain);
+        Guid hostId = getHostId(storageDomain);
+        org.ovirt.engine.core.common.businessentities.StorageDomain 
storageDomainToAttach =
+                
getEntity(org.ovirt.engine.core.common.businessentities.StorageDomain.class,
+                        VdcQueryType.GetStorageDomainById,
+                        new IdQueryParameters(asGuid(storageDomain.getId())),
+                        "storage_domain");
+        StorageDomainsAndStoragePoolIdQueryParameters parameters =
+                new 
StorageDomainsAndStoragePoolIdQueryParameters(storageDomainToAttach, null, 
hostId);
+        parameters.setCheckStoragePoolStatus(false);
+        List<StorageDomainStatic> attachedStorageDomains =
+                getEntity(List.class,
+                        
VdcQueryType.GetStorageDomainsWithAttachedStoragePoolGuid,
+                        parameters,
+                        "GetStorageDomainsWithAttachedStoragePoolGuid", true);
+        StorageDomain returnedStorageDomain = new StorageDomain();
+        if (!attachedStorageDomains.isEmpty()) {
+            org.ovirt.engine.core.common.businessentities.StorageDomain sd =
+                    new 
org.ovirt.engine.core.common.businessentities.StorageDomain();
+            sd.setStorageStaticData(attachedStorageDomains.get(0));
+            returnedStorageDomain = map(sd, new StorageDomain());
+            
returnedStorageDomain.setStatus(StatusUtils.create(CreationStatus.COMPLETE));
+        }
+        return Response.ok().entity(returnedStorageDomain).build();
+    }
+
+    @Override
     public Response add(StorageDomain storageDomain) {
         validateParameters(storageDomain, "host.id|name", "type", "storage");
         Storage storageConnectionFromUser = storageDomain.getStorage();


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I4b12e5ea2abea66cb950e3cdd64baaaff72a6919
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Maor Lipchuk <mlipc...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to