From 4f359963b172afad0144aaef8121236bbec07824 Mon Sep 17 00:00:00 2001 From: Greg McCullough Date: Tue, 25 Apr 2017 09:45:06 -0400 Subject: [PATCH] Merge pull request #14697 from bzwei/extra_var_format extra_var to have metadata (cherry picked from commit b84a4ebee79cc9b250630c8aa11eab0ff200f648) --- app/models/service_ansible_playbook.rb | 3 +++ app/models/service_template_ansible_playbook.rb | 6 +++++- spec/models/service_ansible_playbook_spec.rb | 6 +++--- .../models/service_template_ansible_playbook_spec.rb | 12 ++++++------ 4 files changed, 17 insertions(+), 10 deletions(-) diff --git a/app/models/service_ansible_playbook.rb b/app/models/service_ansible_playbook.rb index 00b54fe9980..76bb55419c6 100644 --- a/app/models/service_ansible_playbook.rb +++ b/app/models/service_ansible_playbook.rb @@ -75,6 +75,9 @@ def get_job_options(action) def save_job_options(action, overrides) job_options = options.fetch_path(:config_info, action.downcase.to_sym).slice(:hosts, :extra_vars).with_indifferent_access + job_options[:extra_vars].try(:transform_values!) do |val| + val.kind_of?(String) ? val : val[:default] # TODO: support Hash only + end job_options.deep_merge!(parse_dialog_options) unless action == ResourceAction::RETIREMENT job_options.deep_merge!(overrides) diff --git a/app/models/service_template_ansible_playbook.rb b/app/models/service_template_ansible_playbook.rb index e2fee8473f0..ede59eda5a0 100644 --- a/app/models/service_template_ansible_playbook.rb +++ b/app/models/service_template_ansible_playbook.rb @@ -101,7 +101,11 @@ def self.build_parameter_list(name, description, info) :ask_inventory_on_launch => true, :ask_credential_on_launch => true } - params[:extra_vars] = info[:extra_vars].to_json if info[:extra_vars] + if info[:extra_vars] + params[:extra_vars] = info[:extra_vars].transform_values do |val| + val.kind_of?(String) ? val : val[:default] # TODO: support Hash only + end.to_json + end [:credential, :cloud_credential, :network_credential].each do |credential| cred_sym = "#{credential}_id".to_sym diff --git a/spec/models/service_ansible_playbook_spec.rb b/spec/models/service_ansible_playbook_spec.rb index 449b8172cb0..35a26312e45 100644 --- a/spec/models/service_ansible_playbook_spec.rb +++ b/spec/models/service_ansible_playbook_spec.rb @@ -47,9 +47,9 @@ :credential_id => credential_0.id, :playbook_id => 10, :extra_vars => { - "var1" => "default_val1", - :var2 => "default_val2", - "var3" => "default_val3" + "var1" => {:default => "default_val1"}, + :var2 => {:default => "default_val2"}, + "var3" => {:default => "default_val3"} }, } } diff --git a/spec/models/service_template_ansible_playbook_spec.rb b/spec/models/service_template_ansible_playbook_spec.rb index 83cdc9bbb5b..c1e36a33587 100644 --- a/spec/models/service_template_ansible_playbook_spec.rb +++ b/spec/models/service_template_ansible_playbook_spec.rb @@ -44,8 +44,8 @@ :config_info => { :provision => { :extra_vars => { - 'key1' => 'val1', - 'key2' => 'val2' + 'key1' => {:default => 'val1'}, + 'key2' => {:default => 'val2'} } }, :retirement => { @@ -63,8 +63,8 @@ :provision => { :new_dialog_name => 'test_dialog_updated', :extra_vars => { - 'key1' => 'updated_val1', - 'key2' => 'updated_val2' + 'key1' => {:default => 'updated_val1'}, + 'key2' => {:default => 'updated_val2'} } } }} @@ -212,8 +212,8 @@ expect(service_template.name).to eq(catalog_item_options_three[:name]) expect(service_template.description).to eq(catalog_item_options_three[:description]) expect(service_template.options.fetch_path(:config_info, :provision, :extra_vars)).to have_attributes( - 'key1' => 'updated_val1', - 'key2' => 'updated_val2' + 'key1' => {:default => 'updated_val1'}, + 'key2' => {:default => 'updated_val2'} ) new_dialog_record = Dialog.where(:label => new_dialog_label).first expect(new_dialog_record).to be_truthy