Sharad Mishra has uploaded a new change for review.

Change subject: api: API to tear down VM disk after backup.
......................................................................

api: API to tear down VM disk after backup.

This new API is the reverse of prepareForBackup 
http://gerrit.ovirt.org/#/c/15143/1
It instructs VDSM to unmount the block device being exposed to the VM by 
qemu-nbd.

Change-Id: Ifd3fb443932d4bb8012e54fa7189a0766d0bcbaf
Signed-off-by: Sharad Mishra <[email protected]>
---
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/TearDownBackupCommand.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/AuditLogType.java
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/TearDownBackupParameters.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/TearDownBackupVDSParameters.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/VdcBllMessages.java
M 
backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/VmDiskResource.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/BackendVmDiskResource.java
A 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/TearDownBackupVDSCommand.java
11 files changed, 188 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/74/15174/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/TearDownBackupCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/TearDownBackupCommand.java
new file mode 100644
index 0000000..7679d79
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/TearDownBackupCommand.java
@@ -0,0 +1,52 @@
+package org.ovirt.engine.core.bll;
+
+import java.util.Collections;
+import java.util.List;
+
+import org.ovirt.engine.core.bll.utils.PermissionSubject;
+import org.ovirt.engine.core.common.AuditLogType;
+import org.ovirt.engine.core.common.action.TearDownBackupParameters;
+import org.ovirt.engine.core.common.businessentities.Disk;
+import org.ovirt.engine.core.common.vdscommands.VDSCommandType;
+import org.ovirt.engine.core.dal.VdcBllMessages;
+import org.ovirt.engine.core.common.vdscommands.TearDownBackupVDSParameters;
+
+@NonTransactiveCommandAttribute
+@LockIdNameAttribute
+public class TearDownBackupCommand<T extends TearDownBackupParameters> extends 
AbstractDiskVmCommand<T> {
+
+    protected Disk disk;
+
+    public TearDownBackupCommand(T parameters) {
+        super(parameters);
+        disk = getDiskDao().get(getParameters().getDiskId());
+    }
+
+    @Override
+    protected void setActionMessageParameters() {
+        addCanDoActionMessage(VdcBllMessages.VAR__ACTION__TEARDOWN__BACKUP);
+    }
+
+    @Override
+    protected void executeCommand() {
+        runVdsCommand(VDSCommandType.TearDownBackup, new 
TearDownBackupVDSParameters(getVm().getRunOnVds().getValue(), getVm().getId(), 
disk));
+        setSucceeded(true);
+    }
+
+    @Override
+    public AuditLogType getAuditLogTypeValue() {
+        return getSucceeded() ? AuditLogType.USER_TEARDOWN_BACKUP : 
AuditLogType.USER_TEARDOWN_BACKUP_FAILED;
+    }
+
+    @Override
+    protected boolean isUserAuthorizedToRunAction() {
+        return true;
+    }
+
+    @Override
+    public List<PermissionSubject> getPermissionCheckSubjects() {
+        // Not needed for admin operations.
+        return Collections.emptyList();
+    }
+
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/AuditLogType.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/AuditLogType.java
index 9e3843d..4148210 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/AuditLogType.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/AuditLogType.java
@@ -661,9 +661,12 @@
     USER_ACCOUNT_DISABLED_OR_LOCKED(1100, 
AuditLogTimeInterval.HOUR.getValue()),
     USER_ACCOUNT_PASSWORD_EXPIRED(1101, AuditLogTimeInterval.HOUR.getValue()),
 
-    // Backup
+    // Backup & Restore
     USER_PREPARE_BACKUP(1250),
     USER_PREPARE_BACKUP_FAILED(1251),
+    USER_TEARDOWN_BACKUP(1252),
+    USER_TEARDOWN_BACKUP_FAILED(1253),
+
 
     // Providers
     PROVIDER_ADDED(1150),
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/TearDownBackupParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/TearDownBackupParameters.java
new file mode 100644
index 0000000..ddadbe2
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/TearDownBackupParameters.java
@@ -0,0 +1,30 @@
+package org.ovirt.engine.core.common.action;
+
+import javax.validation.constraints.NotNull;
+
+import org.ovirt.engine.core.compat.Guid;
+
+public class TearDownBackupParameters extends VmDiskOperationParameterBase {
+
+    private static final long serialVersionUID = 6007874805077449989L;
+
+    public TearDownBackupParameters() {
+    }
+
+    @NotNull
+    private Guid diskId;
+
+    public TearDownBackupParameters(Guid vmId, Guid diskId) {
+        super(vmId, null);
+        setDiskId(diskId);
+    }
+
+    public Guid getDiskId() {
+        return diskId;
+    }
+
+    public void setDiskId(Guid diskId) {
+        this.diskId = diskId;
+    }
+
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java
index a849d94..f4bd535 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java
@@ -212,6 +212,7 @@
     LiveMigrateVmDisks(1011, false, QuotaDependency.STORAGE),
     MoveDisks(1012, false, QuotaDependency.NONE),
     PrepareForBackup(1013, false, QuotaDependency.NONE),
+    TearDownBackup(1014, false, QuotaDependency.NONE),
     // Event Notification
     AddEventSubscription(1100, QuotaDependency.NONE),
     RemoveEventSubscription(1101, QuotaDependency.NONE),
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/TearDownBackupVDSParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/TearDownBackupVDSParameters.java
new file mode 100644
index 0000000..40b9af9
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/TearDownBackupVDSParameters.java
@@ -0,0 +1,30 @@
+package org.ovirt.engine.core.common.vdscommands;
+
+import org.ovirt.engine.core.common.businessentities.Disk;
+import org.ovirt.engine.core.compat.Guid;
+
+public class TearDownBackupVDSParameters extends VdsAndVmIDVDSParametersBase {
+
+    private Disk disk;
+
+    public TearDownBackupVDSParameters() {
+    }
+
+    public TearDownBackupVDSParameters(Guid vdsId, Guid vmId, Disk disk) {
+        super(vdsId, vmId);
+        this.disk = disk;
+    }
+
+    public Disk getDisk() {
+         return disk;
+    }
+
+    public void setDisk(Disk disk) {
+          this.disk = disk;
+    }
+
+    @Override
+    public String toString() {
+        return String.format("%s, volumeId = %s", super.toString(), 
disk.getId());
+    }
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java
index 7cf5fb4..5369bdd 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java
@@ -109,6 +109,7 @@
     HotPlugNic("org.ovirt.engine.core.vdsbroker.vdsbroker"),
     HotUnplugNic("org.ovirt.engine.core.vdsbroker.vdsbroker"),
     PrepareForBackup("org.ovirt.engine.core.vdsbroker.vdsbroker"),
+    TearDownBackup("org.ovirt.engine.core.vdsbroker.vdsbroker"),
     Snapshot("org.ovirt.engine.core.vdsbroker.vdsbroker"),
     UpdateVmInterface("org.ovirt.engine.core.vdsbroker.vdsbroker"),
     GetHardwareInfo("org.ovirt.engine.core.vdsbroker.vdsbroker"),
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/VdcBllMessages.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/VdcBllMessages.java
index 94987f2..d589905 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/VdcBllMessages.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/VdcBllMessages.java
@@ -76,6 +76,7 @@
     VAR__ACTION__ENABLE,
     VAR__ACTION__DISABLE,
     VAR__ACTION__PREPARE__FOR__BACKUP,
+    VAR__ACTION__TEARDOWN__BACKUP,
 
     // Host statuses replacements
     VAR__HOST_STATUS__UP,
diff --git 
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/VmDiskResource.java
 
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/VmDiskResource.java
index ca99dcf..adf27db 100644
--- 
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/VmDiskResource.java
+++ 
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/VmDiskResource.java
@@ -64,6 +64,13 @@
     @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON, 
MediaType.APPLICATION_X_YAML})
     public Response prepareForBackup(Action action);
 
+    @POST
+    @Formatted
+    @Actionable
+    @Path("tearDownBackup")
+    @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON, 
MediaType.APPLICATION_X_YAML})
+    public Response tearDownBackup(Action action);
+
     @PUT
     @Formatted
     @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON, 
MediaType.APPLICATION_X_YAML })
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 0214890..d0a359c 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
@@ -426,6 +426,15 @@
     headers:
       Content-Type: {value: application/xml|json, required: true}
       Correlation-Id: {value: 'any string', required: false}
+- name: /api/vms/{vm:id}/disks/{disk:id}/tearDownBackup|rel=tearDownBackup
+  request:
+    body:
+      parameterType: Action
+      signatures: []
+    urlparams: {}
+    headers:
+      Content-Type: {value: application/xml|json, required: true}
+      Correlation-Id: {value: 'any string', required: false}
 - name: /api/vms/{vm:id}/nics|rel=get
   request:
     body:
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmDiskResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmDiskResource.java
index b641591..c4a63ad 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmDiskResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmDiskResource.java
@@ -17,6 +17,7 @@
 import org.ovirt.engine.core.common.action.MoveDiskParameters;
 import org.ovirt.engine.core.common.action.MoveDisksParameters;
 import org.ovirt.engine.core.common.action.PrepareForBackupParameters;
+import org.ovirt.engine.core.common.action.TearDownBackupParameters;
 import org.ovirt.engine.core.common.action.VdcActionType;
 import org.ovirt.engine.core.common.queries.GetPermissionsForObjectParameters;
 import org.ovirt.engine.core.common.queries.IdQueryParameters;
@@ -107,6 +108,14 @@
         return doAction(VdcActionType.PrepareForBackup, params, action);
     }
 
+    @Override
+    public Response tearDownBackup(Action action) {
+        TearDownBackupParameters params =
+                new TearDownBackupParameters(((BackendVmDisksResource) 
collection).parentId,
+                        guid);
+        return doAction(VdcActionType.TearDownBackup, params, action);
+    }
+
     protected Disk getDisk() {
         return performGet(VdcQueryType.GetDiskByDiskId, new 
IdQueryParameters(guid));
     }
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/TearDownBackupVDSCommand.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/TearDownBackupVDSCommand.java
new file mode 100644
index 0000000..9e0bd19
--- /dev/null
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/TearDownBackupVDSCommand.java
@@ -0,0 +1,44 @@
+package org.ovirt.engine.core.vdsbroker.vdsbroker;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.ovirt.engine.core.common.businessentities.Disk;
+import org.ovirt.engine.core.common.businessentities.DiskImage;
+import org.ovirt.engine.core.common.vdscommands.TearDownBackupVDSParameters;
+
+public class TearDownBackupVDSCommand<P extends TearDownBackupVDSParameters> 
extends VdsBrokerCommand<P> {
+
+    protected Map<String, Object> sendInfo = new HashMap<String, Object>();
+
+    public TearDownBackupVDSCommand(P parameters) {
+        super(parameters);
+    }
+
+    @Override
+    protected void ExecuteVdsBrokerCommand() {
+        buildSendDataToVdsm();
+        ProceedProxyReturnValue();
+    }
+
+    protected void buildSendDataToVdsm() {
+        sendInfo.put("vmId", getParameters().getVmId().toString());
+        TearDownBackupVDSParameters param = getParameters();
+        Disk disk = param.getDisk();
+        sendInfo.put("drive", initDriveData(disk));
+    }
+
+    private Map<String, Object> initDriveData(Disk disk) {
+        Map<String, Object> drive = new HashMap<String, Object>();
+
+        DiskImage diskImage = (DiskImage) disk;
+        drive.put(VdsProperties.DomainId, 
diskImage.getStorageIds().get(0).toString());
+        drive.put(VdsProperties.PoolId, 
diskImage.getStoragePoolId().toString());
+        drive.put(VdsProperties.VolumeId, diskImage.getImageId().toString());
+        drive.put(VdsProperties.ImageId, diskImage.getId().toString());
+        drive.put(VdsProperties.PropagateErrors, 
disk.getPropagateErrors().toString().toLowerCase());
+
+        return drive;
+    }
+
+}


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

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

Reply via email to