Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CLOUDSTACK-9607: Preventing template deletion when template is in use. #1773

Merged
merged 1 commit into from
Jan 4, 2018

Conversation

priyankparihar
Copy link
Contributor

@priyankparihar priyankparihar commented Nov 24, 2016

For complete description please refer -> CLOUDSTACK-9607

Copy link
Contributor

@jburwell jburwell left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@priyankparihar great small enhancement to ensure the overall system integrity. This seems like it would be a very good addition for LTS users to avoid deleting in-use templates. Therefore, could you please change the base branch of the PR to 4.9?

Also, are their existing Marvin test cases that test attempts to delete in-use templates? If not, could you please create one to verify this PR?

}

s_logger.warn(s.substring(0,s.length()-2));
throw new InvalidParameterValueException(s.substring(0,s.length()-2));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lines 1187-1193 should replaced with the following to be DRY and improve clarity:

final String message = String.format("Unable to delete template with id: %1$s because VM instances: [%2$s] are using it.",  templateId, Joiner.on(",").join(vmInstanceVOList));
s_logger.warn(message);
throw new InvalidParameterValueException(message);

@@ -52,6 +52,9 @@
@Parameter(name = ApiConstants.ZONE_ID, type = CommandType.UUID, entityType = ZoneResponse.class, description = "the ID of zone of the template")
private Long zoneId;

@Parameter(name = ApiConstants.FORCED, type = CommandType.BOOLEAN, required = false, description = "Force delete a template.")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please add since to this annotation to indicate that this parameter is available in 4.9+.

@priyankparihar
Copy link
Contributor Author

Hi @jburwell ,
Thanks for teaching me something new. Test is also added.

@ustcweizhou
Copy link
Contributor

@priyankparihar

  1. the file change from 10644 to 10755 is not necessary
  2. the default value of forced is false, might cause issue on backwards compatibility
  3. In the vm installation, as the template is still in use , so we can find it in the storage pool where the root disk is located. We need to improve it by using the existing template image on storage pool, or copying the template from storage pool where the root disk is located to another new storage pool (pool of allocated new root disk).

@priyankparihar
Copy link
Contributor Author

Hi @jburwell ,
Would like to add something on @ustcweizhou comment ?

@serg38
Copy link

serg38 commented Feb 17, 2017

@priyankparihar I agree with @ustcweizhou . Default behavior should remain forced. And in this case Web UI we should give a warning with "yes and no" if template has deployed VM so users can cancel the operation if they need to.

@serg38
Copy link

serg38 commented Feb 17, 2017

@priyankparihar @ustcweizhou There seems to be just one case where it will affect resetVM operations. If template is deleted and root disk is migrated to another PS where there is no template copy at destination and the reset VM wont work. It is probably not easy to implement copying a base template from on PS to another as a part of migrate volume command. I think the right approach would be just to have a check in resetVM and if no local template copy is available then find another PS with template copy and reset root disk over there or if at that point there is no PS with template copy gracefully error out resetVM command.

@ustcweizhou
Copy link
Contributor

@serg38 yes, your approach is the best solution for now.

By the way, I've implemented the copy of template between storage pools on kvm/nfs in our branch, not implemented for other situations yet. The missing template also impact storage migration (live/offline).

@borisstoyanov
Copy link
Contributor

I agree with @serg38 and @ustcweizhou that upon deletion user should be displayed with an yes/no dialogue if there are deployed VMs, but a lot of CS user aren't using UI, but just the APIs. If the force option is enabled by default I guess the API call will go and delete the all selected templates without any warning. I think the force=true should only stay with the UI call.

@priyankparihar
Copy link
Contributor Author

Hi @ustcweizhou @serg38 and @borisroman,
Thanks for your valuable suggestions.

@ustcweizhou the default value of forced is false, might cause issue on backwards compatibility.

If the force option is enabled by default API call will go and delete the all selected templates without any warning so default value of forced is kept 'false'.

@ustcweizhou In the vm installation, as the template is still in use , so we can find it in the storage pool where the root disk is located. We need to improve it by using the existing template image on storage pool, or copying the template from storage pool where the root disk is located to another new storage pool (pool of allocated new root disk).

I think it will be good to take it in separate PR.

@ustcweizhou
Copy link
Contributor

@priyankparihar Then we need to notify hundreds of users to modify their application to add forced=true in deleteTemplate API (Otherwise their application might fail), which is not feasible I think.
You also need to modify your API description to add the default value, and modify UI as well.

@priyankparihar
Copy link
Contributor Author

Hi @ustcweizhou,
By default enabling force option(force=true) will be very risky, same is mentioned by @borisstoyanov.

@ustcweizhou
Copy link
Contributor

@priyankparihar the default behaviour is forced=true from few years ago. If the template is removed, the user vm is not impacted which is very good. There is indeed an issue when reinstall the vm. For you it could be a very risky issue. For us at least it is not a big issue as we provide some other templates for vm reinstallation.

