Martin Betak has uploaded a new change for review.
Change subject: restapi: Add Vm power-down options
......................................................................
restapi: Add Vm power-down options
Added new complex type to the VM and Template entities representing
various power down options used during shutdown/reboot.
<vm>
<power_down>
<force>true|false</force>
<timeout>[seconds]</timeout>
<user_delay>[seconds]</timeout>
</power_down>
</vm>
timeout and user_delay are optional overrides of global settings so to
set make VM use the global value set them to null (represented as -1 in
the API)
Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=751854
Change-Id: I1249f97c77a979466d4295f83bfb72f27ff630e3
Signed-off-by: Martin Betak <[email protected]>
---
M
backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
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/utils/FeaturesHelper.java
M
backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/TemplateMapper.java
M
backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmMapper.java
M
backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/TemplateMapperTest.java
M
backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/VmMapperTest.java
7 files changed, 96 insertions(+), 0 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/47/27047/1
diff --git
a/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
b/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
index 87d5ca1..d1dfc1d 100644
---
a/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
+++
b/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
@@ -2406,6 +2406,7 @@
<!-- also rel="cdroms/disks/nics/watchdogs" links, see Devices below
-->
<xs:element name="version" type="TemplateVersion" minOccurs="0"
maxOccurs="1"/>
<xs:element ref="serial_number" minOccurs="0" maxOccurs="1" />
+ <xs:element ref="power_down" minOccurs="0" maxOccurs="1" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
@@ -2708,6 +2709,16 @@
</xs:sequence>
</xs:complexType>
+ <xs:element name="power_down" type="PowerDown" />
+
+ <xs:complexType name="PowerDown">
+ <xs:sequence>
+ <xs:element name="force" type="xs:boolean" minOccurs="0" maxOccurs="1" />
+ <xs:element name="timeout" type="xs:int" minOccurs="0" maxOccurs="1" />
+ <xs:element name="user_delay" type="xs:int" minOccurs="0" maxOccurs="1"
/>
+ </xs:sequence>
+ </xs:complexType>
+
<xs:element name="vms" type="VMs"/>
<xs:element name="vm" type="VM"/>
@@ -2781,6 +2792,7 @@
<xs:element ref="watchdogs" minOccurs="0" maxOccurs="1"/>
<xs:element name="use_latest_template_version" type="xs:boolean"
minOccurs="0" maxOccurs="1"/>
<xs:element ref="serial_number" minOccurs="0" maxOccurs="1" />
+ <xs:element ref="power_down" minOccurs="0" maxOccurs="1" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
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 7e5fc87..96c2203 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
@@ -95,6 +95,9 @@
vm.serial_number.policy: xs:string
vm.serial_number.value: xs:string
vm.bios.boot_menu.enabled: xs:boolean
+ vm.power_down.forced: xs:boolean
+ vm.power_down.timeout: xs:int
+ vm.power_dowm.user_delay: xs:int
description: update the virtual machine in the system for the given
virtual machine id with the values specified in the request
urlparams: {}
headers:
@@ -175,6 +178,9 @@
vm.serial_number.policy: xs:string
vm.serial_number.value: xs:string
vm.bios.boot_menu.enabled: xs:boolean
+ vm.power_down.forced: xs:boolean
+ vm.power_down.timeout: xs:int
+ vm.power_dowm.user_delay: xs:int
description: add a virtual machine to the system from scratch
# the following signature is for clone VM from a Snapshot - requires the
Snapshot ID
- mandatoryArguments: {vm.name: 'xs:string', vm.template.id|name:
'xs:string', vm.cluster.id|name: 'xs:string',
@@ -223,6 +229,9 @@
vm.serial_number.policy: xs:string
vm.serial_number.value: xs:string
vm.bios.boot_menu.enabled: xs:boolean
+ vm.power_down.forced: xs:boolean
+ vm.power_down.timeout: xs:int
+ vm.power_dowm.user_delay: xs:int
description: add a virtual machine to the system by cloning from a
snapshot
# the following signature is for adding VM from a configuration -
requires the configuration type and the configuration data
- mandatoryArguments: {vm.initialization.configuration.type:
'xs:string', vm.initialization.configuration.data: 'xs:string'}
@@ -273,6 +282,9 @@
vm.serial_number.policy: xs:string
vm.serial_number.value: xs:string
vm.bios.boot_menu.enabled: xs:boolean
+ vm.power_down.forced: xs:boolean
+ vm.power_down.timeout: xs:int
+ vm.power_dowm.user_delay: xs:int
description: add a virtual machine to the system from a configuration
- requires the configuration type and the configuration data
urlparams: {}
headers:
@@ -3499,6 +3511,9 @@
template.serial_number.policy: xs:string
template.serial_number.value: xs:string
template.bios.boot_menu.enabled: xs:boolean
+ template.power_down.forced: xs:boolean
+ template.power_down.timeout: xs:int
+ template.power_dowm.user_delay: xs:int
description: update the specified template in the system
urlparams: {}
headers:
@@ -3555,6 +3570,9 @@
template.serial_number.policy: xs:string
template.serial_number.value: xs:string
template.bios.boot_menu.enabled: xs:boolean
+ template.power_down.forced: xs:boolean
+ template.power_down.timeout: xs:int
+ template.power_dowm.user_delay: xs:int
description: add a new template to the system
urlparams: {}
headers:
diff --git
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/utils/FeaturesHelper.java
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/utils/FeaturesHelper.java
index adb04af..a95556b 100644
---
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/utils/FeaturesHelper.java
+++
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/utils/FeaturesHelper.java
@@ -81,10 +81,18 @@
}
if (VersionUtils.greaterOrEqual(version,
BackendCapabilitiesResource.VERSION_3_5)) {
addBookmarksFeature(features);
+ addPowerDownOptionsFeatuer(features);
}
return features;
}
+ private void addPowerDownOptionsFeatuer(Features features) {
+ Feature feature = new Feature();
+ feature.setName("VM PowerDown Options");
+ feature.setDescription("Ability to specify force, timeout and
user-delay options for VM shutdown/reboot");
+ features.getFeature().add(feature);
+ }
+
private void addRebootFeature(Features features) {
Feature feature = new Feature();
feature.setName("Reboot VM");
diff --git
a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/TemplateMapper.java
b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/TemplateMapper.java
index e7b791a..14fc9c3 100644
---
a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/TemplateMapper.java
+++
b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/TemplateMapper.java
@@ -14,6 +14,7 @@
import org.ovirt.engine.api.model.Domain;
import org.ovirt.engine.api.model.HighAvailability;
import org.ovirt.engine.api.model.OperatingSystem;
+import org.ovirt.engine.api.model.PowerDown;
import org.ovirt.engine.api.model.Template;
import org.ovirt.engine.api.model.TemplateStatus;
import org.ovirt.engine.api.model.TemplateVersion;
@@ -187,6 +188,18 @@
SerialNumberMapper.copySerialNumber(model.getSerialNumber(),
entity);
}
+ if (model.isSetPowerDown()) {
+ if (model.getPowerDown().isSetForce()) {
+ entity.setPowerDownForced(model.getPowerDown().isForce());
+ }
+ if (model.getPowerDown().isSetTimeout()) {
+
entity.setGracefulTimeout(IntegerMapper.mapMinusOneToNull(model.getPowerDown().getTimeout()));
+ }
+ if (model.getPowerDown().isSetUserDelay()) {
+
entity.setUserDelay(IntegerMapper.mapMinusOneToNull(model.getPowerDown().getUserDelay()));
+ }
+ }
+
return entity;
}
@@ -310,6 +323,18 @@
if (model.isSetSerialNumber()) {
SerialNumberMapper.copySerialNumber(model.getSerialNumber(),
staticVm);
}
+
+ if (model.isSetPowerDown()) {
+ if (model.getPowerDown().isSetForce()) {
+ staticVm.setPowerDownForced(model.getPowerDown().isForce());
+ }
+ if (model.getPowerDown().isSetTimeout()) {
+
staticVm.setGracefulTimeout(IntegerMapper.mapMinusOneToNull(model.getPowerDown().getTimeout()));
+ }
+ if (model.getPowerDown().isSetUserDelay()) {
+
staticVm.setUserDelay(IntegerMapper.mapMinusOneToNull(model.getPowerDown().getUserDelay()));
+ }
+ }
return staticVm;
}
@@ -418,6 +443,11 @@
model.setSerialNumber(SerialNumberMapper.map(entity, null));
}
+ model.setPowerDown(new PowerDown());
+ model.getPowerDown().setForce(entity.isPowerDownForced());
+
model.getPowerDown().setTimeout(IntegerMapper.mapNullToMinusOne(entity.getGracefulTimeout()));
+
model.getPowerDown().setUserDelay(IntegerMapper.mapNullToMinusOne(entity.getUserDelay()));
+
return model;
}
diff --git
a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmMapper.java
b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmMapper.java
index 5f75b41..720850d 100644
---
a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmMapper.java
+++
b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmMapper.java
@@ -44,6 +44,7 @@
import org.ovirt.engine.api.model.OperatingSystem;
import org.ovirt.engine.api.model.OsType;
import org.ovirt.engine.api.model.Payload;
+import org.ovirt.engine.api.model.PowerDown;
import org.ovirt.engine.api.model.Quota;
import org.ovirt.engine.api.model.Session;
import org.ovirt.engine.api.model.Sessions;
@@ -128,6 +129,9 @@
staticVm.setVmInit(entity.getVmInit());
staticVm.setSerialNumberPolicy(entity.getSerialNumberPolicy());
staticVm.setCustomSerialNumber(entity.getCustomSerialNumber());
+ staticVm.setPowerDownForced(entity.isPowerDownForced());
+ staticVm.setGracefulTimeout(entity.getGracefulTimeout());
+ staticVm.setUserDelay(entity.getUserDelay());
return staticVm;
}
@@ -314,6 +318,18 @@
if (vm.isSetSerialNumber()) {
SerialNumberMapper.copySerialNumber(vm.getSerialNumber(),
staticVm);
+ }
+
+ if (vm.isSetPowerDown()) {
+ if (vm.getPowerDown().isSetForce()) {
+ staticVm.setPowerDownForced(vm.getPowerDown().isForce());
+ }
+ if (vm.getPowerDown().isSetTimeout()) {
+
staticVm.setGracefulTimeout(IntegerMapper.mapMinusOneToNull(vm.getPowerDown().getTimeout()));
+ }
+ if (vm.getPowerDown().isSetUserDelay()) {
+
staticVm.setUserDelay(IntegerMapper.mapMinusOneToNull(vm.getPowerDown().getUserDelay()));
+ }
}
return staticVm;
@@ -553,6 +569,12 @@
if (entity.getSerialNumberPolicy() != null) {
model.setSerialNumber(SerialNumberMapper.map(entity.getStaticData(), null));
}
+
+ model.setPowerDown(new PowerDown());
+ model.getPowerDown().setForce(entity.isPowerDownForced());
+
model.getPowerDown().setTimeout(IntegerMapper.mapNullToMinusOne(entity.getGracefulTimeout()));
+
model.getPowerDown().setUserDelay(IntegerMapper.mapNullToMinusOne(entity.getUserDelay()));
+
return model;
}
diff --git
a/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/TemplateMapperTest.java
b/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/TemplateMapperTest.java
index 8bde853..02240cf 100644
---
a/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/TemplateMapperTest.java
+++
b/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/TemplateMapperTest.java
@@ -86,5 +86,8 @@
assertEquals(model.getVersion().getBaseTemplate().getId(),
transform.getVersion().getBaseTemplate().getId());
assertEquals(model.getSerialNumber().getPolicy(),
transform.getSerialNumber().getPolicy());
assertEquals(model.getSerialNumber().getValue(),
transform.getSerialNumber().getValue());
+ assertEquals(model.getPowerDown().isForce(),
transform.getPowerDown().isForce());
+ assertEquals(model.getPowerDown().getTimeout(),
transform.getPowerDown().getTimeout());
+ assertEquals(model.getPowerDown().getUserDelay(),
transform.getPowerDown().getUserDelay());
}
}
diff --git
a/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/VmMapperTest.java
b/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/VmMapperTest.java
index a63e2a4..52e627e 100644
---
a/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/VmMapperTest.java
+++
b/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/VmMapperTest.java
@@ -147,6 +147,9 @@
assertEquals(model.getMigrationDowntime(),
transform.getMigrationDowntime());
assertEquals(model.getSerialNumber().getPolicy(),
transform.getSerialNumber().getPolicy());
assertEquals(model.getSerialNumber().getValue(),
transform.getSerialNumber().getValue());
+ assertEquals(model.getPowerDown().isForce(),
transform.getPowerDown().isForce());
+ assertEquals(model.getPowerDown().getTimeout(),
transform.getPowerDown().getTimeout());
+ assertEquals(model.getPowerDown().getUserDelay(),
transform.getPowerDown().getUserDelay());
}
@Test
--
To view, visit http://gerrit.ovirt.org/27047
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I1249f97c77a979466d4295f83bfb72f27ff630e3
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