Martin Betak has uploaded a new change for review.

Change subject: backend: Add RebootVmCommand
......................................................................

backend: Add RebootVmCommand

Added RebootVmCommand and corresponding RebootVmVDSCommand
that utilizes the new boolean parameter of VDSM shutdown verb.

Note: Currently, the VDSM will only attempt to perform reboot using
guest-agent.

Change-Id: I0693943c01e204da877268c02957f3b936cf3fa2
Signed-off-by: Martin Betak <[email protected]>
---
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RebootVmCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/FeatureSupported.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/VdcActionUtils.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/ConfigurationValues.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java
M 
backend/manager/modules/dal/src/main/resources/bundles/ExecutionMessages.properties
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java
A 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/RebootVmVDSCommand.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java
A packaging/dbscripts/upgrade/03_04_0320_add_reboot_command.sql
M packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql
15 files changed, 110 insertions(+), 16 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/44/22744/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RebootVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RebootVmCommand.java
new file mode 100644
index 0000000..667afd6
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RebootVmCommand.java
@@ -0,0 +1,33 @@
+package org.ovirt.engine.core.bll;
+
+import org.ovirt.engine.core.common.action.VmOperationParameterBase;
+import org.ovirt.engine.core.common.errors.VdcBllMessages;
+import org.ovirt.engine.core.common.vdscommands.VDSCommandType;
+import org.ovirt.engine.core.common.vdscommands.VDSReturnValue;
+import org.ovirt.engine.core.common.vdscommands.VdsAndVmIDVDSParametersBase;
+import org.ovirt.engine.core.utils.log.Log;
+import org.ovirt.engine.core.utils.log.LogFactory;
+
+@NonTransactiveCommandAttribute(forceCompensation = true)
+public class RebootVmCommand<T extends VmOperationParameterBase> extends 
VmOperationCommandBase<T> {
+    private static final Log log = LogFactory.getLog(RebootVmCommand.class);
+
+    public RebootVmCommand(T parameters) {
+        super(parameters);
+    }
+
+    @Override
+    protected void setActionMessageParameters() {
+        super.setActionMessageParameters();
+        addCanDoActionMessage(VdcBllMessages.VAR__ACTION__RESTART);
+        addCanDoActionMessage(VdcBllMessages.VAR__TYPE__VM);
+    }
+
+    @Override
+    protected void perform() {
+        log.infoFormat("Sending reboot command for VM {0}.", 
getVm().getName());
+        final VDSReturnValue returnValue = 
runVdsCommand(VDSCommandType.RebootVm, new 
VdsAndVmIDVDSParametersBase(getVdsId(), getVmId()));
+        setActionReturnValue(returnValue.getReturnValue());
+        setSucceeded(returnValue.getSucceeded());
+    }
+}
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java
index ec7a2b7..55b5a04 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java
@@ -114,6 +114,7 @@
         COMMANDS_ALLOWED_ON_EXTERNAL_VMS.add(VdcActionType.StopVm);
         COMMANDS_ALLOWED_ON_EXTERNAL_VMS.add(VdcActionType.ShutdownVm);
         COMMANDS_ALLOWED_ON_EXTERNAL_VMS.add(VdcActionType.RemoveVm);
+        COMMANDS_ALLOWED_ON_EXTERNAL_VMS.add(VdcActionType.RebootVm);
         COMMANDS_ALLOWED_ON_HOSTED_ENGINE.add(VdcActionType.MigrateVm);
         COMMANDS_ALLOWED_ON_HOSTED_ENGINE.add(VdcActionType.MigrateVmToServer);
         COMMANDS_ALLOWED_ON_HOSTED_ENGINE.add(VdcActionType.InternalMigrateVm);
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/FeatureSupported.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/FeatureSupported.java
index 5816e5e..c3c5b6a 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/FeatureSupported.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/FeatureSupported.java
@@ -195,4 +195,13 @@
     public static boolean hotPlugDiskSnapshot(Version version) {
         return supportedInConfig(ConfigValues.HotPlugDiskSnapshotSupported, 
version);
     }
+
+    /**
+     * @param version
+     *            Compatibility version to check for.
+     * @return <code>true</code> if VM reboot is supported for the given 
version
+     */
+    public static boolean reboot(Version version) {
+        return supportedInConfig(ConfigValues.RebootSupported, version);
+    }
 }
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/VdcActionUtils.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/VdcActionUtils.java
index ca0c942..f6fe98e 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/VdcActionUtils.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/VdcActionUtils.java
@@ -106,7 +106,7 @@
                         VdcActionType.ExportVm, VdcActionType.MoveVm, 