@serg38
Copy link

serg38 commented Feb 20, 2017

@ustcweizhou @priyankparihar @borisstoyanov The default behavior was always equivalent of forced=true. We seem to agree that the UI behavior should remain forced=true but with extra warning. We can either change default confirmation "Please confirm that you want to delete this template." e.g. to "Please confirm that you want to delete this template. Features that depends on the template presence might no longer work". But I think the better option will be to have response tag in listTemplate call to indicate if active VMs exists or not. Then warning can be given only to such templates.
As for API side we might still change default behavior but we need to explicitly document it in Release Notes so users can get prepared and change instances of deleteTemplate execution to use forced=true or not as needed.

@borisstoyanov
Copy link
Contributor

@blueorangutan package

@blueorangutan
Copy link

@borisstoyanov a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.

@blueorangutan
Copy link

Packaging result: ✔centos6 ✔centos7 ✔debian. JID-515

@borisstoyanov
Copy link
Contributor

@blueorangutan test

@blueorangutan
Copy link

@borisstoyanov a Trillian-Jenkins test job (centos7 mgmt + kvm-centos7) has been kicked to run smoke tests

@priyankparihar
Copy link
Contributor Author

priyankparihar commented Feb 21, 2017

Hi @koushik-das @rajesh-battala @devdeep ,

The default value of forced is false, might cause issue on backwards compatibility.

Should i make changes according to @serg38 and @ustcweizhou suggestion ? ( or current code LGT you, Please notify. )

@jburwell
Copy link
Contributor

@priyankparihar I agree with @ustcweizhou regarding the default value of forced in terms of backwards compatibility.

Also, why we permit deletion of a template when it is associated with one or more active volumes? It seems like we are giving the user the means to corrupt their system.

@blueorangutan
Copy link

Trillian test result (tid-874)
Environment: kvm-centos7 (x2), Advanced Networking with Mgmt server 7
Total time taken: 34092 seconds
Marvin logs: https://github.com/blueorangutan/acs-prs/releases/download/trillian/pr1773-t874-kvm-centos7.zip
Intermitten failure detected: /marvin/tests/smoke/test_privategw_acl.py
Intermitten failure detected: /marvin/tests/smoke/test_snapshots.py
Intermitten failure detected: /marvin/tests/smoke/test_vpc_redundant.py
Test completed. 47 look ok, 2 have error(s)

