-
Notifications
You must be signed in to change notification settings - Fork 121
Description
Convert the Automate methods to new style using classes to facilitate testing outside the Automate Engine.
Notes:
- Each method needs to be a class under a well defined namespace
- Each method needs to have a corresponding spec using the same path as the method file.
- Most of the methods can be tested outside of the Automate Engine using
- Mock Service
- Mock Objects
- The methods should not have an exit call since that exits RSpec.
- As each method is converted we should check the box next to the item
- Look for methods which might be the same in Cloud and Infrastructure namespaces.
- @billfitzgerald0120 is working on consolidating the email methods so we should check with him before converting email methods.
- When calling the VMDB objects please ensure that they are service model objects and not the actual vmdb objects.
- Why is this necessary
if __FILE__ == $PROGRAM_NAME
MyMethodClass.new.main
end
This idea is borrowed from Python, which allows us to source in the file without executing any code. The if block gets executed only when we directly pass in the file to the ruby interpreter. When we test the method script we source in the file in the spec and then instantiate it for testing, it allows us to pass in a mock service for testing.
Good sample of a method
https://github.com/ManageIQ/manageiq-content/blob/master/content/automate/ManageIQ/Cloud/Orchestration/Operations/Methods.class/__methods__/available_availability_zones.rb
Good sample of a spec
https://github.com/ManageIQ/manageiq-content/blob/master/spec/content/automate/ManageIQ/Cloud/Orchestration/Operations/Methods.class/__methods__/available_availability_zones_spec.rb
In the spec the line
require_domain_file
loads the method file from the correct directory
The methods have been categorized based on different lifecycle's
- Provisioning
- Retirement
- Reconfigure/Reconfiguration
- Operations
- Migrate
ManageIQ/Cloud/Orchestration/Operations
- /Methods.class/methods/available_availability_zones.rb
- /Methods.class/methods/available_flavors.rb
- /Methods.class/methods/available_images.rb
- /Methods.class/methods/available_os_types.rb
- /Methods.class/methods/available_resource_groups.rb
- /Methods.class/methods/available_tenants.rb
- /Methods.class/methods/available_vdc_networks.rb
ManageIQ/Cloud/Orchestration/Provisioning
- /Email.class/methods/serviceprovision_complete.rb Empty
- /Email.class/methods/servicetemplateprovisionrequest_approved.rb
- /StateMachines/Methods.class/methods/check_provisioned.rb
- /StateMachines/Methods.class/methods/postprovision.rb
- /StateMachines/Methods.class/methods/preprovision.rb
- /StateMachines/Methods.class/methods/provision.rb
- /StateMachines/Provision.class/methods/update_serviceprovision_status.rb
ManageIQ/Cloud/Orchestration/Reconfiguration
- /Email.class/methods/servicereconfigure_complete.rb
- /Email.class/methods/servicereconfigurerequest_approved.rb
- /StateMachines/Methods.class/methods/check_reconfigured.rb
- /StateMachines/Methods.class/methods/postreconfigure.rb
- /StateMachines/Methods.class/methods/prereconfigure.rb
- /StateMachines/Methods.class/methods/reconfigure.rb
- /StateMachines/Reconfigure.class/methods/update_servicereconfigure_status.rb
ManageIQ/Cloud/Orchestration/Retirement
- /Email.class/methods/stack_retirement_emails.rb
- /StateMachines/Methods.class/methods/check_removed_from_provider.rb
- /StateMachines/Methods.class/methods/delete_from_vmdb.rb
- /StateMachines/Methods.class/methods/finish_retirement.rb
- /StateMachines/Methods.class/methods/remove_from_provider.rb
- /StateMachines/Methods.class/methods/start_retirement.rb
- /StateMachines/StackRetirement.class/methods/update_retirement_status.rb
ManageIQ/Cloud/VM/Provisioning
- /Email.class/methods/miqprovision_complete.rb
- /Email.class/methods/miqprovisionrequest_approved.rb
- /Email.class/methods/miqprovisionrequest_denied.rb
- /Email.class/methods/miqprovisionrequest_pending.rb
- /Naming.class/methods/vmname.rb
- /Placement.class/methods/best_fit_amazon.rb
- /Placement.class/methods/best_fit_azure.rb
- /Placement.class/methods/best_fit_google.rb
- /Placement.class/methods/best_fit_openstack.rb
- /Profile.class/methods/get_deploy_dialog.rb
- /Profile.class/methods/vm_dialog_name_prefix.rb
- /StateMachines/Methods.class/methods/amazon_customizerequest.rb
- /StateMachines/Methods.class/methods/amazon_postprovision.rb
- /StateMachines/Methods.class/methods/amazon_preprovision.rb
- /StateMachines/Methods.class/methods/amazon_preprovision_clone_to_vm.rb
- /StateMachines/Methods.class/methods/check_provisioned.rb
- /StateMachines/Methods.class/methods/openstack_customizerequest.rb
- /StateMachines/Methods.class/methods/openstack_postprovision.rb
- /StateMachines/Methods.class/methods/openstack_preprovision.rb
- /StateMachines/Methods.class/methods/openstack_preprovision_clone_to_vm.rb
- /StateMachines/Methods.class/methods/postprovision.rb
- /StateMachines/Methods.class/methods/preprovision.rb
- /StateMachines/Methods.class/methods/provision.rb
- /StateMachines/Methods.class/methods/scan.rb
- /StateMachines/ProvisionRequestApproval.class/methods/approve_request.rb
- /StateMachines/ProvisionRequestApproval.class/methods/pending_request.rb
- /StateMachines/ProvisionRequestApproval.class/methods/validate_request.rb
- /StateMachines/ProvisionRequestQuotaVerification.class/methods/rejected.rb
- /StateMachines/ProvisionRequestQuotaVerification.class/methods/validate_quotas.rb
- /StateMachines/VMProvision_VM.class/methods/update_provision_status.rb
ManageIQ/Cloud/VM/Retirement
- /Email.class/methods/vm_retire_extend.rb
- /Email.class/methods/vm_retirement_emails.rb
- /StateMachines/Methods.class/methods/amazon_check_pre_retirement.rb
- /StateMachines/Methods.class/methods/amazon_pre_retirement.rb
- /StateMachines/Methods.class/methods/check_deleted_from_provider.rb
- /StateMachines/Methods.class/methods/check_powered_off.rb
- /StateMachines/Methods.class/methods/check_pre_retirement.rb
- /StateMachines/Methods.class/methods/check_removed_from_provider.rb
- /StateMachines/Methods.class/methods/delete_from_vmdb.rb
- /StateMachines/Methods.class/methods/finish_retirement.rb
- /StateMachines/Methods.class/methods/openstack_pre_retirement.rb
- /StateMachines/Methods.class/methods/pre_retirement.rb
- /StateMachines/Methods.class/methods/remove_from_provider.rb
- /StateMachines/Methods.class/methods/start_retirement.rb
- /StateMachines/VMRetirement.class/methods/update_retirement_status.rb
ManageIQ/ConfigurationManagement/AnsibleTower/Operations
- /StateMachines/Job.class/methods/launch_ansible_job.rb
- /StateMachines/Job.class/methods/wait_for_completion.rb
- /StateMachines/Job.class/methods/wait_for_ip.rb
ManageIQ/ConfigurationManagement/AnsibleTower/Service/Provisioning
- /Email.class/methods/serviceprovision_complete.rb
- /Email.class/methods/servicetemplateprovisionrequest_approved.rb
- /StateMachines/Provision.class/methods/check_provisioned.rb
- /StateMachines/Provision.class/methods/post_provision.rb
- /StateMachines/Provision.class/methods/preprovision.rb
- /StateMachines/Provision.class/methods/provision.rb
- /StateMachines/Provision.class/methods/update_serviceprovision_status.rb
ManageIQ/Control/
- /Email.class/methods/ems_cluster_alert.rb
- /Email.class/methods/ext_management_system_alert.rb
- /Email.class/methods/host_alert.rb
- /Email.class/methods/miq_server_alert.rb
- /Email.class/methods/parse_alerts.rb
- /Email.class/methods/storage_alert.rb
- /Email.class/methods/vm_alert.rb
ManageIQ/Deployment/ContainerProvider/System/
- /StateMachine/Deployment.class/methods/add_provider.rb
- /StateMachine/Deployment.class/methods/analyze_deployment.rb
- StateMachine/Deployment.class/methods/check_ssh.rb
- /StateMachine/Deployment.class/methods/cleanup.rb
- /StateMachine/Deployment.class/methods/deployment.rb
- /StateMachine/Deployment.class/methods/post_provision.rb
- /StateMachine/Deployment.class/methods/pre_deployment.rb
- /StateMachine/Deployment.class/methods/pre_validate.rb
- /StateMachine/Deployment.class/methods/provision.rb
ManageIQ/Infrastructure/Cluster/Operations
- /Methods.class/methods/cluster_workload_management.rb
ManageIQ/Infrastructure/Configured_System/Provisioning
- /Email.class/methods/provision_complete.rb
- /Email.class/methods/request_approved.rb
- /StateMachines/Methods.class/methods/check_provisioned.rb
- /StateMachines/Methods.class/methods/preprovision.rb
- /StateMachines/Methods.class/methods/provision.rb
- /StateMachines/Provision.class/methods/update_provision_status.rb
- /StateMachines/ProvisionRequestApproval.class/methods/approve_request.rb
- /StateMachines/ProvisionRequestApproval.class/methods/pending_request.rb
- /StateMachines/ProvisionRequestApproval.class/methods/validate_request.rb
- /StateMachines/ProvisionRequestQuotaVerification.class/methods/rejected.rb
- /StateMachines/ProvisionRequestQuotaVerification.class/methods/validate_quotas.rb
ManageIQ/Infrastructure/Host/Operations
- /Methods.class/methods/host_evacuation.rb
ManageIQ/Infrastructure/Host/Provisioning
- /Email.class/methods/miqhostprovision_complete.rb
- /Email.class/methods/miqhostprovisionrequest_approved.rb
- /Profile.class/methods/get_deploy_dialog.rb
- /StateMachines/HostProvision.class/methods/update_provision_status.rb
- /StateMachines/Methods.class/methods/check_provisioned.rb
- /StateMachines/Methods.class/methods/customizerequest.rb
- /StateMachines/Methods.class/methods/postprovision_host.rb
- /StateMachines/Methods.class/methods/preprovision_host.rb
- /StateMachines/Methods.class/methods/provision.rb
ManageIQ/Infrastructure/VM/Migrate
- /Email.class/methods/vmmigraterequest_approved.rb
- /Email.class/methods/vmmigratetask_complete.rb
- /Profile.class/methods/get_deploy_dialog.rb
- /StateMachines/Methods.class/methods/besthost.rb
- /StateMachines/Methods.class/methods/beststorage.rb
- /StateMachines/Methods.class/methods/checkmigration.rb
- /StateMachines/Methods.class/methods/migrate.rb
- /StateMachines/Methods.class/methods/postmigration.rb
- /StateMachines/Methods.class/methods/premigration.rb
- /StateMachines/VMMigrate.class/methods/update_migration_status.rb
ManageIQ/Infrastructure/VM/Operations
- /Methods.class/methods/vm_placement_optimization.rb
ManageIQ/Infrastructure/VM/Provisioning
- /Email.class/methods/miqprovision_complete.rb
- /Email.class/methods/miqprovisionrequest_approved.rb
- /Email.class/methods/miqprovisionrequest_denied.rb
- /Email.class/methods/miqprovisionrequest_pending.rb
- /Naming.class/methods/vmname.rb
- /Placement.class/methods/microsoft_best_fit_least_utilized.rb
- /Placement.class/methods/redhat_best_fit_cluster.rb
- /Placement.class/methods/vmware_best_fit_least_utilized.rb
- /Profile.class/methods/get_deploy_dialog.rb
- /Profile.class/methods/vm_dialog_name_prefix.rb
- /StateMachines/Methods.class/methods/check_provisioned.rb
- /StateMachines/Methods.class/methods/provision.rb
- /StateMachines/Methods.class/methods/redhat_customizerequest.rb
- /StateMachines/Methods.class/methods/redhat_postprovision.rb
- /StateMachines/Methods.class/methods/redhat_preprovision.rb
- /StateMachines/Methods.class/methods/redhat_preprovision_clone_to_template.rb
- /StateMachines/Methods.class/methods/redhat_preprovision_clone_to_vm.rb
- /StateMachines/Methods.class/methods/scan.rb
- /StateMachines/Methods.class/methods/vmware_customizerequest.rb
- /StateMachines/Methods.class/methods/vmware_postprovision.rb
- /StateMachines/Methods.class/methods/vmware_preprovision.rb
- /StateMachines/Methods.class/methods/vmware_preprovision_clone_to_template.rb
- /StateMachines/Methods.class/methods/vmware_preprovision_clone_to_vm.rb
- /StateMachines/ProvisionRequestApproval.class/methods/approve_request.rb
- /StateMachines/ProvisionRequestApproval.class/methods/pending_request.rb
- /StateMachines/ProvisionRequestApproval.class/methods/validate_request.rb
- /StateMachines/ProvisionRequestQuotaVerification.class/methods/rejected.rb
- /StateMachines/ProvisionRequestQuotaVerification.class/methods/validate_quotas.rb
- /StateMachines/VMProvision_Template.class/methods/update_provision_status.rb
- /StateMachines/VMProvision_VM.class/methods/update_provision_status.rb
ManageIQ/Infrastructure/VM/Reconfigure
- /Email.class/methods/vmreconfigure_request_approved.rb
- /Email.class/methods/vmreconfigure_task_complete.rb
ManageIQ/Infrastructure/VM/Retirement
- /Email.class/methods/vm_retire_extend.rb
- /Email.class/methods/vm_retirement_emails.rb
- /StateMachines/Methods.class/methods/check_powered_off.rb
- /StateMachines/Methods.class/methods/check_pre_retirement.rb
- /StateMachines/Methods.class/methods/check_removed_from_provider.rb
- /StateMachines/Methods.class/methods/delete_from_vmdb.rb
- /StateMachines/Methods.class/methods/finish_retirement.rb
- /StateMachines/Methods.class/methods/power_off.rb
- /StateMachines/Methods.class/methods/pre_retirement.rb
- /StateMachines/Methods.class/methods/remove_from_provider.rb
- /StateMachines/Methods.class/methods/start_retirement.rb
- /StateMachines/VMRetirement.class/methods/update_retirement_status.rb
ManageIQ/Service/Provisioning/
- /Email.class/methods/serviceprovision_complete.rb
- /Email.class/methods/servicetemplateprovisionrequest_approved.rb
- /Email.class/methods/servicetemplateprovisionrequest_denied.rb
- /Email.class/methods/servicetemplateprovisionrequest_pending.rb
- /Email.class/methods/servicetemplateprovisionrequest_warning.rb
- /ServiceFilter.class/methods/filterbydialogparameters.rb
- /StateMachines/Methods.class/methods/catalogbundleinitialization.rb
- /StateMachines/Methods.class/methods/catalogiteminitialization.rb
- /StateMachines/Methods.class/methods/check_provisioned.rb
- /StateMachines/Methods.class/methods/dialog_parser.rb
- /StateMachines/Methods.class/methods/groupsequencecheck.rb
- /StateMachines/Methods.class/methods/provision.rb
- /StateMachines/Methods.class/methods/statemachine_finished.rb
- /StateMachines/ServiceProvisionRequestApproval.class/methods/approve_request.rb
- /StateMachines/ServiceProvisionRequestApproval.class/methods/pending_request.rb
- /StateMachines/ServiceProvisionRequestApproval.class/methods/validate_request.rb
- /StateMachines/ServiceProvision_Template.class/methods/update_serviceprovision_status.rb
ManageIQ/Service/Retirement
- /StateMachines/Methods.class/methods/check_service_retired.rb
- /StateMachines/Methods.class/methods/delete_service_from_vmdb.rb
- /StateMachines/Methods.class/methods/finish_retirement.rb
- /StateMachines/Methods.class/methods/get_retirement_entrypoint.rb
- /StateMachines/Methods.class/methods/mark_service_as_retired.rb
- /StateMachines/Methods.class/methods/retire_service.rb
- /StateMachines/Methods.class/methods/start_retirement.rb
- /StateMachines/ServiceRetirement.class/methods/update_service_retirement_status.rb
ManageIQ/System
- /CommonMethods/QuotaMethods.class/methods/limits.rb
- /CommonMethods/QuotaMethods.class/methods/quota_source.rb
- /CommonMethods/QuotaMethods.class/methods/requested.rb
- /CommonMethods/QuotaMethods.class/methods/used.rb
- /CommonMethods/QuotaMethods.class/methods/validate_quota.rb
- /CommonMethods/QuotaStateMachine.class/methods/rejected.rb
- /CommonMethods/StateMachineMethods.class/methods/task_finished.rb
- /Policy.class/methods/get_request_type.rb
- /Policy.class/methods/miqhostprovision_auto_approve.rb
- /Policy.class/methods/vmmigraterequest_auto_approve.rb
- /Policy.class/methods/vmreconfigure_request_auto_approve.rb
- /Request.class/methods/inspectme.rb
ManageIQ/Transformation
- /StateMachines/TransformationPlanRequestApproval.class/methods/approve_request.rb
- /StateMachines/TransformationPlanRequestApproval.class/methods/deny_request.rb
- /StateMachines/TransformationPlanRequestApproval.class/methods/validate_request.rb