Frank Kobzik has uploaded a new change for review.

Change subject: restapi: RFE: allow to define deletion protection per vm
......................................................................

restapi: RFE: allow to define deletion protection per vm

This patch introduces protection from unwanted deletion of VMs/Templates.

In restapi it affects
 - add/update operations on vm/template have boolean "prevent_deletion"
   flag

Change-Id: Ife391e3ac09c45c9f35b34ff75de44d92bebee5d
Signed-off-by: Frantisek Kobzik <fkob...@redhat.com>
Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=871371
---
M 
backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
M 
backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata_v-3.1.yaml
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
6 files changed, 20 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/08/9408/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 a6a2b48..c15122e 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
@@ -1775,6 +1775,7 @@
           <xs:element name="high_availability" type="HighAvailability" 
minOccurs="0"/>
           <xs:element name="display" type="Display" minOccurs="0" 
maxOccurs="1"/>
           <xs:element name="stateless" type="xs:boolean" minOccurs="0"/>
+          <xs:element name="prevent_deletion" type="xs:boolean" minOccurs="0"/>
           <xs:element name="timezone" type="xs:string" minOccurs="0" 
maxOccurs="1"/>
           <xs:element ref="domain" minOccurs="0" maxOccurs="1"/>
           <xs:element ref="usb" minOccurs="0" maxOccurs="1"/>
@@ -1962,6 +1963,7 @@
           <xs:element name="creation_time" type="xs:dateTime" minOccurs="0"/>
           <xs:element name="origin" type="xs:string" minOccurs="0"/>
           <xs:element name="stateless" type="xs:boolean" minOccurs="0"/>
+          <xs:element name="prevent_deletion" type="xs:boolean" minOccurs="0"/>
           <xs:element name="timezone" type="xs:string" minOccurs="0" 
maxOccurs="1"/>
           <xs:element ref="domain" minOccurs="0" maxOccurs="1"/>
           <xs:element name="custom_properties" type="CustomProperties" 
minOccurs="0"/>
diff --git 
a/backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata_v-3.1.yaml
 
b/backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata_v-3.1.yaml
index 91e2536..83ec46e 100644
--- 
a/backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata_v-3.1.yaml
+++ 
b/backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata_v-3.1.yaml
@@ -61,6 +61,7 @@
           vm.domain.name: xs:string
           vm.description: xs:string
           vm.stateless: xs:boolean
+         vm.prevent_deletion: xs:boolean
           vm.cpu.topology.sockets: xs:int
           vm.placement_policy.affinity: xs:string
           vm.placement_policy.host.id|name: xs:string
@@ -100,6 +101,7 @@
           vm.domain.name: xs:string
           vm.description: xs:string
           vm.stateless: xs:boolean
+          vm.prevent_deletion: xs:boolean
           vm.cpu.topology.sockets: xs:int
           vm.placement_policy.affinity: xs:string
           vm.placement_policy.host.id|name: xs:string
@@ -2003,6 +2005,7 @@
           template.domain.name: xs:string
           template.type: xs:string
           template.stateless: 'xs:boolean'
+          template.prevent_deletion: xs:boolean
           template.placement_policy.affinity: xs:string
           template.description: xs:string
           template.custom_properties.custom_property--COLLECTION: 
{custom_property.name: 'xs:string', custom_property.value: 'xs:string'}
@@ -2038,6 +2041,7 @@
           template.domain.name: xs:string
           template.type: xs:string
           template.stateless: 'xs:boolean'
+          template.prevent_deletion: xs:boolean
           template.placement_policy.affinity: xs:string
           template.description: xs:string
           template.custom_properties.custom_property--COLLECTION: 
{custom_property.name: 'xs:string', custom_property.value: 'xs:string'}
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 6dbfbb2..849c8c6 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
@@ -55,6 +55,9 @@
         if (model.isSetStateless()) {
             entity.setis_stateless(model.isStateless());
         }
+        if (model.isSetPreventDeletion()) {
+            entity.setPreventDeletion(model.isPreventDeletion());
+        }
         if (model.isSetType()) {
             VmType vmType = VmType.fromValue(model.getType());
             if (vmType != null) {
@@ -150,6 +153,9 @@
         if (model.isSetStateless()) {
             staticVm.setis_stateless(model.isStateless());
         }
+        if (model.isSetPreventDeletion()) {
+            staticVm.setPreventDeletion(model.isPreventDeletion());
+        }
         if (model.isSetType()) {
             VmType vmType = VmType.fromValue(model.getType());
             if (vmType != null) {
@@ -227,6 +233,7 @@
         model.getHighAvailability().setEnabled(entity.getauto_startup());
         model.getHighAvailability().setPriority(entity.getpriority());
         model.setStateless(entity.getis_stateless());
+        model.setPreventDeletion(entity.getPreventDeletion());
         if (entity.getvm_type() != null) {
             model.setType(VmMapper.map(entity.getvm_type(), null));
         }
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 81cd791..865ccd8 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
@@ -78,6 +78,7 @@
         staticVm.setfail_back(entity.getfail_back());
         staticVm.setauto_startup(entity.getauto_startup());
         staticVm.setis_stateless(entity.getis_stateless());
+        staticVm.setPreventDeletion(entity.getPreventDeletion());
         staticVm.setSmartcardEnabled(entity.isSmartcardEnabled());
         staticVm.setauto_startup(entity.getauto_startup());
         staticVm.setdefault_boot_sequence(entity.getdefault_boot_sequence());
@@ -161,6 +162,9 @@
         }
         if (vm.isSetStateless()) {
             staticVm.setis_stateless(vm.isStateless());
+        }
+        if (vm.isSetPreventDeletion()) {
+            staticVm.setPreventDeletion(vm.isPreventDeletion());
         }
         if (vm.isSetHighAvailability()) {
             HighAvailability ha = vm.getHighAvailability();
@@ -334,6 +338,7 @@
         }
         model.setType(map(entity.getvm_type(), null));
         model.setStateless(entity.getis_stateless());
+        model.setPreventDeletion(entity.getPreventDeletion());
         model.setHighAvailability(new HighAvailability());
         model.getHighAvailability().setEnabled(entity.getauto_startup());
         model.getHighAvailability().setPriority(entity.getpriority());
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 28fee23..d99d3d9 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
@@ -70,5 +70,6 @@
         assertEquals(model.getTimezone(), transform.getTimezone());
         assertEquals(model.getUsb().isEnabled(), 
transform.getUsb().isEnabled());
         assertEquals(model.getDisplay().isSmartcardEnabled(), 
transform.getDisplay().isSmartcardEnabled());
+        assertEquals(model.isPreventDeletion(), transform.isPreventDeletion());
     }
 }
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 cebfc3a..cdb97c0 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
@@ -104,6 +104,7 @@
         assertEquals(model.getTimezone(), transform.getTimezone());
         assertEquals(model.getUsb().isEnabled(), 
transform.getUsb().isEnabled());
         assertEquals(model.getDisplay().isSmartcardEnabled(), 
transform.getDisplay().isSmartcardEnabled());
+        assertEquals(model.isPreventDeletion(), transform.isPreventDeletion());
     }
 
     @Test


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

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

Reply via email to