Test Result Time (s) Test File
test_04_rvpc_privategw_static_routes Failure 355.70 test_privategw_acl.py
test_02_list_snapshots_with_removed_data_store Error 0.04 test_snapshots.py
test_01_vpc_site2site_vpn Success 160.18 test_vpc_vpn.py
test_01_vpc_remote_access_vpn Success 71.18 test_vpc_vpn.py
test_01_redundant_vpc_site2site_vpn Success 246.46 test_vpc_vpn.py
test_02_VPC_default_routes Success 289.60 test_vpc_router_nics.py
test_01_VPC_nics_after_destroy Success 533.70 test_vpc_router_nics.py
test_05_rvpc_multi_tiers Success 512.87 test_vpc_redundant.py
test_04_rvpc_network_garbage_collector_nics Success 1406.40 test_vpc_redundant.py
test_03_create_redundant_VPC_1tier_2VMs_2IPs_2PF_ACL_reboot_routers Success 544.89 test_vpc_redundant.py
test_02_redundant_VPC_default_routes Success 749.53 test_vpc_redundant.py
test_01_create_redundant_VPC_2tiers_4VMs_4IPs_4PF_ACL Success 1290.57 test_vpc_redundant.py
test_09_delete_detached_volume Success 156.51 test_volumes.py
test_08_resize_volume Success 156.44 test_volumes.py
test_07_resize_fail Success 161.58 test_volumes.py
test_06_download_detached_volume Success 156.31 test_volumes.py
test_05_detach_volume Success 155.74 test_volumes.py
test_04_delete_attached_volume Success 151.24 test_volumes.py
test_03_download_attached_volume Success 156.34 test_volumes.py
test_02_attach_volume Success 95.61 test_volumes.py
test_01_create_volume Success 716.35 test_volumes.py
test_03_delete_vm_snapshots Success 275.22 test_vm_snapshots.py
test_02_revert_vm_snapshots Success 100.67 test_vm_snapshots.py
test_01_create_vm_snapshots Success 158.69 test_vm_snapshots.py
test_deploy_vm_multiple Success 257.71 test_vm_life_cycle.py
test_deploy_vm Success 0.03 test_vm_life_cycle.py
test_advZoneVirtualRouter Success 0.02 test_vm_life_cycle.py
test_10_attachAndDetach_iso Success 26.73 test_vm_life_cycle.py
test_09_expunge_vm Success 125.25 test_vm_life_cycle.py
test_08_migrate_vm Success 40.98 test_vm_life_cycle.py
test_07_restore_vm Success 0.10 test_vm_life_cycle.py
test_06_destroy_vm Success 125.82 test_vm_life_cycle.py
test_03_reboot_vm Success 125.82 test_vm_life_cycle.py
test_02_start_vm Success 10.39 test_vm_life_cycle.py
test_01_stop_vm Success 40.34 test_vm_life_cycle.py
test_CreateTemplateWithDuplicateName Success 60.60 test_templates.py
test_08_list_system_templates Success 0.03 test_templates.py
test_07_list_public_templates Success 0.04 test_templates.py
test_05_template_permissions Success 0.06 test_templates.py
test_04_extract_template Success 5.17 test_templates.py
test_03_delete_template Success 5.11 test_templates.py
test_02_edit_template Success 90.16 test_templates.py
test_01_create_template Success 50.53 test_templates.py
test_10_destroy_cpvm Success 166.62 test_ssvm.py
test_09_destroy_ssvm Success 168.72 test_ssvm.py
test_08_reboot_cpvm Success 101.61 test_ssvm.py
test_07_reboot_ssvm Success 133.52 test_ssvm.py
test_06_stop_cpvm Success 131.71 test_ssvm.py
test_05_stop_ssvm Success 133.80 test_ssvm.py
test_04_cpvm_internals Success 1.19 test_ssvm.py
test_03_ssvm_internals Success 3.36 test_ssvm.py
test_02_list_cpvm_vm Success 0.13 test_ssvm.py
test_01_list_sec_storage_vm Success 0.13 test_ssvm.py
test_01_snapshot_root_disk Success 11.11 test_snapshots.py
test_04_change_offering_small Success 239.70 test_service_offerings.py
test_03_delete_service_offering Success 0.04 test_service_offerings.py
test_02_edit_service_offering Success 0.05 test_service_offerings.py
test_01_create_service_offering Success 0.11 test_service_offerings.py
test_02_sys_template_ready Success 0.15 test_secondary_storage.py
test_01_sys_vm_start Success 0.18 test_secondary_storage.py
test_09_reboot_router Success 35.32 test_routers.py
test_08_start_router Success 30.30 test_routers.py
test_07_stop_router Success 10.18 test_routers.py
test_06_router_advanced Success 0.06 test_routers.py
test_05_router_basic Success 0.05 test_routers.py
test_04_restart_network_wo_cleanup Success 5.75 test_routers.py
test_03_restart_network_cleanup Success 60.52 test_routers.py
test_02_router_internal_adv Success 1.05 test_routers.py
test_01_router_internal_basic Success 0.58 test_routers.py
test_router_dns_guestipquery Success 76.77 test_router_dns.py
test_router_dns_externalipquery Success 0.08 test_router_dns.py
test_router_dhcphosts Success 277.54 test_router_dhcphosts.py
test_router_dhcp_opts Success 21.97 test_router_dhcphosts.py
test_01_updatevolumedetail Success 0.11 test_resource_detail.py
test_01_reset_vm_on_reboot Success 146.46 test_reset_vm_on_reboot.py
test_createRegion Success 0.04 test_regions.py
test_create_pvlan_network Success 5.21 test_pvlan.py
test_dedicatePublicIpRange Success 0.42 test_public_ip_range.py
test_03_vpc_privategw_restart_vpc_cleanup Success 490.46 test_privategw_acl.py
test_02_vpc_privategw_static_routes Success 381.00 test_privategw_acl.py
test_01_vpc_privategw_acl Success 92.29 test_privategw_acl.py
test_01_primary_storage_nfs Success 35.83 test_primary_storage.py
test_createPortablePublicIPRange Success 15.19 test_portable_publicip.py
test_createPortablePublicIPAcquire Success 15.45 test_portable_publicip.py
test_isolate_network_password_server Success 89.50 test_password_server.py
test_UpdateStorageOverProvisioningFactor Success 0.25 test_over_provisioning.py
test_oobm_zchange_password Success 31.02 test_outofbandmanagement.py
test_oobm_multiple_mgmt_server_ownership Success 16.40 test_outofbandmanagement.py
test_oobm_issue_power_status Success 10.44 test_outofbandmanagement.py
test_oobm_issue_power_soft Success 15.37 test_outofbandmanagement.py
test_oobm_issue_power_reset Success 15.37 test_outofbandmanagement.py
test_oobm_issue_power_on Success 15.64 test_outofbandmanagement.py
test_oobm_issue_power_off Success 15.35 test_outofbandmanagement.py
test_oobm_issue_power_cycle Success 15.38 test_outofbandmanagement.py
test_oobm_enabledisable_across_clusterzones Success 82.68 test_outofbandmanagement.py
test_oobm_enable_feature_valid Success 5.37 test_outofbandmanagement.py
test_oobm_enable_feature_invalid Success 0.16 test_outofbandmanagement.py
test_oobm_disable_feature_valid Success 5.28 test_outofbandmanagement.py
test_oobm_disable_feature_invalid Success 0.12 test_outofbandmanagement.py
test_oobm_configure_invalid_driver Success 0.08 test_outofbandmanagement.py
test_oobm_configure_default_driver Success 0.09 test_outofbandmanagement.py
test_oobm_background_powerstate_sync Success 23.49 test_outofbandmanagement.py
test_extendPhysicalNetworkVlan Success 15.32 test_non_contigiousvlan.py
test_01_nic Success 424.25 test_nic.py
test_releaseIP Success 247.97 test_network.py
test_reboot_router Success 403.64 test_network.py
test_public_ip_user_account Success 10.25 test_network.py
test_public_ip_admin_account Success 40.39 test_network.py
test_network_rules_acquired_public_ip_3_Load_Balancer_Rule Success 67.20 test_network.py
test_network_rules_acquired_public_ip_2_nat_rule Success 61.73 test_network.py
test_network_rules_acquired_public_ip_1_static_nat_rule Success 124.35 test_network.py
test_delete_account Success 303.00 test_network.py
test_02_port_fwd_on_non_src_nat Success 55.69 test_network.py
test_01_port_fwd_on_src_nat Success 111.89 test_network.py
test_nic_secondaryip_add_remove Success 207.68 test_multipleips_per_nic.py
login_test_saml_user Success 19.33 test_login.py
test_assign_and_removal_lb Success 133.51 test_loadbalance.py
test_02_create_lb_rule_non_nat Success 187.42 test_loadbalance.py
test_01_create_lb_rule_src_nat Success 217.85 test_loadbalance.py
test_03_list_snapshots Success 0.09 test_list_ids_parameter.py
test_02_list_templates Success 0.04 test_list_ids_parameter.py
test_01_list_volumes Success 0.03 test_list_ids_parameter.py
test_07_list_default_iso Success 0.06 test_iso.py
test_05_iso_permissions Success 0.06 test_iso.py
test_04_extract_Iso Success 5.13 test_iso.py
test_03_delete_iso Success 95.13 test_iso.py
test_02_edit_iso Success 0.06 test_iso.py
test_01_create_iso Success 21.05 test_iso.py
test_04_rvpc_internallb_haproxy_stats_on_all_interfaces Success 193.99 test_internal_lb.py
test_03_vpc_internallb_haproxy_stats_on_all_interfaces Success 152.68 test_internal_lb.py
test_02_internallb_roundrobin_1RVPC_3VM_HTTP_port80 Success 507.43 test_internal_lb.py
test_01_internallb_roundrobin_1VPC_3VM_HTTP_port80 Success 440.64 test_internal_lb.py
test_dedicateGuestVlanRange Success 10.28 test_guest_vlan_range.py
test_UpdateConfigParamWithScope Success 0.14 test_global_settings.py
test_rolepermission_lifecycle_update Success 6.18 test_dynamicroles.py
test_rolepermission_lifecycle_list Success 6.01 test_dynamicroles.py
test_rolepermission_lifecycle_delete Success 6.09 test_dynamicroles.py
test_rolepermission_lifecycle_create Success 5.90 test_dynamicroles.py
test_rolepermission_lifecycle_concurrent_updates Success 6.01 test_dynamicroles.py
test_role_lifecycle_update_role_inuse Success 5.92 test_dynamicroles.py
test_role_lifecycle_update Success 11.02 test_dynamicroles.py
test_role_lifecycle_list Success 5.99 test_dynamicroles.py
test_role_lifecycle_delete Success 10.96 test_dynamicroles.py
test_role_lifecycle_create Success 5.93 test_dynamicroles.py
test_role_inuse_deletion Success 5.89 test_dynamicroles.py
test_role_account_acls_multiple_mgmt_servers Success 8.12 test_dynamicroles.py
test_role_account_acls Success 8.24 test_dynamicroles.py
test_default_role_deletion Success 6.04 test_dynamicroles.py
test_04_create_fat_type_disk_offering Success 0.10 test_disk_offerings.py
test_03_delete_disk_offering Success 0.26 test_disk_offerings.py
test_02_edit_disk_offering Success 0.06 test_disk_offerings.py
test_02_create_sparse_type_disk_offering Success 0.07 test_disk_offerings.py
test_01_create_disk_offering Success 0.11 test_disk_offerings.py
test_deployvm_userdispersing Success 20.66 test_deploy_vms_with_varied_deploymentplanners.py
test_deployvm_userconcentrated Success 20.61 test_deploy_vms_with_varied_deploymentplanners.py
test_deployvm_firstfit Success 65.74 test_deploy_vms_with_varied_deploymentplanners.py
test_deployvm_userdata_post Success 10.37 test_deploy_vm_with_userdata.py
test_deployvm_userdata Success 70.80 test_deploy_vm_with_userdata.py
test_02_deploy_vm_root_resize Success 6.02 test_deploy_vm_root_resize.py
test_01_deploy_vm_root_resize Success 6.04 test_deploy_vm_root_resize.py
test_00_deploy_vm_root_resize Success 227.70 test_deploy_vm_root_resize.py
test_deploy_vm_from_iso Success 207.53 test_deploy_vm_iso.py
test_DeployVmAntiAffinityGroup Success 60.99 test_affinity_groups.py
test_change_service_offering_for_vm_with_snapshots Skipped 0.00 test_vm_snapshots.py
test_01_test_vm_volume_snapshot Skipped 0.00 test_vm_snapshots.py
test_06_copy_template Skipped 0.00 test_templates.py
test_static_role_account_acls Skipped 0.02 test_staticroles.py
test_11_ss_nfs_version_on_ssvm Skipped 0.02 test_ssvm.py
test_01_scale_vm Skipped 0.00 test_scale_vm.py
test_01_primary_storage_iscsi Skipped 0.05 test_primary_storage.py
test_nested_virtualization_vmware Skipped 0.00 test_nested_virtualization.py
test_06_copy_iso Skipped 0.00 test_iso.py
test_deploy_vgpu_enabled_vm Skipped 0.03 test_deploy_vgpu_enabled_vm.py
test_3d_gpu_support Skipped 0.04 test_deploy_vgpu_enabled_vm.py

