From 573e16a12d33b7cb025d0a7719ddaaafef930723 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Kom=C3=A1nek?= Date: Fri, 13 Jan 2017 15:20:38 +0100 Subject: [PATCH 1/4] Refactoring Cloud Orchestration update_serviceprovision_status. --- .../update_serviceprovision_status.rb | 60 +++++++++++----- .../update_serviceprovision_status_spec.rb | 72 +++++++++++++++++++ 2 files changed, 115 insertions(+), 17 deletions(-) create mode 100644 spec/content/automate/ManageIQ/Cloud/Orchestration/Provisioning/StateMachines/Provision.class/__methods__/update_serviceprovision_status_spec.rb diff --git a/content/automate/ManageIQ/Cloud/Orchestration/Provisioning/StateMachines/Provision.class/__methods__/update_serviceprovision_status.rb b/content/automate/ManageIQ/Cloud/Orchestration/Provisioning/StateMachines/Provision.class/__methods__/update_serviceprovision_status.rb index 28678a9b3..bc2b5bfc8 100644 --- a/content/automate/ManageIQ/Cloud/Orchestration/Provisioning/StateMachines/Provision.class/__methods__/update_serviceprovision_status.rb +++ b/content/automate/ManageIQ/Cloud/Orchestration/Provisioning/StateMachines/Provision.class/__methods__/update_serviceprovision_status.rb @@ -2,24 +2,50 @@ # Description: This method updates the service provision status. # Required inputs: status # +module ManageIQ + module Automate + module Cloud + module Orchestration + module Provisioning + module StateMachines + class UpdateServiceProvisionStatus + def initialize(handle = $evm) + @handle = handle + end -prov = $evm.root['service_template_provision_task'] + def main + prov = @handle.root['service_template_provision_task'] -unless prov - $evm.log(:error, "Service Template Provision Task not provided") - exit(MIQ_STOP) -end + if prov.nil? + @handle.log(:error, "Service Template Provision Task not provided") + raise "Service Template Provision Task not provided" + end + + update_status_message(prov, @handle.inputs['status']) + end -# Get status from input field status -status = $evm.inputs['status'] + private -# Update Status Message -updated_message = "Server [#{$evm.root['miq_server'].name}] " -updated_message += "Service [#{prov.destination.name}] " -updated_message += "Step [#{$evm.root['ae_state']}] " -updated_message += "Status [#{status}] " -updated_message += "Message [#{prov.message}] " -updated_message += "Current Retry Number [#{$evm.root['ae_state_retries']}]"\ - if $evm.root['ae_result'] == 'retry' -prov.miq_request.user_message = updated_message -prov.message = status + def update_status_message(prov, status) + updated_message = "Server [#{@handle.root['miq_server'].name}] " + updated_message += "Service [#{prov.destination.name}] " + updated_message += "Step [#{@handle.root['ae_state']}] " + updated_message += "Status [#{status}] " + updated_message += "Message [#{prov.message}] " + updated_message += "Current Retry Number [#{@handle.root['ae_state_retries']}]"\ + if @handle.root['ae_result'] == 'retry' + prov.miq_request.user_message = updated_message + prov.message = status + end + end + end + end + end + end + end +end + +if __FILE__ == $PROGRAM_NAME + ManageIQ::Automate::Cloud::Orchestration::Provisioning:: + StateMachines::UpdateServiceProvisionStatus.new.main +end diff --git a/spec/content/automate/ManageIQ/Cloud/Orchestration/Provisioning/StateMachines/Provision.class/__methods__/update_serviceprovision_status_spec.rb b/spec/content/automate/ManageIQ/Cloud/Orchestration/Provisioning/StateMachines/Provision.class/__methods__/update_serviceprovision_status_spec.rb new file mode 100644 index 000000000..c82e49b94 --- /dev/null +++ b/spec/content/automate/ManageIQ/Cloud/Orchestration/Provisioning/StateMachines/Provision.class/__methods__/update_serviceprovision_status_spec.rb @@ -0,0 +1,72 @@ +require_domain_file + +describe ManageIQ::Automate::Cloud::Orchestration::Provisioning::StateMachines::UpdateServiceProvisionStatus do + let(:user) { FactoryGirl.create(:user_with_group) } + let(:miq_server) { EvmSpecHelper.local_miq_server } + let(:service_orchestration) { FactoryGirl.create(:service_orchestration) } + + let(:miq_request_task) do + FactoryGirl.create(:miq_request_task, :destination => service_orchestration, + :miq_request => request, :state => 'fred') + end + + let(:request) do + FactoryGirl.create(:service_template_provision_request, :requester => user) + end + + let(:ae_service) do + Spec::Support::MiqAeMockService.new(root_object).tap do |service| + current_object = Spec::Support::MiqAeMockObject.new + current_object.parent = root_object + service.object = current_object + end + end + + let(:svc_model_miq_server) { MiqAeMethodService::MiqAeServiceMiqServer.find(miq_server.id) } + let(:svc_model_miq_request_task) { MiqAeMethodService::MiqAeServiceMiqRequestTask.find(miq_request_task.id) } + let(:svc_model_service) { MiqAeMethodService::MiqAeServiceService.find(service_orchestration.id) } + let(:svc_model_request) do + MiqAeMethodService::MiqAeServiceServiceTemplateProvisionRequest.find(request.id) + end + + context "with a stp request object" do + let(:root_hash) do + { 'service_template' => MiqAeMethodService::MiqAeServiceService.find(service_orchestration.id) } + end + + let(:root_object) do + obj = Spec::Support::MiqAeMockObject.new(root_hash) + obj["service_template_provision_task"] = svc_model_miq_request_task + obj["miq_server"] = svc_model_miq_server + obj + end + + before do + allow(ae_service).to receive(:inputs) { {'status' => "fred"} } + allow(svc_model_miq_request_task).to receive(:destination) { svc_model_service } + ae_service.root['ae_result'] = 'ok' + end + + it "method succeeds" do + described_class.new(ae_service).main + expect(svc_model_request.reload.status).to eq('Ok') + end + + it "request message set properly" do + described_class.new(ae_service).main + msg = "Server [#{miq_server.name}] Service [#{service_orchestration.name}] Step [] Status [fred] Message [] " + expect(svc_model_request.reload.message).to eq(msg) + end + end + + context "without a stp request object" do + let(:root_hash) { {} } + let(:root_object) { Spec::Support::MiqAeMockObject.new(root_hash) } + + it "method fails" do + expect { described_class.new(ae_service).main }.to raise_error( + "Service Template Provision Task not provided" + ) + end + end +end From 111d4a8390e88e6a24ec34ae172725e1f547ac55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Kom=C3=A1nek?= Date: Fri, 13 Jan 2017 15:23:34 +0100 Subject: [PATCH 2/4] Refactoring Ansibletower update_serviceprovision_status. --- .../update_serviceprovision_status.rb | 62 +++++++++++----- .../update_serviceprovision_status_spec.rb | 73 +++++++++++++++++++ 2 files changed, 118 insertions(+), 17 deletions(-) create mode 100644 spec/content/automate/ManageIQ/ConfigurationManagement/AnsibleTower/Service/Provisioning/StateMachines/Provision.class/__methods__/update_serviceprovision_status_spec.rb diff --git a/content/automate/ManageIQ/ConfigurationManagement/AnsibleTower/Service/Provisioning/StateMachines/Provision.class/__methods__/update_serviceprovision_status.rb b/content/automate/ManageIQ/ConfigurationManagement/AnsibleTower/Service/Provisioning/StateMachines/Provision.class/__methods__/update_serviceprovision_status.rb index 28678a9b3..fa00ad9cf 100644 --- a/content/automate/ManageIQ/ConfigurationManagement/AnsibleTower/Service/Provisioning/StateMachines/Provision.class/__methods__/update_serviceprovision_status.rb +++ b/content/automate/ManageIQ/ConfigurationManagement/AnsibleTower/Service/Provisioning/StateMachines/Provision.class/__methods__/update_serviceprovision_status.rb @@ -2,24 +2,52 @@ # Description: This method updates the service provision status. # Required inputs: status # +module ManageIQ + module Automate + module ConfigurationManagement + module AnsibleTower + module Service + module Provisioning + module StateMachines + class UpdateServiceProvisionStatus + def initialize(handle = $evm) + @handle = handle + end -prov = $evm.root['service_template_provision_task'] + def main + prov = @handle.root['service_template_provision_task'] -unless prov - $evm.log(:error, "Service Template Provision Task not provided") - exit(MIQ_STOP) -end + if prov.nil? + @handle.log(:error, "Service Template Provision Task not provided") + raise "Service Template Provision Task not provided" + end + + update_status_message(prov, @handle.inputs['status']) + end -# Get status from input field status -status = $evm.inputs['status'] + private -# Update Status Message -updated_message = "Server [#{$evm.root['miq_server'].name}] " -updated_message += "Service [#{prov.destination.name}] " -updated_message += "Step [#{$evm.root['ae_state']}] " -updated_message += "Status [#{status}] " -updated_message += "Message [#{prov.message}] " -updated_message += "Current Retry Number [#{$evm.root['ae_state_retries']}]"\ - if $evm.root['ae_result'] == 'retry' -prov.miq_request.user_message = updated_message -prov.message = status + def update_status_message(prov, status) + updated_message = "Server [#{@handle.root['miq_server'].name}] " + updated_message += "Service [#{prov.destination.name}] " + updated_message += "Step [#{@handle.root['ae_state']}] " + updated_message += "Status [#{status}] " + updated_message += "Message [#{prov.message}] " + updated_message += "Current Retry Number [#{@handle.root['ae_state_retries']}]"\ + if @handle.root['ae_result'] == 'retry' + prov.miq_request.user_message = updated_message + prov.message = status + end + end + end + end + end + end + end + end +end + +if __FILE__ == $PROGRAM_NAME + ManageIQ::Automate::ConfigurationManagement::AnsibleTower::Service:: + Provisioning::StateMachines::UpdateServiceProvisionStatus.new.main +end diff --git a/spec/content/automate/ManageIQ/ConfigurationManagement/AnsibleTower/Service/Provisioning/StateMachines/Provision.class/__methods__/update_serviceprovision_status_spec.rb b/spec/content/automate/ManageIQ/ConfigurationManagement/AnsibleTower/Service/Provisioning/StateMachines/Provision.class/__methods__/update_serviceprovision_status_spec.rb new file mode 100644 index 000000000..b1ac31163 --- /dev/null +++ b/spec/content/automate/ManageIQ/ConfigurationManagement/AnsibleTower/Service/Provisioning/StateMachines/Provision.class/__methods__/update_serviceprovision_status_spec.rb @@ -0,0 +1,73 @@ +require_domain_file + +describe ManageIQ::Automate::ConfigurationManagement::AnsibleTower::Service:: + Provisioning::StateMachines::UpdateServiceProvisionStatus do + let(:user) { FactoryGirl.create(:user_with_group) } + let(:miq_server) { EvmSpecHelper.local_miq_server } + let(:service_orchestration) { FactoryGirl.create(:service_orchestration) } + + let(:miq_request_task) do + FactoryGirl.create(:miq_request_task, :destination => service_orchestration, + :miq_request => request, :state => 'fred') + end + + let(:request) do + FactoryGirl.create(:service_template_provision_request, :requester => user) + end + + let(:ae_service) do + Spec::Support::MiqAeMockService.new(root_object).tap do |service| + current_object = Spec::Support::MiqAeMockObject.new + current_object.parent = root_object + service.object = current_object + end + end + + let(:svc_model_miq_server) { MiqAeMethodService::MiqAeServiceMiqServer.find(miq_server.id) } + let(:svc_model_miq_request_task) { MiqAeMethodService::MiqAeServiceMiqRequestTask.find(miq_request_task.id) } + let(:svc_model_service) { MiqAeMethodService::MiqAeServiceService.find(service_orchestration.id) } + let(:svc_model_request) do + MiqAeMethodService::MiqAeServiceServiceTemplateProvisionRequest.find(request.id) + end + + context "with a stp request object" do + let(:root_hash) do + { 'service_template' => MiqAeMethodService::MiqAeServiceService.find(service_orchestration.id) } + end + + let(:root_object) do + obj = Spec::Support::MiqAeMockObject.new(root_hash) + obj["service_template_provision_task"] = svc_model_miq_request_task + obj["miq_server"] = svc_model_miq_server + obj + end + + before do + allow(ae_service).to receive(:inputs) { {'status' => "fred"} } + allow(svc_model_miq_request_task).to receive(:destination) { svc_model_service } + ae_service.root['ae_result'] = 'ok' + end + + it "method succeeds" do + described_class.new(ae_service).main + expect(svc_model_request.reload.status).to eq('Ok') + end + + it "request message set properly" do + described_class.new(ae_service).main + msg = "Server [#{miq_server.name}] Service [#{service_orchestration.name}] Step [] Status [fred] Message [] " + expect(svc_model_request.reload.message).to eq(msg) + end + end + + context "without a stp request object" do + let(:root_hash) { {} } + let(:root_object) { Spec::Support::MiqAeMockObject.new(root_hash) } + + it "method fails" do + expect { described_class.new(ae_service).main }.to raise_error( + "Service Template Provision Task not provided" + ) + end + end +end From 78ffe23931ed9bad72ea00733c8808f5cf129875 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Kom=C3=A1nek?= Date: Fri, 13 Jan 2017 15:25:26 +0100 Subject: [PATCH 3/4] Refactoring Service update_serviceprovision_status. --- .../update_serviceprovision_status.rb | 67 +++++++++++----- .../update_serviceprovision_status_spec.rb | 79 +++++++++++++++++++ 2 files changed, 127 insertions(+), 19 deletions(-) create mode 100644 spec/content/automate/ManageIQ/Service/Provisioning/StateMachines/ServiceProvision_Template.class/__methods__/update_serviceprovision_status_spec.rb diff --git a/content/automate/ManageIQ/Service/Provisioning/StateMachines/ServiceProvision_Template.class/__methods__/update_serviceprovision_status.rb b/content/automate/ManageIQ/Service/Provisioning/StateMachines/ServiceProvision_Template.class/__methods__/update_serviceprovision_status.rb index 99eef66dd..9bc53ee8f 100644 --- a/content/automate/ManageIQ/Service/Provisioning/StateMachines/ServiceProvision_Template.class/__methods__/update_serviceprovision_status.rb +++ b/content/automate/ManageIQ/Service/Provisioning/StateMachines/ServiceProvision_Template.class/__methods__/update_serviceprovision_status.rb @@ -2,28 +2,57 @@ # Description: This method updates the service provision status. # Required inputs: status # +module ManageIQ + module Automate + module Service + module Provisioning + module StateMachines + module ServiceProvision_Template + class UpdateServiceProvisionStatus + def initialize(handle = $evm) + @handle = handle + end -prov = $evm.root['service_template_provision_task'] + def main + prov = @handle.root['service_template_provision_task'] -unless prov - $evm.log(:error, "service_template_provision_task object not provided") - exit(MIQ_STOP) -end + if prov.nil? + @handle.log(:error, "service_template_provision_task object not provided") + raise "service_template_provision_task object not provided" + end + + updated_message = update_status_message(prov, @handle.inputs['status']) -# Get status from input field status -status = $evm.inputs['status'] + if @handle.root['ae_result'] == "error" + @handle.create_notification(:level => "error", + :subject => prov.miq_request, + :message => "Service Provision Error: #{updated_message}") + end + end -# Update Status Message -updated_message = "Server [#{$evm.root['miq_server'].name}] " -updated_message += "Service [#{prov.destination.name}] " -updated_message += "Step [#{$evm.root['ae_state']}] " -updated_message += "Status [#{status}] " -updated_message += "Message [#{prov.message}] " -updated_message += "Current Retry Number [#{$evm.root['ae_state_retries']}]" if $evm.root['ae_result'] == 'retry' -prov.miq_request.user_message = updated_message -prov.message = status + private -if $evm.root['ae_result'] == "error" - $evm.create_notification(:level => "error", :subject => prov.miq_request, \ - :message => "Service Provision Error: #{updated_message}") + def update_status_message(prov, status) + updated_message = "Server [#{@handle.root['miq_server'].name}] " + updated_message += "Service [#{prov.destination.name}] " + updated_message += "Step [#{@handle.root['ae_state']}] " + updated_message += "Status [#{status}] " + updated_message += "Message [#{prov.message}] " + updated_message += "Current Retry Number [#{@handle.root['ae_state_retries']}]"\ + if @handle.root['ae_result'] == 'retry' + prov.miq_request.user_message = updated_message + prov.message = status + + updated_message + end + end + end + end + end + end + end +end +if __FILE__ == $PROGRAM_NAME + ManageIQ::Automate::Service::Provisioning::StateMachines:: + ServiceProvision_Template::UpdateServiceProvisionStatus.new.main end diff --git a/spec/content/automate/ManageIQ/Service/Provisioning/StateMachines/ServiceProvision_Template.class/__methods__/update_serviceprovision_status_spec.rb b/spec/content/automate/ManageIQ/Service/Provisioning/StateMachines/ServiceProvision_Template.class/__methods__/update_serviceprovision_status_spec.rb new file mode 100644 index 000000000..a79651aa1 --- /dev/null +++ b/spec/content/automate/ManageIQ/Service/Provisioning/StateMachines/ServiceProvision_Template.class/__methods__/update_serviceprovision_status_spec.rb @@ -0,0 +1,79 @@ +require_domain_file + +describe ManageIQ::Automate::Service::Provisioning::StateMachines:: + ServiceProvision_Template::UpdateServiceProvisionStatus do + let(:user) { FactoryGirl.create(:user_with_group) } + let(:miq_server) { EvmSpecHelper.local_miq_server } + let(:service_orchestration) { FactoryGirl.create(:service_orchestration) } + + let(:miq_request_task) do + FactoryGirl.create(:miq_request_task, :destination => service_orchestration, + :miq_request => request, :state => 'fred') + end + + let(:request) do + FactoryGirl.create(:service_template_provision_request, :requester => user) + end + + let(:ae_service) do + Spec::Support::MiqAeMockService.new(root_object).tap do |service| + current_object = Spec::Support::MiqAeMockObject.new + current_object.parent = root_object + service.object = current_object + end + end + + let(:svc_model_miq_server) { MiqAeMethodService::MiqAeServiceMiqServer.find(miq_server.id) } + let(:svc_model_miq_request_task) { MiqAeMethodService::MiqAeServiceMiqRequestTask.find(miq_request_task.id) } + let(:svc_model_service) { MiqAeMethodService::MiqAeServiceService.find(service_orchestration.id) } + let(:svc_model_request) do + MiqAeMethodService::MiqAeServiceServiceTemplateProvisionRequest.find(request.id) + end + + context "with a stp request object" do + let(:root_hash) do + { 'service_template' => MiqAeMethodService::MiqAeServiceService.find(service_orchestration.id) } + end + + let(:root_object) do + obj = Spec::Support::MiqAeMockObject.new(root_hash) + obj["service_template_provision_task"] = svc_model_miq_request_task + obj["miq_server"] = svc_model_miq_server + obj + end + + before do + allow(ae_service).to receive(:inputs) { {'status' => "fred"} } + allow(svc_model_miq_request_task).to receive(:destination) { svc_model_service } + ae_service.root['ae_result'] = 'ok' + end + + it "method succeeds" do + described_class.new(ae_service).main + expect(svc_model_request.reload.status).to eq('Ok') + end + + it "request message set properly" do + described_class.new(ae_service).main + msg = "Server [#{miq_server.name}] Service [#{service_orchestration.name}] Step [] Status [fred] Message [] " + expect(svc_model_request.reload.message).to eq(msg) + end + + it "creates notification due to ae_result is 'error'" do + ae_service.root['ae_result'] = "error" + expect(ae_service).to receive(:create_notification) + described_class.new(ae_service).main + end + end + + context "without a stp request object" do + let(:root_hash) { {} } + let(:root_object) { Spec::Support::MiqAeMockObject.new(root_hash) } + + it "method fails" do + expect { described_class.new(ae_service).main }.to raise_error( + "service_template_provision_task object not provided" + ) + end + end +end From 236a9df52fb0c666b8dd014b4fcde7de62ab235a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20Kom=C3=A1nek?= Date: Fri, 13 Jan 2017 15:57:43 +0100 Subject: [PATCH 4/4] Removing the old spec. --- ...ice_provision_status_orchestration_spec.rb | 102 ------------------ 1 file changed, 102 deletions(-) delete mode 100644 spec/automation/unit/method_validation/update_service_provision_status_orchestration_spec.rb diff --git a/spec/automation/unit/method_validation/update_service_provision_status_orchestration_spec.rb b/spec/automation/unit/method_validation/update_service_provision_status_orchestration_spec.rb deleted file mode 100644 index f7dc0170c..000000000 --- a/spec/automation/unit/method_validation/update_service_provision_status_orchestration_spec.rb +++ /dev/null @@ -1,102 +0,0 @@ -describe "update_serviceprovision_status" do - let(:user) { FactoryGirl.create(:user_with_group) } - let(:miq_server) { EvmSpecHelper.local_miq_server } - let(:miq_request_task) do - FactoryGirl.create(:miq_request_task, :destination => service_orchestration, - :miq_request => request, :state => 'fred') - end - let(:request) do - FactoryGirl.create(:service_template_provision_request, :requester => user) - end - let(:service_orchestration) { FactoryGirl.create(:service_orchestration) } - - context "Service Class" do - let(:ws) do - MiqAeEngine.instantiate("/System/Request/Call_Method?namespace=ManageIQ/Service/Provisioning/StateMachines&" \ - "class=ServiceProvision_Template&method=update_serviceprovision_status&#{@args}", user) - end - - it "Service Class method succeeds" do - @args = "status=fred&ae_result=ok&MiqRequestTask::service_template_provision_task=#{miq_request_task.id}&" \ - "MiqServer::miq_server=#{miq_server.id}" - add_call_method - ws - expect(request.reload.status).to eq('Ok') - end - - it "Service Class request message set properly" do - @args = "status=fred&ae_result=ok&MiqRequestTask::service_template_provision_task=#{miq_request_task.id}&" \ - "MiqServer::miq_server=#{miq_server.id}" - add_call_method - ws - msg = "Server [#{miq_server.name}] Service [#{service_orchestration.name}] Step [] Status [fred] Message [] " - expect(request.reload.message).to eq(msg) - end - - it "Service Class method fails" do - @args = "status=fred&ae_result=ok&MiqServer::miq_server=#{miq_server.id}" - add_call_method - expect(ws.root).to be_nil - end - end - - context "Cloud Orchestration Class" do - let(:ws) do - MiqAeEngine.instantiate("/System/Request/Call_Method?namespace=ManageIQ/Cloud/Orchestration/Provisioning" \ - "/StateMachines&class=Provision&method=update_serviceprovision_status&#{@args}", user) - end - - it "Cloud Orchestration Class method succeeds" do - @args = "status=fred&ae_result=ok&MiqRequestTask::service_template_provision_task=#{miq_request_task.id}&" \ - "MiqServer::miq_server=#{miq_server.id}" - add_call_method - ws - expect(request.reload.status).to eq('Ok') - end - - it "Cloud Orchestration Class request message set properly" do - @args = "status=fred&ae_result=ok&MiqRequestTask::service_template_provision_task=#{miq_request_task.id}&" \ - "MiqServer::miq_server=#{miq_server.id}" - add_call_method - ws - msg = "Server [#{miq_server.name}] Service [#{service_orchestration.name}] Step [] Status [fred] Message [] " - expect(request.reload.message).to eq(msg) - end - - it "Cloud Orchestration Class method fails" do - @args = "status=fred&ae_result=ok&MiqServer::miq_server=#{miq_server.id}" - add_call_method - expect(ws.root).to be_nil - end - end - context "AnsibleTower Class" do - let(:ws) do - MiqAeEngine.instantiate("/System/Request/Call_Method?namespace=ManageIQ/ConfigurationManagement" \ - "/AnsibleTower/Service/Provisioning/StateMachines&class=Provision&" \ - "method=update_serviceprovision_status&#{@args}", user) - end - - it "AnsibleTower Class method succeeds" do - @args = "status=fred&ae_result=ok&MiqRequestTask::service_template_provision_task=#{miq_request_task.id}&" \ - "MiqServer::miq_server=#{miq_server.id}" - add_call_method - ws - expect(request.reload.status).to eq('Ok') - end - - it "AnsibleTower Class request message set properly" do - @args = "status=fred&ae_result=ok&MiqRequestTask::service_template_provision_task=#{miq_request_task.id}&" \ - "MiqServer::miq_server=#{miq_server.id}" - add_call_method - ws - msg = "Server [#{miq_server.name}] Service [#{service_orchestration.name}] Step [] Status [fred] Message [] " - expect(request.reload.message).to eq(msg) - end - - it "AnsibleTower Class method fails" do - @args = "status=fred&ae_result=ok&MiqServer::miq_server=#{miq_server.id}" - add_call_method - expect(ws.root).to be_nil - end - end -end \ No newline at end of file