From 2e651b3f570136d076b50f3e9db213e8725a7e52 Mon Sep 17 00:00:00 2001 From: Fabien Dupont Date: Fri, 8 Mar 2019 17:28:18 +0100 Subject: [PATCH 1/7] Set conversion host role variables for playbook --- app/models/conversion_host.rb | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/app/models/conversion_host.rb b/app/models/conversion_host.rb index 2b4324dd405..a3fd3286f35 100644 --- a/app/models/conversion_host.rb +++ b/app/models/conversion_host.rb @@ -84,30 +84,29 @@ def get_conversion_log(path) end def check_conversion_host_role - install_conversion_host_module playbook = "/usr/share/ovirt-ansible-v2v-conversion-host/playbooks/conversion_host_check.yml" - extra_vars = { :v2v_manageiq_conversion_host_check => true } - ansible_playbook(playbook, extra_vars) + ansible_playbook(playbook) tag_resource_as('enabled') rescue tag_resource_as('disabled') end - def enable_conversion_host_role(v2v_vddk_package_url = nil) - install_conversion_host_module - v2v_vddk_package_url ||= "http://#{resource.ext_management_system.hostname}/vddk/VMware-vix-disklib-stable.tar.gz" + def enable_conversion_host_role(vddk_package_url = nil, ssh_private_key = nil) + raise "vddk_package_url is mandatory if transformation method is vddk") if vddk_transport_supported && v2v_vddk_package_url.nil? + raise "ssh_private_key is mandatory if transformation_method is ssh") if ssh_transport_support && ssh_private_key.nil? playbook = "/usr/share/ovirt-ansible-v2v-conversion-host/playbooks/conversion_host_enable.yml" extra_vars = { - :v2v_vddk_package_name => "VMware-vix-disklib-stable.tar.gz", - :v2v_vddk_package_url => v2v_vddk_package_url - } + :v2v_transport_method => vddk_transport_supported ? 'vddk' : 'ssh', + :v2v_vddk_package_url => vddk_package_url, + :v2v_ssh_private_key => ssh_private_key, + :v2v_ca_bundle => resource.ext_management_system.connection_configurations['default'].certificate_authority + }.compact ansible_playbook(playbook, extra_vars) ensure check_conversion_host_role end def disable_conversion_host_role - install_conversion_host_module playbook = "/usr/share/ovirt-ansible-v2v-conversion-host/playbooks/conversion_host_disable.yml" ansible_playbook(playbook) ensure @@ -180,6 +179,7 @@ def miq_ssh_util_args_manageiq_providers_openstack_cloudmanager_vm def ansible_playbook(playbook, extra_vars = {}) command = "ansible-playbook #{playbook} -i #{ipaddress}" + extra_vars[:v2v_host_type] = resource.ext_management_system.emstype extra_vars.each { |k, v| command += " -e '#{k}=#{v}'" } connect_ssh { |ssu| ssu.shell_exec(command) } @@ -188,12 +188,6 @@ def ansible_playbook(playbook, extra_vars = {}) raise e end - def install_conversion_host_module - connect_ssh { |ssu| ssu.shell_exec("yum install -y ovirt-ansible-v2v-conversion-host") } - rescue => e - _log.error("Ansible module installation failed for '#{resource.name}'}with [#{e.class}: #{e.message}]") - end - # Wrapper method for the various tag_resource_as_xxx methods. #-- # TODO: Do we need this? From 820ee06daa2edccdc3f062b88d67033ed3f4477c Mon Sep 17 00:00:00 2001 From: Fabien Dupont Date: Fri, 8 Mar 2019 23:36:14 +0100 Subject: [PATCH 2/7] Handle the playbook variables from wizard for enablement --- app/models/conversion_host/configurations.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/models/conversion_host/configurations.rb b/app/models/conversion_host/configurations.rb index 8a9496a8726..d0c2517f706 100644 --- a/app/models/conversion_host/configurations.rb +++ b/app/models/conversion_host/configurations.rb @@ -44,10 +44,11 @@ def enable(params) params.delete(:task_id) # In case this is being called through *_queue which will stick in a :task_id params.delete(:miq_task_id) # The miq_queue.activate_miq_task will stick in a :miq_task_id - vddk_url = params.delete(:param_v2v_vddk_package_url) + vddk_package_url = params.delete(:vddk_package_url) + vmware_ssh_private_key = params.delete(:vmware_ssh_private_key) conversion_host = new(params) - conversion_host.enable_conversion_host_role(vddk_url) + conversion_host.enable_conversion_host_role(vddk_package_url, vmware_ssh_private_key) conversion_host.save! conversion_host rescue StandardError => error From fc5e39723cbe9355437c907cb1f4f6684c8362b1 Mon Sep 17 00:00:00 2001 From: Fabien Dupont Date: Sun, 10 Mar 2019 16:30:55 +0100 Subject: [PATCH 3/7] Fix leftover parenthesis --- app/models/conversion_host.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/models/conversion_host.rb b/app/models/conversion_host.rb index a3fd3286f35..1a0f5279db1 100644 --- a/app/models/conversion_host.rb +++ b/app/models/conversion_host.rb @@ -92,8 +92,8 @@ def check_conversion_host_role end def enable_conversion_host_role(vddk_package_url = nil, ssh_private_key = nil) - raise "vddk_package_url is mandatory if transformation method is vddk") if vddk_transport_supported && v2v_vddk_package_url.nil? - raise "ssh_private_key is mandatory if transformation_method is ssh") if ssh_transport_support && ssh_private_key.nil? + raise "vddk_package_url is mandatory if transformation method is vddk" if vddk_transport_supported && v2v_vddk_package_url.nil? + raise "ssh_private_key is mandatory if transformation_method is ssh" if ssh_transport_support && ssh_private_key.nil? playbook = "/usr/share/ovirt-ansible-v2v-conversion-host/playbooks/conversion_host_enable.yml" extra_vars = { :v2v_transport_method => vddk_transport_supported ? 'vddk' : 'ssh', From e67737f782a6bbec08a03163fdf933ef7f209eb7 Mon Sep 17 00:00:00 2001 From: Fabien Dupont Date: Sun, 10 Mar 2019 18:37:15 +0100 Subject: [PATCH 4/7] Fix rubocop --- app/models/conversion_host.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/conversion_host.rb b/app/models/conversion_host.rb index 1a0f5279db1..42bc11f11bf 100644 --- a/app/models/conversion_host.rb +++ b/app/models/conversion_host.rb @@ -99,7 +99,7 @@ def enable_conversion_host_role(vddk_package_url = nil, ssh_private_key = nil) :v2v_transport_method => vddk_transport_supported ? 'vddk' : 'ssh', :v2v_vddk_package_url => vddk_package_url, :v2v_ssh_private_key => ssh_private_key, - :v2v_ca_bundle => resource.ext_management_system.connection_configurations['default'].certificate_authority + :v2v_ca_bundle => resource.ext_management_system.connection_configurations['default'].certificate_authority }.compact ansible_playbook(playbook, extra_vars) ensure From c360fb03e90a8f68708be77756933e202ac9cb50 Mon Sep 17 00:00:00 2001 From: Fabien Dupont Date: Sun, 10 Mar 2019 22:31:16 +0100 Subject: [PATCH 5/7] Handle transport method from dialog --- app/models/conversion_host.rb | 4 +- app/models/conversion_host/configurations.rb | 8 ++-- .../conversion_host/configurations_spec.rb | 41 +++++++++++++++---- 3 files changed, 39 insertions(+), 14 deletions(-) diff --git a/app/models/conversion_host.rb b/app/models/conversion_host.rb index 42bc11f11bf..8ffc52320bd 100644 --- a/app/models/conversion_host.rb +++ b/app/models/conversion_host.rb @@ -97,8 +97,8 @@ def enable_conversion_host_role(vddk_package_url = nil, ssh_private_key = nil) playbook = "/usr/share/ovirt-ansible-v2v-conversion-host/playbooks/conversion_host_enable.yml" extra_vars = { :v2v_transport_method => vddk_transport_supported ? 'vddk' : 'ssh', - :v2v_vddk_package_url => vddk_package_url, - :v2v_ssh_private_key => ssh_private_key, + :v2v_vddk_package_url => vmware_vddk_package_url, + :v2v_ssh_private_key => vmware_ssh_private_key, :v2v_ca_bundle => resource.ext_management_system.connection_configurations['default'].certificate_authority }.compact ansible_playbook(playbook, extra_vars) diff --git a/app/models/conversion_host/configurations.rb b/app/models/conversion_host/configurations.rb index d0c2517f706..81d13b309ac 100644 --- a/app/models/conversion_host/configurations.rb +++ b/app/models/conversion_host/configurations.rb @@ -44,11 +44,13 @@ def enable(params) params.delete(:task_id) # In case this is being called through *_queue which will stick in a :task_id params.delete(:miq_task_id) # The miq_queue.activate_miq_task will stick in a :miq_task_id - vddk_package_url = params.delete(:vddk_package_url) + vmware_vddk_package_url = params.delete(:vmware_vddk_package_url) + params[:vddk_transport_supported] = !vmware_vddk_package_url.nil? vmware_ssh_private_key = params.delete(:vmware_ssh_private_key) - + params[:ssh_transport_supported] = !vmware_ssh_private_key.nil? + conversion_host = new(params) - conversion_host.enable_conversion_host_role(vddk_package_url, vmware_ssh_private_key) + conversion_host.enable_conversion_host_role(vmware_vddk_package_url, vmware_ssh_private_key) conversion_host.save! conversion_host rescue StandardError => error diff --git a/spec/models/conversion_host/configurations_spec.rb b/spec/models/conversion_host/configurations_spec.rb index fdd08f010e3..2655b812853 100644 --- a/spec/models/conversion_host/configurations_spec.rb +++ b/spec/models/conversion_host/configurations_spec.rb @@ -1,5 +1,9 @@ +require 'byebug' + describe ConversionHost do - let(:conversion_host) { FactoryBot.create(:conversion_host, :resource => vm, :ssh_transport_supported => true) } + let(:conversion_host) { FactoryBot.create(:conversion_host, :resource => vm) } + let(:conversion_host_ssh) { FactoryBot.create(:conversion_host, :resource => vm, :ssh_transport_supported => true) } + let(:conversion_host_vddk) { FactoryBot.create(:conversion_host, :resource => vm, :vddk_transport_supported => true) } let(:params) do { :name => 'transformer', @@ -40,15 +44,34 @@ expect { described_class.enable(params) }.to raise_error(StandardError) end - it "tags the associated resource as expected" do - allow(conversion_host).to receive(:enable_conversion_host_role) - taggings = conversion_host.resource.taggings - tag_names = taggings.map { |tagging| tagging.tag.name } + context "transport method is SSH" do + let(:conversion_host) { conversion_host_ssh } - expect(tag_names).to contain_exactly( - '/user/v2v_transformation_host/true', - '/user/v2v_transformation_method/ssh' - ) + it "tags the associated resource as expected" do + allow(conversion_host).to receive(:enable_conversion_host_role) + taggings = conversion_host.resource.taggings + tag_names = taggings.map { |tagging| tagging.tag.name } + + expect(tag_names).to contain_exactly( + '/user/v2v_transformation_host/true', + '/user/v2v_transformation_method/ssh' + ) + end + end + + context "transport method is VDDK" do + let(:conversion_host) { conversion_host_vddk } + + it "tags the associated resource as expected" do + allow(conversion_host).to receive(:enable_conversion_host_role) + taggings = conversion_host.resource.taggings + tag_names = taggings.map { |tagging| tagging.tag.name } + + expect(tag_names).to contain_exactly( + '/user/v2v_transformation_host/true', + '/user/v2v_transformation_method/vddk' + ) + end end end From 28f1443a74ad5a188f33dbf58581f6e43fb9ade2 Mon Sep 17 00:00:00 2001 From: Fabien Dupont Date: Sun, 10 Mar 2019 23:20:36 +0100 Subject: [PATCH 6/7] Rename variables. Fix rubocop. --- app/models/conversion_host.rb | 6 +++--- app/models/conversion_host/configurations.rb | 2 +- spec/models/conversion_host/configurations_spec.rb | 2 -- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/app/models/conversion_host.rb b/app/models/conversion_host.rb index 8ffc52320bd..8b9787c3500 100644 --- a/app/models/conversion_host.rb +++ b/app/models/conversion_host.rb @@ -91,9 +91,9 @@ def check_conversion_host_role tag_resource_as('disabled') end - def enable_conversion_host_role(vddk_package_url = nil, ssh_private_key = nil) - raise "vddk_package_url is mandatory if transformation method is vddk" if vddk_transport_supported && v2v_vddk_package_url.nil? - raise "ssh_private_key is mandatory if transformation_method is ssh" if ssh_transport_support && ssh_private_key.nil? + def enable_conversion_host_role(vmware_vddk_package_url = nil, vmware_ssh_private_key = nil) + raise "vddk_package_url is mandatory if transformation method is vddk" if vddk_transport_supported && vmware_vddk_package_url.nil? + raise "ssh_private_key is mandatory if transformation_method is ssh" if ssh_transport_support && vmware_ssh_private_key.nil? playbook = "/usr/share/ovirt-ansible-v2v-conversion-host/playbooks/conversion_host_enable.yml" extra_vars = { :v2v_transport_method => vddk_transport_supported ? 'vddk' : 'ssh', diff --git a/app/models/conversion_host/configurations.rb b/app/models/conversion_host/configurations.rb index 81d13b309ac..acd8f655ed4 100644 --- a/app/models/conversion_host/configurations.rb +++ b/app/models/conversion_host/configurations.rb @@ -48,7 +48,7 @@ def enable(params) params[:vddk_transport_supported] = !vmware_vddk_package_url.nil? vmware_ssh_private_key = params.delete(:vmware_ssh_private_key) params[:ssh_transport_supported] = !vmware_ssh_private_key.nil? - + conversion_host = new(params) conversion_host.enable_conversion_host_role(vmware_vddk_package_url, vmware_ssh_private_key) conversion_host.save! diff --git a/spec/models/conversion_host/configurations_spec.rb b/spec/models/conversion_host/configurations_spec.rb index 2655b812853..b6eebbba2ed 100644 --- a/spec/models/conversion_host/configurations_spec.rb +++ b/spec/models/conversion_host/configurations_spec.rb @@ -1,5 +1,3 @@ -require 'byebug' - describe ConversionHost do let(:conversion_host) { FactoryBot.create(:conversion_host, :resource => vm) } let(:conversion_host_ssh) { FactoryBot.create(:conversion_host, :resource => vm, :ssh_transport_supported => true) } From b47b4dc456ed223296b9a39e30cb5dc5cd0b1a9a Mon Sep 17 00:00:00 2001 From: Fabien Dupont Date: Wed, 13 Mar 2019 02:02:05 +0100 Subject: [PATCH 7/7] Fix variable name --- app/models/conversion_host.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/conversion_host.rb b/app/models/conversion_host.rb index 8b9787c3500..1b2c9d07320 100644 --- a/app/models/conversion_host.rb +++ b/app/models/conversion_host.rb @@ -93,7 +93,7 @@ def check_conversion_host_role def enable_conversion_host_role(vmware_vddk_package_url = nil, vmware_ssh_private_key = nil) raise "vddk_package_url is mandatory if transformation method is vddk" if vddk_transport_supported && vmware_vddk_package_url.nil? - raise "ssh_private_key is mandatory if transformation_method is ssh" if ssh_transport_support && vmware_ssh_private_key.nil? + raise "ssh_private_key is mandatory if transformation_method is ssh" if ssh_transport_supported && vmware_ssh_private_key.nil? playbook = "/usr/share/ovirt-ansible-v2v-conversion-host/playbooks/conversion_host_enable.yml" extra_vars = { :v2v_transport_method => vddk_transport_supported ? 'vddk' : 'ssh',