@blueorangutan
Copy link

Trillian test result (tid-875)
Environment: kvm-centos7 (x2), Advanced Networking with Mgmt server 7
Total time taken: 27492 seconds
Marvin logs: https://github.com/blueorangutan/acs-prs/releases/download/trillian/pr1773-t875-kvm-centos7.zip
Intermitten failure detected: /marvin/tests/smoke/test_privategw_acl.py
Intermitten failure detected: /marvin/tests/smoke/test_snapshots.py
Test completed. 47 look ok, 2 have error(s)

Test Result Time (s) Test File
test_04_rvpc_privategw_static_routes Failure 325.34 test_privategw_acl.py
test_02_list_snapshots_with_removed_data_store Error 0.04 test_snapshots.py
test_01_vpc_site2site_vpn Success 149.78 test_vpc_vpn.py
test_01_vpc_remote_access_vpn Success 66.19 test_vpc_vpn.py
test_01_redundant_vpc_site2site_vpn Success 226.19 test_vpc_vpn.py
test_02_VPC_default_routes Success 259.80 test_vpc_router_nics.py
test_01_VPC_nics_after_destroy Success 518.66 test_vpc_router_nics.py
test_05_rvpc_multi_tiers Success 510.72 test_vpc_redundant.py
test_04_rvpc_network_garbage_collector_nics Success 1302.14 test_vpc_redundant.py
test_03_create_redundant_VPC_1tier_2VMs_2IPs_2PF_ACL_reboot_routers Success 533.12 test_vpc_redundant.py
test_02_redundant_VPC_default_routes Success 754.46 test_vpc_redundant.py
test_01_create_redundant_VPC_2tiers_4VMs_4IPs_4PF_ACL Success 1284.66 test_vpc_redundant.py
test_09_delete_detached_volume Success 151.34 test_volumes.py
test_08_resize_volume Success 156.35 test_volumes.py
test_07_resize_fail Success 156.41 test_volumes.py
test_06_download_detached_volume Success 156.27 test_volumes.py
test_05_detach_volume Success 155.83 test_volumes.py
test_04_delete_attached_volume Success 146.14 test_volumes.py
test_03_download_attached_volume Success 156.23 test_volumes.py
test_02_attach_volume Success 124.17 test_volumes.py
test_01_create_volume Success 711.19 test_volumes.py
test_03_delete_vm_snapshots Success 275.21 test_vm_snapshots.py
test_02_revert_vm_snapshots Success 95.72 test_vm_snapshots.py
test_01_create_vm_snapshots Success 163.70 test_vm_snapshots.py
test_deploy_vm_multiple Success 272.73 test_vm_life_cycle.py
test_deploy_vm Success 0.03 test_vm_life_cycle.py
test_advZoneVirtualRouter Success 0.02 test_vm_life_cycle.py
test_10_attachAndDetach_iso Success 26.62 test_vm_life_cycle.py
test_09_expunge_vm Success 125.31 test_vm_life_cycle.py
test_08_migrate_vm Success 35.84 test_vm_life_cycle.py
test_07_restore_vm Success 0.14 test_vm_life_cycle.py
test_06_destroy_vm Success 125.82 test_vm_life_cycle.py
test_03_reboot_vm Success 125.85 test_vm_life_cycle.py
test_02_start_vm Success 10.16 test_vm_life_cycle.py
test_01_stop_vm Success 40.29 test_vm_life_cycle.py
test_CreateTemplateWithDuplicateName Success 35.39 test_templates.py
test_08_list_system_templates Success 0.03 test_templates.py
test_07_list_public_templates Success 0.04 test_templates.py
test_05_template_permissions Success 0.06 test_templates.py
test_04_extract_template Success 5.14 test_templates.py
test_03_delete_template Success 5.10 test_templates.py
test_02_edit_template Success 90.18 test_templates.py
test_01_create_template Success 35.38 test_templates.py
test_10_destroy_cpvm Success 136.43 test_ssvm.py
test_09_destroy_ssvm Success 163.10 test_ssvm.py
test_08_reboot_cpvm Success 101.51 test_ssvm.py
test_07_reboot_ssvm Success 133.59 test_ssvm.py
test_06_stop_cpvm Success 131.69 test_ssvm.py
test_05_stop_ssvm Success 133.64 test_ssvm.py
test_04_cpvm_internals Success 1.39 test_ssvm.py
test_03_ssvm_internals Success 3.76 test_ssvm.py
test_02_list_cpvm_vm Success 0.12 test_ssvm.py
test_01_list_sec_storage_vm Success 0.12 test_ssvm.py
test_01_snapshot_root_disk Success 11.11 test_snapshots.py
test_04_change_offering_small Success 239.57 test_service_offerings.py
test_03_delete_service_offering Success 0.04 test_service_offerings.py
test_02_edit_service_offering Success 0.05 test_service_offerings.py
test_01_create_service_offering Success 0.10 test_service_offerings.py
test_02_sys_template_ready Success 0.12 test_secondary_storage.py
test_01_sys_vm_start Success 0.17 test_secondary_storage.py
test_09_reboot_router Success 35.31 test_routers.py
test_08_start_router Success 25.26 test_routers.py
test_07_stop_router Success 10.16 test_routers.py
test_06_router_advanced Success 0.06 test_routers.py
test_05_router_basic Success 0.04 test_routers.py
test_04_restart_network_wo_cleanup Success 5.62 test_routers.py
test_03_restart_network_cleanup Success 50.43 test_routers.py
test_02_router_internal_adv Success 0.83 test_routers.py
test_01_router_internal_basic Success 0.48 test_routers.py
test_router_dns_guestipquery Success 74.63 test_router_dns.py
test_router_dns_externalipquery Success 0.08 test_router_dns.py
test_router_dhcphosts Success 292.27 test_router_dhcphosts.py
test_router_dhcp_opts Success 21.48 test_router_dhcphosts.py
test_01_updatevolumedetail Success 0.07 test_resource_detail.py
test_01_reset_vm_on_reboot Success 130.88 test_reset_vm_on_reboot.py
test_createRegion Success 0.04 test_regions.py
test_create_pvlan_network Success 5.21 test_pvlan.py
test_dedicatePublicIpRange Success 1.02 test_public_ip_range.py
test_03_vpc_privategw_restart_vpc_cleanup Success 485.09 test_privategw_acl.py
test_02_vpc_privategw_static_routes Success 360.16 test_privategw_acl.py
test_01_vpc_privategw_acl Success 92.19 test_privategw_acl.py
test_01_primary_storage_nfs Success 35.74 test_primary_storage.py
test_createPortablePublicIPRange Success 15.19 test_portable_publicip.py
test_createPortablePublicIPAcquire Success 15.42 test_portable_publicip.py
test_isolate_network_password_server Success 59.09 test_password_server.py
test_UpdateStorageOverProvisioningFactor Success 0.12 test_over_provisioning.py
test_oobm_zchange_password Success 30.61 test_outofbandmanagement.py
test_oobm_multiple_mgmt_server_ownership Success 16.32 test_outofbandmanagement.py
test_oobm_issue_power_status Success 10.23 test_outofbandmanagement.py
test_oobm_issue_power_soft Success 15.33 test_outofbandmanagement.py
test_oobm_issue_power_reset Success 15.34 test_outofbandmanagement.py
test_oobm_issue_power_on Success 15.35 test_outofbandmanagement.py
test_oobm_issue_power_off Success 10.31 test_outofbandmanagement.py
test_oobm_issue_power_cycle Success 15.32 test_outofbandmanagement.py
test_oobm_enabledisable_across_clusterzones Success 87.68 test_outofbandmanagement.py
test_oobm_enable_feature_valid Success 5.15 test_outofbandmanagement.py
test_oobm_enable_feature_invalid Success 0.08 test_outofbandmanagement.py
test_oobm_disable_feature_valid Success 5.17 test_outofbandmanagement.py
test_oobm_disable_feature_invalid Success 0.09 test_outofbandmanagement.py
test_oobm_configure_invalid_driver Success 0.08 test_outofbandmanagement.py
test_oobm_configure_default_driver Success 0.07 test_outofbandmanagement.py
test_oobm_background_powerstate_sync Success 23.43 test_outofbandmanagement.py
test_extendPhysicalNetworkVlan Success 15.30 test_non_contigiousvlan.py
test_01_nic Success 409.21 test_nic.py
test_releaseIP Success 253.50 test_network.py
test_reboot_router Success 413.87 test_network.py
test_public_ip_user_account Success 10.26 test_network.py
test_public_ip_admin_account Success 40.27 test_network.py
test_network_rules_acquired_public_ip_3_Load_Balancer_Rule Success 66.67 test_network.py
test_network_rules_acquired_public_ip_2_nat_rule Success 61.46 test_network.py
test_network_rules_acquired_public_ip_1_static_nat_rule Success 120.61 test_network.py
test_delete_account Success 288.66 test_network.py
test_02_port_fwd_on_non_src_nat Success 55.60 test_network.py
test_01_port_fwd_on_src_nat Success 111.90 test_network.py
test_nic_secondaryip_add_remove Success 218.16 test_multipleips_per_nic.py
login_test_saml_user Success 19.48 test_login.py
test_assign_and_removal_lb Success 133.09 test_loadbalance.py
test_02_create_lb_rule_non_nat Success 187.08 test_loadbalance.py
test_01_create_lb_rule_src_nat Success 207.68 test_loadbalance.py
test_03_list_snapshots Success 0.06 test_list_ids_parameter.py
test_02_list_templates Success 0.04 test_list_ids_parameter.py
test_01_list_volumes Success 0.03 test_list_ids_parameter.py
test_07_list_default_iso Success 0.06 test_iso.py
test_05_iso_permissions Success 0.07 test_iso.py
test_04_extract_Iso Success 5.23 test_iso.py
test_03_delete_iso Success 95.15 test_iso.py
test_02_edit_iso Success 0.07 test_iso.py
test_01_create_iso Success 21.02 test_iso.py
test_04_rvpc_internallb_haproxy_stats_on_all_interfaces Success 197.91 test_internal_lb.py
test_03_vpc_internallb_haproxy_stats_on_all_interfaces Success 132.66 test_internal_lb.py
test_02_internallb_roundrobin_1RVPC_3VM_HTTP_port80 Success 521.59 test_internal_lb.py
test_01_internallb_roundrobin_1VPC_3VM_HTTP_port80 Success 417.73 test_internal_lb.py
test_dedicateGuestVlanRange Success 10.27 test_guest_vlan_range.py
test_UpdateConfigParamWithScope Success 0.13 test_global_settings.py
test_rolepermission_lifecycle_update Success 6.13 test_dynamicroles.py
test_rolepermission_lifecycle_list Success 5.97 test_dynamicroles.py
test_rolepermission_lifecycle_delete Success 6.13 test_dynamicroles.py
test_rolepermission_lifecycle_create Success 5.87 test_dynamicroles.py
test_rolepermission_lifecycle_concurrent_updates Success 5.97 test_dynamicroles.py
test_role_lifecycle_update_role_inuse Success 5.87 test_dynamicroles.py
test_role_lifecycle_update Success 10.96 test_dynamicroles.py
test_role_lifecycle_list Success 5.88 test_dynamicroles.py
test_role_lifecycle_delete Success 10.90 test_dynamicroles.py
test_role_lifecycle_create Success 5.89 test_dynamicroles.py
test_role_inuse_deletion Success 5.89 test_dynamicroles.py
test_role_account_acls_multiple_mgmt_servers Success 8.34 test_dynamicroles.py
test_role_account_acls Success 8.21 test_dynamicroles.py
test_default_role_deletion Success 5.95 test_dynamicroles.py
test_04_create_fat_type_disk_offering Success 0.06 test_disk_offerings.py
test_03_delete_disk_offering Success 0.04 test_disk_offerings.py
test_02_edit_disk_offering Success 0.05 test_disk_offerings.py
test_02_create_sparse_type_disk_offering Success 0.06 test_disk_offerings.py
test_01_create_disk_offering Success 0.10 test_disk_offerings.py
test_deployvm_userdispersing Success 20.58 test_deploy_vms_with_varied_deploymentplanners.py
test_deployvm_userconcentrated Success 15.59 test_deploy_vms_with_varied_deploymentplanners.py
test_deployvm_firstfit Success 60.68 test_deploy_vms_with_varied_deploymentplanners.py
test_deployvm_userdata_post Success 10.54 test_deploy_vm_with_userdata.py
test_deployvm_userdata Success 50.73 test_deploy_vm_with_userdata.py
test_02_deploy_vm_root_resize Success 6.03 test_deploy_vm_root_resize.py
test_01_deploy_vm_root_resize Success 5.94 test_deploy_vm_root_resize.py
test_00_deploy_vm_root_resize Success 212.66 test_deploy_vm_root_resize.py
test_deploy_vm_from_iso Success 202.41 test_deploy_vm_iso.py
test_DeployVmAntiAffinityGroup Success 50.85 test_affinity_groups.py
test_change_service_offering_for_vm_with_snapshots Skipped 0.00 test_vm_snapshots.py
test_01_test_vm_volume_snapshot Skipped 0.00 test_vm_snapshots.py
test_06_copy_template Skipped 0.00 test_templates.py
test_static_role_account_acls Skipped 0.02 test_staticroles.py
test_11_ss_nfs_version_on_ssvm Skipped 0.02 test_ssvm.py
test_01_scale_vm Skipped 0.00 test_scale_vm.py
test_01_primary_storage_iscsi Skipped 0.03 test_primary_storage.py
test_nested_virtualization_vmware Skipped 0.00 test_nested_virtualization.py
test_06_copy_iso Skipped 0.00 test_iso.py
test_deploy_vgpu_enabled_vm Skipped 0.03 test_deploy_vgpu_enabled_vm.py
test_3d_gpu_support Skipped 0.03 test_deploy_vgpu_enabled_vm.py