VdcActionType.ImportVm, VdcActionType.ChangeDisk,
                         VdcActionType.AddVmInterface, 
VdcActionType.UpdateVmInterface,
                         VdcActionType.RemoveVmInterface, 
VdcActionType.CancelMigrateVm,
-                        VdcActionType.ExtendImageSize));
+                        VdcActionType.ExtendImageSize, 
VdcActionType.RebootVm));
         vmMatrix.put(
                 VMStatus.Up,
                 EnumSet.of(VdcActionType.RunVm,
@@ -122,7 +122,7 @@
                         VdcActionType.ChangeDisk, VdcActionType.AddVmInterface,
                         VdcActionType.UpdateVmInterface,
                         VdcActionType.RemoveVmInterface, 
VdcActionType.CancelMigrateVm,
-                        VdcActionType.ExtendImageSize));
+                        VdcActionType.ExtendImageSize, 
VdcActionType.RebootVm));
         vmMatrix.put(
                 VMStatus.PoweringUp,
                 EnumSet.of(VdcActionType.HibernateVm, VdcActionType.RunVm,
@@ -138,7 +138,7 @@
                         VdcActionType.ExportVm, VdcActionType.MoveVm, 
VdcActionType.ImportVm, VdcActionType.ChangeDisk,
                         VdcActionType.AddVmInterface, 
VdcActionType.UpdateVmInterface,
                         VdcActionType.RemoveVmInterface, 
VdcActionType.CancelMigrateVm,
-                        VdcActionType.ExtendImageSize));
+                        VdcActionType.ExtendImageSize, 
VdcActionType.RebootVm));
         vmMatrix.put(
                 VMStatus.MigratingFrom,
                 EnumSet.of(VdcActionType.RunVm,
@@ -147,21 +147,21 @@
                         VdcActionType.MoveVm, VdcActionType.ImportVm, 
VdcActionType.ChangeDisk,
                         VdcActionType.AddVmInterface, 
VdcActionType.UpdateVmInterface,
                         VdcActionType.RemoveVmInterface, 
VdcActionType.CreateAllSnapshotsFromVm,
-                        VdcActionType.ExtendImageSize));
+                        VdcActionType.ExtendImageSize, 
VdcActionType.RebootVm));
         vmMatrix.put(
                 VMStatus.Suspended,
                 EnumSet.of(VdcActionType.HibernateVm, 
VdcActionType.AddVmTemplate,
                         VdcActionType.RunVmOnce, VdcActionType.MigrateVm, 
VdcActionType.ExportVm, VdcActionType.MoveVm,
                         VdcActionType.ImportVm, VdcActionType.ChangeDisk, 
VdcActionType.RemoveVm,
                         VdcActionType.AddVmInterface, 
VdcActionType.UpdateVmInterface,
-                        VdcActionType.RemoveVmInterface, 
VdcActionType.CancelMigrateVm));
+                        VdcActionType.RemoveVmInterface, 
VdcActionType.CancelMigrateVm, VdcActionType.RebootVm));
         vmMatrix.put(
                 VMStatus.Paused,
                 EnumSet.of(VdcActionType.RemoveVm, VdcActionType.HibernateVm,
                         VdcActionType.AddVmTemplate, VdcActionType.RunVmOnce, 
VdcActionType.ExportVm,
                         VdcActionType.MoveVm, VdcActionType.ImportVm,
                         VdcActionType.AddVmInterface, 
VdcActionType.UpdateVmInterface,
-                        VdcActionType.RemoveVmInterface, 
VdcActionType.CancelMigrateVm));
+                        VdcActionType.RemoveVmInterface, 
VdcActionType.CancelMigrateVm, VdcActionType.RebootVm));
         vmMatrix.put(
                 VMStatus.SavingState,
                 EnumSet.of(VdcActionType.RunVm,
@@ -171,7 +171,7 @@
                         VdcActionType.ImportVm, VdcActionType.ChangeDisk,
                         VdcActionType.AddVmInterface, 
VdcActionType.UpdateVmInterface,
                         VdcActionType.RemoveVmInterface, 
VdcActionType.CancelMigrateVm,
-                        VdcActionType.ExtendImageSize));
+                        VdcActionType.ExtendImageSize, 
VdcActionType.RebootVm));
         vmMatrix.put(
                 VMStatus.PreparingForHibernate,
                 EnumSet.of(VdcActionType.RunVm,
@@ -181,7 +181,7 @@
                         VdcActionType.ImportVm, VdcActionType.ChangeDisk,
                         VdcActionType.AddVmInterface, 
VdcActionType.UpdateVmInterface,
                         VdcActionType.RemoveVmInterface, 
VdcActionType.CancelMigrateVm,
-                        VdcActionType.ExtendImageSize));
+                        VdcActionType.ExtendImageSize, 
VdcActionType.RebootVm));
         vmMatrix.put(
                 VMStatus.RestoringState,
                 EnumSet.of(VdcActionType.RunVm,
@@ -190,13 +190,14 @@
                         VdcActionType.AddVmTemplate, VdcActionType.ExportVm, 
VdcActionType.MoveVm,
                         VdcActionType.ImportVm, VdcActionType.ChangeDisk,
                         VdcActionType.AddVmInterface, 
VdcActionType.UpdateVmInterface,
-                        VdcActionType.RemoveVmInterface, 
VdcActionType.CancelMigrateVm, VdcActionType.ExtendImageSize));
+                        VdcActionType.RemoveVmInterface, 
VdcActionType.CancelMigrateVm, VdcActionType.ExtendImageSize,
+                        VdcActionType.RebootVm));
 
         vmMatrix.put(
                 VMStatus.Down,
                 EnumSet.of(VdcActionType.StopVm, VdcActionType.ShutdownVm,
                         VdcActionType.HibernateVm, VdcActionType.MigrateVm, 
VdcActionType.ChangeDisk,
-                        VdcActionType.CancelMigrateVm));
+                        VdcActionType.CancelMigrateVm, 
VdcActionType.RebootVm));
         vmMatrix.put(
                 VMStatus.ImageIllegal,
                 EnumSet.of(VdcActionType.RunVm,
@@ -215,7 +216,8 @@
                         VdcActionType.CreateAllSnapshotsFromVm,
                         VdcActionType.RemoveVmInterface,
                         VdcActionType.CancelMigrateVm,
-                        VdcActionType.ExtendImageSize));
+                        VdcActionType.ExtendImageSize,
+                        VdcActionType.RebootVm));
         vmMatrix.put(
                 VMStatus.ImageLocked,
                 EnumSet.of(VdcActionType.RunVm,
@@ -224,7 +226,8 @@
                         VdcActionType.AddVmTemplate, VdcActionType.ExportVm, 
VdcActionType.MoveVm,
                         VdcActionType.ImportVm, VdcActionType.ChangeDisk, 
VdcActionType.CreateAllSnapshotsFromVm,
                         VdcActionType.AddVmInterface, 
VdcActionType.UpdateVmInterface,
-                        VdcActionType.RemoveVmInterface, 
VdcActionType.CancelMigrateVm, VdcActionType.ExtendImageSize));
+                        VdcActionType.RemoveVmInterface, 
VdcActionType.CancelMigrateVm, VdcActionType.ExtendImageSize,
+                        VdcActionType.RebootVm));
         vmMatrix.put(
                 VMStatus.NotResponding,
                 EnumSet.of(VdcActionType.RunVm,
@@ -232,7 +235,8 @@
                         VdcActionType.RemoveVm, VdcActionType.AddVmTemplate, 
VdcActionType.ExportVm,
                         VdcActionType.MoveVm, VdcActionType.ImportVm, 
VdcActionType.ChangeDisk,
                         VdcActionType.AddVmInterface, 
VdcActionType.UpdateVmInterface,
-                        VdcActionType.RemoveVmInterface, 
VdcActionType.CancelMigrateVm, VdcActionType.ExtendImageSize));
+                        VdcActionType.RemoveVmInterface, 
VdcActionType.CancelMigrateVm, VdcActionType.ExtendImageSize,
+                        VdcActionType.RebootVm));
 
         vmMatrix.put(
                 VMStatus.Unassigned,
@@ -242,7 +246,8 @@
                         VdcActionType.AddVmTemplate, VdcActionType.ExportVm, 
VdcActionType.MoveVm,
                         VdcActionType.ImportVm, VdcActionType.ChangeDisk, 
VdcActionType.CreateAllSnapshotsFromVm,
                         VdcActionType.AddVmInterface, 
VdcActionType.UpdateVmInterface,
-                        VdcActionType.RemoveVmInterface, 
VdcActionType.CancelMigrateVm, VdcActionType.ExtendImageSize));
+                        VdcActionType.RemoveVmInterface, 
VdcActionType.CancelMigrateVm, VdcActionType.ExtendImageSize,
+                        VdcActionType.RebootVm));
         vmMatrix.put(
                 VMStatus.Unknown,
                 EnumSet.of(VdcActionType.RunVm,
@@ -251,7 +256,8 @@
                         VdcActionType.AddVmTemplate, VdcActionType.ExportVm, 
VdcActionType.MoveVm,
                         VdcActionType.ImportVm, VdcActionType.ChangeDisk, 
VdcActionType.CreateAllSnapshotsFromVm,
                         VdcActionType.AddVmInterface, 
VdcActionType.UpdateVmInterface,
-                        VdcActionType.RemoveVmInterface, 
VdcActionType.CancelMigrateVm, VdcActionType.ExtendImageSize));
+                        VdcActionType.RemoveVmInterface, 
VdcActionType.CancelMigrateVm, VdcActionType.ExtendImageSize,
+                        VdcActionType.RebootVm));
         _matrix.put(VM.class, vmMatrix);
 
         Map<Enum<?>, Set<VdcActionType>> vmTemplateMatrix = new 
