diff --git a/src/cli/one_helper/oneprovision_helper.rb b/src/cli/one_helper/oneprovision_helper.rb index d2621ff7d7..840a2929ac 100644 --- a/src/cli/one_helper/oneprovision_helper.rb +++ b/src/cli/one_helper/oneprovision_helper.rb @@ -453,7 +453,7 @@ class OneProvisionHelper < OpenNebulaHelper::OneHelper # @param options [Hash] User CLI options # @param args [Array] Operation arguments def host_operation(host, operation, options, args) - p_id = host['TEMPLATE/PROVISION_ID'] + p_id = host['TEMPLATE/PROVISION/ID'] return OpenNebula::Error.new('No provision ID found') unless p_id @@ -510,9 +510,9 @@ class OneProvisionHelper < OpenNebulaHelper::OneHelper OneProvision::OneProvisionLogger.info(msg) if type != 'FLOWTEMPLATES' - p_id = obj['TEMPLATE/PROVISION_ID'] + p_id = obj['TEMPLATE/PROVISION/ID'] else - p_id = JSON.parse(obj.template)['PROVISION_ID'] + p_id = JSON.parse(obj.template)['PROVISION']['ID'] end unless p_id diff --git a/src/oneprovision/lib/provision/ansible.rb b/src/oneprovision/lib/provision/ansible.rb index 07ea61d40d..fa5db2a651 100644 --- a/src/oneprovision/lib/provision/ansible.rb +++ b/src/oneprovision/lib/provision/ansible.rb @@ -130,7 +130,7 @@ module OneProvision # # @return [Boolean] True if the ssh connection works def ansible_ssh(ansible_dir) - # Note: We want only to check the working SSH connection, but + # NOTE: We want only to check the working SSH connection, but # Ansible "ping" module requires also Python to be installed on # the remote side, otherwise fails. So we use only "raw" # module with simple command. Python should be @@ -281,7 +281,7 @@ module OneProvision Driver.write_file_log("#{ansible_dir}/inventory", c) # Generate "group_vars" file - group_vars = { 'sys_ds_ids' => [], 'first_host' => ""} + group_vars = { 'sys_ds_ids' => [], 'first_host' => '' } group_vars['first_host'] = hosts.first['name'] \ unless hosts.empty? @@ -289,9 +289,10 @@ module OneProvision ds = Resource.object('datastores') ds.info(d['id']) next unless ds.one['TYPE'] == '1' # only system ds + group_vars['sys_ds_ids'] << d['id'] end unless datastores.nil? - + c = YAML.dump(group_vars) fname = "#{ansible_dir}/group_vars.yml" Driver.write_file_log(fname, c) diff --git a/src/oneprovision/lib/provision/provision.rb b/src/oneprovision/lib/provision/provision.rb index ae6df92128..1b739bfb3e 100644 --- a/src/oneprovision/lib/provision/provision.rb +++ b/src/oneprovision/lib/provision/provision.rb @@ -171,7 +171,6 @@ module OneProvision ret = nil @mutex.synchronize do - if @cache ret = @cache[object] end @@ -183,8 +182,8 @@ module OneProvision raise OneProvisionLoopException, rc.message end - @cache = {} unless @cache - @cache[object] = [] + @cache ||= {} + @cache[object] = [] if FULL_CLUSTER.include?(object) path = 'infrastructure' @@ -257,6 +256,9 @@ module OneProvision puts "ID: #{self['ID']}" + # @id is used for template evaluation + @id = self['ID'] + # read provision file cfg.parse(true) @@ -279,9 +281,6 @@ module OneProvision Mode.new_cleanup(true) - # @id is used for template evaluation - @id = self['ID'] - if skip != :all && hosts && !hosts.empty? # ask user to be patient, mandatory for now STDERR.puts 'WARNING: This operation can ' \ @@ -562,7 +561,8 @@ module OneProvision cfg[r].each do |x| Driver.retry_loop('Failed to create some resources', self) do - obj = Resource.object(r, nil, x) + x['provision']['id'] = @id + obj = Resource.object(r, nil, x) next if obj.nil? @@ -666,6 +666,7 @@ module OneProvision h['provision']['index'] = idx + global_idx h['provision']['count'] = count + h['provision']['id'] = @id host = Resource.object('hosts', @provider, h) diff --git a/src/oneprovision/lib/terraform/terraform.rb b/src/oneprovision/lib/terraform/terraform.rb index 101a140440..0a5d9b62a1 100644 --- a/src/oneprovision/lib/terraform/terraform.rb +++ b/src/oneprovision/lib/terraform/terraform.rb @@ -90,7 +90,7 @@ module OneProvision end keys.each do |k| - if !provider['connection'].has_key? k + if !provider['connection'].key? k raise OneProvisionLoopException, "Missing provider connection attribute: '#{k}'" end