@serg38
Copy link

serg38 commented Feb 21, 2017

@jburwell That was default behavior for few years to allow deletion of the template even if active VMs exist. Deletion of the template on secondary doesn't remove the template copy on primary storage so all existing VM function work just fine.
From my prospective if we allow forced deletion from the UI I am fine with switching default to forced=no and documenting it in Release Notes.

@koushik-das
Copy link
Contributor

I think changing the default API behaviour for fixing a bug should be ok as long as documented properly. Also in this case the deletion criteria is made more strict, so there is no unwanted data loss.

@priyankparihar
Copy link
Contributor Author

Hi @serg38 @ustcweizhou @koushik-das @jburwell @borisstoyanov ,
Thanks for valuable insight. Code is modified according to your suggestion. :)

@borisstoyanov
Copy link
Contributor

@blueorangutan package

@blueorangutan
Copy link

@borisstoyanov a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.

@serg38
Copy link

serg38 commented Feb 28, 2017

Thanks @priyankparihar . We verified in our environment that all is working fine including UI part.
LGTM
I think this one is
tag:mergeready

Copy link
Contributor

@borisstoyanov borisstoyanov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM based on test results and code review

@ustcweizhou
Copy link
Contributor

LGTM

@priyankparihar
Copy link
Contributor Author

