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