Frank Kobzik has uploaded a new change for review.

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

core: RFE: allow to define deletion protection per vm

This patch introduces protection from unwanted deletion of VMs/Templates. Each
VM/Template will have a boolean flag representing "deletion protection". If
this flag is set to true, the frontend will prevent deletion of corresponding
entity and display a warning popup.

On backend it affects
 - vm_static table in database will have a new boolean column
   "prevent_deletion" with default value FALSE
 - Ovf export/import - new field PreventDeletion
 - corresponding entities, db classes (DAOs, row mapper)

Change-Id: I878f32506e0aececb7947b2db5c63cf0cc0980b5
Signed-off-by: Frantisek Kobzik <fkob...@redhat.com>
Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=871371
---
M backend/manager/dbscripts/create_views.sql
A backend/manager/dbscripts/upgrade/03_01_1520_add_prevent_deletion.sql
M backend/manager/dbscripts/vm_templates_sp.sql
M backend/manager/dbscripts/vms_sp.sql
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmTemplateCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmTemplateHandler.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VM.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmBase.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmStatic.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmTemplate.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/AbstractVmRowMapper.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAODbFacadeImpl.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStaticDAODbFacadeImpl.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmTemplateDAODbFacadeImpl.java
M 
backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfReader.java
M 
backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfWriter.java
17 files changed, 76 insertions(+), 21 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/04/9404/1

diff --git a/backend/manager/dbscripts/create_views.sql 
b/backend/manager/dbscripts/create_views.sql
index d6dd745..af24f8f 100644
--- a/backend/manager/dbscripts/create_views.sql
+++ b/backend/manager/dbscripts/create_views.sql
@@ -359,6 +359,7 @@
        vm_templates.auto_startup as auto_startup,
        vm_templates.is_stateless as is_stateless,
        vm_templates.is_smartcard_enabled as is_smartcard_enabled,
+       vm_templates.prevent_deletion as prevent_deletion,
        vm_templates.iso_path as iso_path,
        vm_templates.origin as origin,
        vm_templates.initrd_url as initrd_url,
@@ -517,7 +518,7 @@
 AS
 SELECT     vm_static.vm_name as vm_name, vm_static.mem_size_mb as 
vm_mem_size_mb, vm_static.nice_level as nice_level,
                       vm_static.vmt_guid as vmt_guid, vm_static.os as vm_os, 
vm_static.description as vm_description, vm_static.vds_group_id as vds_group_id,
-                      vm_static.domain as vm_domain, vm_static.creation_date 
as vm_creation_date, vm_static.auto_startup as auto_startup, 
vm_static.is_stateless as is_stateless, vm_static.is_smartcard_enabled as 
is_smartcard_enabled, vm_static.dedicated_vm_for_vds as dedicated_vm_for_vds,
+                      vm_static.domain as vm_domain, vm_static.creation_date 
as vm_creation_date, vm_static.auto_startup as auto_startup, 
vm_static.is_stateless as is_stateless, vm_static.is_smartcard_enabled as 
is_smartcard_enabled, vm_static.prevent_deletion as prevent_deletion, 
vm_static.dedicated_vm_for_vds as dedicated_vm_for_vds,
                       vm_static.fail_back as fail_back, 
vm_static.default_boot_sequence as default_boot_sequence, vm_static.vm_type as 
vm_type,
                                          vds_groups.name as vds_group_name, 
vds_groups.selection_algorithm as selection_algorithm, 
vds_groups.transparent_hugepages as transparent_hugepages,
                                          storage_pool.id as storage_pool_id, 
storage_pool.name as storage_pool_name,
@@ -558,7 +559,7 @@
 CREATE OR REPLACE VIEW vms_with_tags
 AS
 SELECT      vms.vm_name, vms.vm_mem_size_mb, vms.nice_level, vms.vmt_guid, 
vms.vm_os, vms.vm_description,
-            vms.vds_group_id, vms.vm_domain, vms.vm_creation_date, 
vms.auto_startup, vms.is_stateless, vms.is_smartcard_enabled,
+            vms.vds_group_id, vms.vm_domain, vms.vm_creation_date, 
vms.auto_startup, vms.is_stateless, vms.is_smartcard_enabled, 
vms.prevent_deletion,
             vms.dedicated_vm_for_vds, vms.fail_back, 
vms.default_boot_sequence, vms.vm_type,
             vms.vds_group_name, vms.selection_algorithm, vms.storage_pool_id, 
vms.storage_pool_name,
             vms.vds_group_description, vms.vmt_name, vms.vmt_mem_size_mb, 
vms.vmt_os, vms.vmt_creation_date,
diff --git 
a/backend/manager/dbscripts/upgrade/03_01_1520_add_prevent_deletion.sql 
b/backend/manager/dbscripts/upgrade/03_01_1520_add_prevent_deletion.sql
new file mode 100644
index 0000000..44b674c
--- /dev/null
+++ b/backend/manager/dbscripts/upgrade/03_01_1520_add_prevent_deletion.sql
@@ -0,0 +1 @@
+select fn_db_add_column('vm_static', 'prevent_deletion', 'BOOLEAN default 
false');
diff --git a/backend/manager/dbscripts/vm_templates_sp.sql 
b/backend/manager/dbscripts/vm_templates_sp.sql
index d62df46..6f20895 100644
--- a/backend/manager/dbscripts/vm_templates_sp.sql
+++ b/backend/manager/dbscripts/vm_templates_sp.sql
@@ -33,6 +33,7 @@
  v_auto_startup BOOLEAN,
  v_is_stateless BOOLEAN,
  v_is_smartcard_enabled BOOLEAN,
+ v_prevent_deletion BOOLEAN,
  v_iso_path VARCHAR(4000) ,
  v_origin INTEGER ,
  v_initrd_url    VARCHAR(4000) ,
@@ -82,7 +83,8 @@
     quota_id,
     migration_support,
     dedicated_vm_for_vds,
-    is_smartcard_enabled)
+    is_smartcard_enabled,
+    prevent_deletion)
 VALUES(
     -- This field is meaningless for templates for the time being, however we 
want to keep it not null for VMs.
     -- Thus, since templates are top level elements they "point" to the 
'Blank' template.
@@ -121,7 +123,8 @@
     v_quota_id,
     v_migration_support,
     v_dedicated_vm_for_vds,
-    v_is_smartcard_enabled);
+    v_is_smartcard_enabled,
+    v_prevent_deletion);
 END; $procedure$
 LANGUAGE plpgsql;
 
@@ -155,6 +158,7 @@
  v_auto_startup BOOLEAN,
  v_is_stateless BOOLEAN,
  v_is_smartcard_enabled BOOLEAN,
+ v_prevent_deletion BOOLEAN,
  v_iso_path VARCHAR(4000) ,
  v_origin INTEGER ,
  v_initrd_url VARCHAR(4000) ,
@@ -182,7 +186,8 @@
       priority = v_priority,auto_startup = v_auto_startup,is_stateless = 
v_is_stateless,
       iso_path = v_iso_path,origin = v_origin,initrd_url = v_initrd_url,
       kernel_url = v_kernel_url,kernel_params = v_kernel_params, _update_date 
= CURRENT_TIMESTAMP, quota_id = v_quota_id,
-      migration_support = v_migration_support, dedicated_vm_for_vds = 
v_dedicated_vm_for_vds, is_smartcard_enabled = v_is_smartcard_enabled
+      migration_support = v_migration_support, dedicated_vm_for_vds = 
v_dedicated_vm_for_vds, is_smartcard_enabled = v_is_smartcard_enabled,
+      prevent_deletion = v_prevent_deletion
       WHERE vm_guid = v_vmt_guid
       AND   entity_type = 'TEMPLATE';
 END; $procedure$
diff --git a/backend/manager/dbscripts/vms_sp.sql 
b/backend/manager/dbscripts/vms_sp.sql
index 9e3cd1b..c4a24de 100644
--- a/backend/manager/dbscripts/vms_sp.sql
+++ b/backend/manager/dbscripts/vms_sp.sql
@@ -289,6 +289,7 @@
  v_auto_startup BOOLEAN,
  v_is_stateless BOOLEAN,
  v_is_smartcard_enabled BOOLEAN,
+ v_prevent_deletion BOOLEAN,
  v_dedicated_vm_for_vds UUID ,
     v_fail_back BOOLEAN ,
     v_vm_type INTEGER ,
@@ -310,8 +311,8 @@
 RETURNS VOID
    AS $procedure$
 BEGIN
-INSERT INTO vm_static(description, mem_size_mb, os, vds_group_id, vm_guid, 
VM_NAME, 
vmt_guid,domain,creation_date,num_of_monitors,allow_console_reconnect,is_initialized,is_auto_suspend,num_of_sockets,cpu_per_socket,usb_policy,
 time_zone,auto_startup,is_stateless,dedicated_vm_for_vds, fail_back, 
default_boot_sequence, vm_type, nice_level, default_display_type, 
priority,iso_path,origin,initrd_url,kernel_url,kernel_params,migration_support,predefined_properties,userdefined_properties,min_allocated_mem,
 entity_type, quota_id, cpu_pinning, is_smartcard_enabled)
-       VALUES(v_description,  v_mem_size_mb, v_os, v_vds_group_id, v_vm_guid, 
v_vm_name, v_vmt_guid, v_domain, v_creation_date, v_num_of_monitors, 
v_allow_console_reconnect, v_is_initialized, v_is_auto_suspend, 
v_num_of_sockets, v_cpu_per_socket, v_usb_policy, v_time_zone, 
v_auto_startup,v_is_stateless,v_dedicated_vm_for_vds,v_fail_back, 
v_default_boot_sequence, v_vm_type, v_nice_level, v_default_display_type, 
v_priority,v_iso_path,v_origin,v_initrd_url,v_kernel_url,v_kernel_params,v_migration_support,v_predefined_properties,v_userdefined_properties,v_min_allocated_mem,
 'VM', v_quota_id, v_cpu_pinning, v_is_smartcard_enabled);
+INSERT INTO vm_static(description, mem_size_mb, os, vds_group_id, vm_guid, 
VM_NAME, 
vmt_guid,domain,creation_date,num_of_monitors,allow_console_reconnect,is_initialized,is_auto_suspend,num_of_sockets,cpu_per_socket,usb_policy,
 time_zone,auto_startup,is_stateless,dedicated_vm_for_vds, fail_back, 
default_boot_sequence, vm_type, nice_level, default_display_type, 
priority,iso_path,origin,initrd_url,kernel_url,kernel_params,migration_support,predefined_properties,userdefined_properties,min_allocated_mem,
 entity_type, quota_id, cpu_pinning, is_smartcard_enabled,prevent_deletion)
+       VALUES(v_description,  v_mem_size_mb, v_os, v_vds_group_id, v_vm_guid, 
v_vm_name, v_vmt_guid, v_domain, v_creation_date, v_num_of_monitors, 
v_allow_console_reconnect, v_is_initialized, v_is_auto_suspend, 
v_num_of_sockets, v_cpu_per_socket, v_usb_policy, v_time_zone, 
v_auto_startup,v_is_stateless,v_dedicated_vm_for_vds,v_fail_back, 
v_default_boot_sequence, v_vm_type, v_nice_level, v_default_display_type, 
v_priority,v_iso_path,v_origin,v_initrd_url,v_kernel_url,v_kernel_params,v_migration_support,v_predefined_properties,v_userdefined_properties,v_min_allocated_mem,
 'VM', v_quota_id, v_cpu_pinning, v_is_smartcard_enabled,v_prevent_deletion);
 END; $procedure$
 LANGUAGE plpgsql;
 
@@ -339,6 +340,7 @@
  v_auto_startup BOOLEAN,
  v_is_stateless BOOLEAN,
  v_is_smartcard_enabled BOOLEAN,
+ v_prevent_deletion BOOLEAN,
  v_dedicated_vm_for_vds UUID ,
     v_fail_back BOOLEAN ,
     v_vm_type INTEGER ,
@@ -378,7 +380,8 @@
       initrd_url = v_initrd_url,kernel_url = v_kernel_url,
       kernel_params = v_kernel_params,migration_support = v_migration_support,
       predefined_properties = v_predefined_properties,userdefined_properties = 