@karuturi This seems to be ready for merge (tag:mergeready).
It has 3 LGTMs and tests are passed.

@SudharmaJain
Copy link
Contributor

@priyankparihar This PR will break the reset VM feature. I think we should also prevent reset vm if the template is deleted.

@priyankparihar
Copy link
Contributor Author

Hi @SudharmaJain,

This PR will break the reset VM feature. I think we should also prevent reset vm if the template is deleted.

'Force' option is introduced to solve above mentioned problem.

@rohityadavcloud
Copy link
Member

@blueorangutan package

@blueorangutan
Copy link

@rhtyd a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.

@blueorangutan
Copy link

Packaging result: ✖centos6 ✖centos7 ✖debian. JID-1292

@rohityadavcloud rohityadavcloud added this to the 4.11 milestone Dec 10, 2017
@rohityadavcloud
Copy link
Member

@priyankparihar fix conflicts please.

@rohityadavcloud
Copy link
Member

@blueorangutan package

@blueorangutan
Copy link

@rhtyd a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.

@blueorangutan
Copy link

Packaging result: ✔centos6 ✔centos7 ✔debian. JID-1498

@rohityadavcloud
Copy link
Member

@blueorangutan package

@blueorangutan
Copy link

@rhtyd a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.

@blueorangutan
Copy link

