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