v_userdefined_properties,
-      min_allocated_mem = v_min_allocated_mem, quota_id = v_quota_id, 
cpu_pinning = v_cpu_pinning, is_smartcard_enabled = v_is_smartcard_enabled
+      min_allocated_mem = v_min_allocated_mem, quota_id = v_quota_id, 
cpu_pinning = v_cpu_pinning, is_smartcard_enabled = v_is_smartcard_enabled,
+      prevent_deletion = v_prevent_deletion
       WHERE vm_guid = v_vm_guid
       AND   entity_type = 'VM';
 END; $procedure$
@@ -651,6 +654,7 @@
  v_auto_startup BOOLEAN,
  v_is_stateless BOOLEAN,
  v_is_smartcard_enabled BOOLEAN,
+ v_prevent_deletion BOOLEAN,
  v_dedicated_vm_for_vds UUID ,
     v_fail_back BOOLEAN ,
     v_vm_type INTEGER ,
@@ -671,8 +675,8 @@
 RETURNS VOID
    AS $procedure$
 BEGIN
-INSERT INTO vm_static(description, mem_size_mb, os, vds_group_id, vm_guid, 
VM_NAME, vmt_guid, num_of_monitors, allow_console_reconnect, is_initialized, 
is_auto_suspend, num_of_sockets, cpu_per_socket, usb_policy, 
time_zone,auto_startup,is_stateless,dedicated_vm_for_vds,fail_back,vm_type,nice_level,default_boot_sequence,default_display_type,priority,iso_path,origin,initrd_url,kernel_url,kernel_params,migration_support,predefined_properties,userdefined_properties,min_allocated_mem,cpu_pinning,is_smartcard_enabled)
-       VALUES(v_description, v_mem_size_mb, v_os, v_vds_group_id, v_vm_guid, 
v_vm_name, v_vmt_guid, v_num_of_monitors, v_num_of_monitors, v_is_initialized, 
v_is_auto_suspend, v_num_of_sockets, v_cpu_per_socket, v_usb_policy, 
v_time_zone,v_auto_startup,v_is_stateless,v_dedicated_vm_for_vds,v_fail_back,v_vm_type,v_nice_level,v_default_boot_sequence,v_default_display_type,v_priority,v_iso_path,v_origin,v_initrd_url,v_kernel_url,v_kernel_params,v_migration_support,v_predefined_properties,v_userdefined_properties,v_min_allocated_mem,v_cpu_pinning,v_is_smartcard_enabled);
+INSERT INTO vm_static(description, mem_size_mb, os, vds_group_id, vm_guid, 
VM_NAME, vmt_guid, num_of_monitors, allow_console_reconnect, is_initialized, 
is_auto_suspend, num_of_sockets, cpu_per_socket, usb_policy, 
time_zone,auto_startup,is_stateless,dedicated_vm_for_vds,fail_back,vm_type,nice_level,default_boot_sequence,default_display_type,priority,iso_path,origin,initrd_url,kernel_url,kernel_params,migration_support,predefined_properties,userdefined_properties,min_allocated_mem,cpu_pinning,is_smartcard_enabled,prevent_deletion)
+       VALUES(v_description, v_mem_size_mb, v_os, v_vds_group_id, v_vm_guid, 
v_vm_name, v_vmt_guid, v_num_of_monitors, v_num_of_monitors, v_is_initialized, 
v_is_auto_suspend, v_num_of_sockets, v_cpu_per_socket, v_usb_policy, 
v_time_zone,v_auto_startup,v_is_stateless,v_dedicated_vm_for_vds,v_fail_back,v_vm_type,v_nice_level,v_default_boot_sequence,v_default_display_type,v_priority,v_iso_path,v_origin,v_initrd_url,v_kernel_url,v_kernel_params,v_migration_support,v_predefined_properties,v_userdefined_properties,v_min_allocated_mem,v_cpu_pinning,v_is_smartcard_enabled,v_prevent_deletion);
 
       INSERT INTO vm_dynamic(vm_guid, status) VALUES(v_vm_guid, 0);
 
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmTemplateCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmTemplateCommand.java
index c35b12c..6a174c8 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmTemplateCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmTemplateCommand.java
@@ -286,7 +286,8 @@
                         .getnice_level(), 
getParameters().getMasterVm().getfail_back(),
                 getParameters().getMasterVm().getdefault_boot_sequence(), 
getParameters()
                         .getMasterVm().getvm_type(),
-                getParameters().getMasterVm().isSmartcardEnabled()));
+                getParameters().getMasterVm().isSmartcardEnabled(),
+                getParameters().getMasterVm().getPreventDeletion()));
         
getVmTemplate().setauto_startup(getParameters().getMasterVm().getauto_startup());
         
getVmTemplate().setpriority(getParameters().getMasterVm().getpriority());
         
getVmTemplate().setdefault_display_type(getParameters().getMasterVm().getdefault_display_type());
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 db33fee..124ac4f 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
@@ -80,7 +80,7 @@
                 "dedicated_vm_for_vds", "default_display_type", "priority", 
"default_boot_sequence", "initrd_url",
                 "kernel_url", "kernel_params", "migrationSupport", 
"minAllocatedMem", "quotaId", "quotaName",
                 "quotaEnforcementType", "cpuPinning",
-                "vmPayload", "balloonEnabled", "smartcardEnabled",
+                "vmPayload", "balloonEnabled", 
"smartcardEnabled","preventDeletion",
                 "images", // images list is relational entity - ignore value 
changes
                 "interfaces" // interfaces is relational entity - ignore value 
changes
         });
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmTemplateHandler.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmTemplateHandler.java
index 10f890f..489f612 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmTemplateHandler.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmTemplateHandler.java
@@ -34,7 +34,7 @@
                 "default_boot_sequence",
                 "iso_path", "diskImageMap", "default_display_type", 
"priority", "auto_startup", "is_stateless",
                 "initrd_url", "kernel_url", "kernel_params", "images", 
"interfaces", "quotaId", "quotaName",
-                "quotaEnforcementType", "migrationSupport", 
"dedicated_vm_for_vds", "smartcardEnabled"
+                "quotaEnforcementType", "migrationSupport", 
"dedicated_vm_for_vds", "smartcardEnabled", "preventDeletion"
         });
     }
 
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VM.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VM.java
index 6838119..356c19d 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VM.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VM.java
@@ -401,6 +401,14 @@
         mVmStatic.setis_stateless(value);
     }
 
+    public void setPreventDeletion(boolean preventDeletion) {
+        mVmStatic.setPreventDeletion(preventDeletion);
+    }
+
+    public boolean getPreventDeletion() {
+        return mVmStatic.getPreventDeletion();
+    }
+
     public DisplayType getdefault_display_type() {
         return mVmStatic.getdefault_display_type();
     }
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmBase.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmBase.java
index fe61cfe..af67683 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmBase.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmBase.java
@@ -29,7 +29,7 @@
 public class VmBase extends IVdcQueryable implements INotifyPropertyChanged, 
BusinessEntity<Guid> {
     private static final long serialVersionUID = 1078548170257965614L;
     private ArrayList<DiskImage> images;
-    private ArrayList<DiskImage> diskList = new ArrayList<DiskImage>();
+    private final ArrayList<DiskImage> diskList = new ArrayList<DiskImage>();
     private List<VmNetworkInterface> interfaces;
     private Map<Guid, VmDevice> vmManagedDeviceMap = new HashMap<Guid, 
VmDevice>();
     private List<VmDevice> vmUnManagedDeviceList = new ArrayList<VmDevice>();
@@ -108,6 +108,9 @@
 
     @Column(name = "is_stateless")
     private boolean stateless;
+
+    @Column(name = "prevent_deletion")
+    private boolean preventDeletion;
 
     @Column(name = "is_smartcard_enabled")
     private boolean smartcardEnabled;
@@ -191,7 +194,8 @@
             String kernelParams,
             String initrdUrl,
             Guid quotaId,
-            boolean smartcardEnabled) {
+            boolean smartcardEnabled,
+            boolean preventDeletion) {
         super();
         this.id = id;
         this.vds_group_id = vds_group_id;
@@ -219,6 +223,7 @@
         this.kernelParams = kernelParams;
         this.initrdUrl = initrdUrl;
         this.smartcardEnabled = smartcardEnabled;
+        this.preventDeletion = preventDeletion;
         setQuotaId(quotaId);
     }
 
@@ -498,6 +503,14 @@
         this.smartcardEnabled = smartcardEnabled;
     }
 
+    public boolean getPreventDeletion() {
+        return preventDeletion;
+    }
+
+    public void setPreventDeletion(boolean preventDeletion) {
+        this.preventDeletion = preventDeletion;
+    }
+
     @Override
     public int hashCode() {
         final int prime = 31;
@@ -646,6 +659,9 @@
         if (smartcardEnabled != other.smartcardEnabled) {
             return false;
         }
+        if (preventDeletion != other.preventDeletion) {
+            return false;
+        }
         if (timezone == null) {
             if (other.timezone != null) {
                 return false;
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmStatic.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmStatic.java
index f69a903..316c63a 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmStatic.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmStatic.java
@@ -105,7 +105,8 @@
                 vmStatic.getkernel_params(),
                 vmStatic.getinitrd_url(),
                 vmStatic.getQuotaId(),
-                vmStatic.isSmartcardEnabled());
+                vmStatic.isSmartcardEnabled(),
+                vmStatic.getPreventDeletion());
         name = vmStatic.getvm_name();
         vmt_guid = vmStatic.getvmt_guid();
         setCustomProperties(vmStatic.getCustomProperties());
@@ -126,7 +127,7 @@
             int numOfMonitors,
             UsbPolicy usb_policy, String time_zone, boolean auto_startup, 
boolean is_stateless, boolean fail_back,
             BootSequence default_boot_sequence, VmType vm_type,
-            int minAllocatedMem, Guid quotaGuid, boolean smartcardEnabled) {
+            int minAllocatedMem, Guid quotaGuid, boolean smartcardEnabled, 
boolean preventDeletion) {
         super(vm_guid,
                 vds_group_id,
                 os,
@@ -153,7 +154,8 @@
                 null,
                 null,
                 quotaGuid,
-                smartcardEnabled);
+                smartcardEnabled,
+                preventDeletion);
 
         this.name = vm_name;
         this.vmt_guid = vmt_guid;
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmTemplate.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmTemplate.java
index d1c2af1..ce61e91 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmTemplate.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmTemplate.java
@@ -42,7 +42,7 @@
                     "default_display_type", "mem_size_mb", "vds_group_name", 
"status", "time_zone", "num_of_monitors",
                     "vds_group_id", "usb_policy", "num_of_sockets", 
"cpu_per_socket", "os", "is_auto_suspend",
                     "auto_startup", "priority", "default_boot_sequence", 
"is_stateless", "iso_path", "initrd_url",
-                    "kernel_url", "kernel_params", "smartcardEnabled" }));
+                    "kernel_url", "kernel_params", "smartcardEnabled", 
"preventDeletion" }));
 
     @Transient
     private List<VmNetworkInterface> _Interfaces = new 
ArrayList<VmNetworkInterface>();
@@ -96,7 +96,7 @@
             int num_of_sockets, int cpu_per_socket, VmOsType os, Guid 
vds_group_id, Guid vmt_guid, String domain,
             int num_of_monitors, int status, int usb_policy, String time_zone, 
boolean is_auto_suspend, int nice_level,
             boolean fail_back, BootSequence default_boot_sequence, VmType 
vm_type,
-            boolean smartcardEnabled) {
+            boolean smartcardEnabled, boolean preventDeletion) {
         super(vmt_guid,
                 vds_group_id,
                 os,
@@ -123,7 +123,8 @@
                 null,
                 null,
                 null,
-                smartcardEnabled);
+                smartcardEnabled,
+                preventDeletion);
 
         diskTemplateMap = new HashMap<Guid, DiskImage>();
 
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/AbstractVmRowMapper.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/AbstractVmRowMapper.java
index 11339b5..7a115b8 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/AbstractVmRowMapper.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/AbstractVmRowMapper.java
@@ -39,6 +39,7 @@
         entity.setkernel_params(rs.getString("kernel_params"));
         entity.setinitrd_url(rs.getString("initrd_url"));
         entity.setSmartcardEnabled(rs.getBoolean("is_smartcard_enabled"));
+        entity.setPreventDeletion(rs.getBoolean("prevent_deletion"));
     }
 
 }
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAODbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAODbFacadeImpl.java
index 6930a6b..0ebb842 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAODbFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAODbFacadeImpl.java
@@ -202,6 +202,7 @@
                 .addValue("auto_startup", vm.getauto_startup())
                 .addValue("is_stateless", vm.getis_stateless())
                 .addValue("is_smartcard_enabled", vm.isSmartcardEnabled())
+                .addValue("prevent_deletion", vm.getPreventDeletion())
                 .addValue("dedicated_vm_for_vds", vm.getdedicated_vm_for_vds())
                 .addValue("fail_back", vm.getfail_back())
                 .addValue("vm_type", vm.getvm_type())
@@ -311,6 +312,7 @@
             entity.setauto_startup(rs.getBoolean("auto_startup"));
             entity.setis_stateless(rs.getBoolean("is_stateless"));
             entity.setSmartcardEnabled(rs.getBoolean("is_smartcard_enabled"));
+            entity.setPreventDeletion(rs.getBoolean("prevent_deletion"));
             
entity.setdedicated_vm_for_vds(NGuid.createGuidFromString(rs.getString("dedicated_vm_for_vds")));
             entity.setfail_back(rs.getBoolean("fail_back"));
             
entity.setlast_vds_run_on(NGuid.createGuidFromString(rs.getString("last_vds_run_on")));
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStaticDAODbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStaticDAODbFacadeImpl.java
index 9c369e3..9165420 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStaticDAODbFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStaticDAODbFacadeImpl.java
@@ -60,6 +60,7 @@
                 .addValue("auto_startup", vm.getauto_startup())
                 .addValue("is_stateless", vm.getis_stateless())
                 .addValue("is_smartcard_enabled", vm.isSmartcardEnabled())
+                .addValue("prevent_deletion", vm.getPreventDeletion())
                 .addValue("dedicated_vm_for_vds", vm.getdedicated_vm_for_vds())
                 .addValue("fail_back", vm.getfail_back())
                 .addValue("vm_type", vm.getvm_type())
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmTemplateDAODbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmTemplateDAODbFacadeImpl.java
index 63ccb3d..5356484 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmTemplateDAODbFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmTemplateDAODbFacadeImpl.java
@@ -139,6 +139,7 @@
                 .addValue("auto_startup", template.getauto_startup())
                 .addValue("is_stateless", template.getis_stateless())
                 .addValue("is_smartcard_enabled", 
template.isSmartcardEnabled())
+                .addValue("prevent_deletion", template.getPreventDeletion())
                 .addValue("iso_path", template.getiso_path())
                 .addValue("origin", template.getorigin())
                 .addValue("initrd_url", template.getinitrd_url())
diff --git 
a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfReader.java
 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfReader.java
index d86bbe2..4106f92 100644
--- 
a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfReader.java
+++ 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfReader.java
@@ -379,6 +379,13 @@
             }
         }
 
+        node = content.SelectSingleNode("PreventDeletion");
+        if (node != null) {
+            if (!StringHelper.isNullOrEmpty(node.InnerText)) {
+                
vmBase.setSmartcardEnabled(Boolean.parseBoolean(node.InnerText));
+            }
+        }
+
         readGeneralData(content);
     }
 
diff --git 
a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfWriter.java
 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfWriter.java
index 44ce103..0044a40 100644
--- 
a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfWriter.java
+++ 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfWriter.java
@@ -206,6 +206,10 @@
         _writer.WriteRaw(String.valueOf(vmBase.getis_auto_suspend()));
         _writer.WriteEndElement();
 
+        _writer.WriteStartElement("PreventDeletion");
+        _writer.WriteRaw(String.valueOf(vmBase.getPreventDeletion()));
+        _writer.WriteEndElement();
+
         _writer.WriteStartElement("IsSmartcardEnabled");
         _writer.WriteRaw(String.valueOf(vmBase.isSmartcardEnabled()));
         _writer.WriteEndElement();


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I878f32506e0aececb7947b2db5c63cf0cc0980b5
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