HashMap<Enum<?>, Set<VdcActionType>>();
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 e755a4d..4037574 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
@@ -12,6 +12,7 @@
     AddVmFromScratch(3, ActionGroup.CREATE_VM, QuotaDependency.BOTH),
     RemoveVm(4, ActionGroup.DELETE_VM, QuotaDependency.STORAGE),
     UpdateVm(5, ActionGroup.EDIT_VM_PROPERTIES, QuotaDependency.VDS_GROUP),
+    RebootVm(6, ActionGroup.VM_BASIC_OPERATIONS, QuotaDependency.NONE),
     StopVm(7, ActionGroup.VM_BASIC_OPERATIONS, QuotaDependency.BOTH),
     ShutdownVm(8, ActionGroup.VM_BASIC_OPERATIONS, QuotaDependency.VDS_GROUP),
     ChangeDisk(9, ActionGroup.CHANGE_VM_CD, QuotaDependency.NONE),
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java
index 2e30bfdf..e78fdfc 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java
@@ -1570,5 +1570,9 @@
     @DefaultValueAttribute("10")
     MaxNumOfTriesToRunFailedAutoStartVm,
 
+    @TypeConverterAttribute(Boolean.class)
+    @DefaultValueAttribute("false")
+    RebootSupported,
+
     Invalid;
 }
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/ConfigurationValues.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/ConfigurationValues.java
index a3a239a..255eae5 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/ConfigurationValues.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/ConfigurationValues.java
@@ -110,7 +110,8 @@
     DefaultWindowsTimeZone,
     SpeedOptimizationSchedulingThreshold,
     SchedulerAllowOverBooking,
-    SchedulerOverBookingThreshold;
+    SchedulerOverBookingThreshold,
+    RebootSupported;
 
     public static enum ConfigAuthType {
         Admin,
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 27b7ab0..8648cab 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
@@ -8,6 +8,7 @@
     GetStats("org.ovirt.engine.core.vdsbroker.vdsbroker"),
     CreateVm("org.ovirt.engine.core.vdsbroker"),
     DestroyVm("org.ovirt.engine.core.vdsbroker"),
+    RebootVm("org.ovirt.engine.core.vdsbroker.vdsbroker"),
     Pause("org.ovirt.engine.core.vdsbroker.vdsbroker"),
     Hibernate("org.ovirt.engine.core.vdsbroker"),
     Resume("org.ovirt.engine.core.vdsbroker"),
diff --git 
a/backend/manager/modules/dal/src/main/resources/bundles/ExecutionMessages.properties
 
b/backend/manager/modules/dal/src/main/resources/bundles/ExecutionMessages.properties
index 4066f8f..4c2e1b8 100644
--- 
a/backend/manager/modules/dal/src/main/resources/bundles/ExecutionMessages.properties
+++ 
b/backend/manager/modules/dal/src/main/resources/bundles/ExecutionMessages.properties
@@ -7,6 +7,7 @@
 job.UpdateVm=Editing VM ${VM} properties
 job.StopVm=Stopping VM ${VM}
 job.ShutdownVm=Shutting down VM ${VM}
+job.RebootVm=Rebooting VM ${VM}
 job.HibernateVm=Performing Hibernate action on VM ${VM}
 job.UpdateWatchdog=Updating watchdog on VM ${VM}
 job.AddWatchdog=Adding watchdog to VM ${VM}
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java
index 8fa530d..3fa9d52 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java
@@ -28,6 +28,8 @@
 
     StatusOnlyReturnForXmlRpc shutdown(String vmId, String timeout, String 
message);
 
+    StatusOnlyReturnForXmlRpc shutdown(String vmId, String timeout, String 
message, boolean reboot);
+
     OneVmReturnForXmlRpc pause(String vmId);
 
     StatusOnlyReturnForXmlRpc hibernate(String vmId, String hiberVolHandle);
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/RebootVmVDSCommand.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/RebootVmVDSCommand.java
new file mode 100644
index 0000000..50d5d52
--- /dev/null
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/RebootVmVDSCommand.java
@@ -0,0 +1,20 @@
+package org.ovirt.engine.core.vdsbroker.vdsbroker;
+
+import org.ovirt.engine.core.common.config.Config;
+import org.ovirt.engine.core.common.config.ConfigValues;
+import org.ovirt.engine.core.common.vdscommands.VdsAndVmIDVDSParametersBase;
+
+public class RebootVmVDSCommand<P extends VdsAndVmIDVDSParametersBase> extends 
VdsBrokerCommand<P> {
+
+    public RebootVmVDSCommand(P parameters) {
+        super(parameters);
+    }
+
+    @Override
+    protected void executeVdsBrokerCommand() {
+        final Integer timeout = 
Config.getValue(ConfigValues.VmGracefulShutdownTimeout);
+        final String message = 
Config.getValue(ConfigValues.VmGracefulShutdownMessage);
+        status = getBroker().shutdown(getParameters().getVmId().toString(), 
timeout.toString(), message, true);
+        proceedProxyReturnValue();
+    }
+}
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java
index 0cd2d0f..fb37e79 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java
@@ -10,6 +10,8 @@
 
     public Map<String, Object> shutdown(String vmId, String timeout, String 
message);
 
+    public Map<String, Object> shutdown(String vmId, String timeout, String 
message, boolean reboot);
+
     public Map<String, Object> pause(String vmId);
 
     public Map<String, Object> hibernate(String vmId, String hiberVolHandle);
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java
index bc4ad53..d826685 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java
@@ -75,6 +75,17 @@
     }
 
     @Override
+    public StatusOnlyReturnForXmlRpc shutdown(String vmId, String timeout, 
String message, boolean reboot) {
+        try {
+            Map<String, Object> xmlRpcReturnValue = vdsServer.shutdown(vmId, 
timeout, message, reboot);
+            StatusOnlyReturnForXmlRpc wrapper = new 
StatusOnlyReturnForXmlRpc(xmlRpcReturnValue);
+            return wrapper;
+        } catch (UndeclaredThrowableException ute) {
+            throw new XmlRpcRunTimeException(ute);
+        }
+    }
+
+    @Override
     public OneVmReturnForXmlRpc pause(String vmId) {
         try {
             Map<String, Object> xmlRpcReturnValue = vdsServer.pause(vmId);
diff --git a/packaging/dbscripts/upgrade/03_04_0320_add_reboot_command.sql 
b/packaging/dbscripts/upgrade/03_04_0320_add_reboot_command.sql
new file mode 100644
index 0000000..494e89c
--- /dev/null
+++ b/packaging/dbscripts/upgrade/03_04_0320_add_reboot_command.sql
@@ -0,0 +1 @@
+insert into action_version_map values (6, '3.4', '*');
diff --git a/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql 
b/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql
index eea7126..9ccf343 100644
--- a/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql
+++ b/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql
@@ -228,6 +228,7 @@
 select fn_db_add_config_value('HotPlugDiskSnapshotSupported','false','3.0');
 select fn_db_add_config_value('HotPlugDiskSnapshotSupported','false','3.1');
 select fn_db_add_config_value('HotPlugDiskSnapshotSupported','false','3.2');
+select fn_db_add_config_value('RebootSupported','true','3.4');
 
 -- by default use no proxy
 select fn_db_add_config_value('SpiceProxyDefault','','general');


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

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

Reply via email to