Packaging result: ✔centos6 ✔centos7 ✔debian. JID-1514

@rohityadavcloud
Copy link
Member

@blueorangutan package

@blueorangutan
Copy link

@rhtyd a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.

@blueorangutan
Copy link

Packaging result: ✔centos6 ✔centos7 ✔debian. JID-1540

@rohityadavcloud
Copy link
Member

@blueorangutan test

@blueorangutan
Copy link

@rhtyd a Trillian-Jenkins test job (centos7 mgmt + kvm-centos7) has been kicked to run smoke tests

@blueorangutan
Copy link

Trillian test result (tid-1983)
Environment: kvm-centos7 (x2), Advanced Networking with Mgmt server 7
Total time taken: 37390 seconds
Marvin logs: https://github.com/blueorangutan/acs-prs/releases/download/trillian/pr1773-t1983-kvm-centos7.zip
Intermitten failure detected: /marvin/tests/smoke/test_deploy_virtio_scsi_vm.py
Smoke tests completed. 66 look OK, 0 have error(s)
Only failed tests results shown below:

Test Result Time (s) Test File

@rohityadavcloud
Copy link
Member

Merging this based on code review lgtms and test results.

@rohityadavcloud rohityadavcloud merged commit 25b63f5 into apache:master Jan 4, 2018
lucas-a-martins pushed a commit to scclouds/cloudstack that referenced this pull request Jan 29, 2024
Habilitação da funcionalidade de _over-provisioning_ para _primary storages_ do tipo `SharedMountPoint`

Closes apache#1773

See merge request scclouds/scclouds!716
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants