From a894908c760a25ba370505036cac9c449ba987ff Mon Sep 17 00:00:00 2001 From: Adam Grare Date: Fri, 9 Feb 2024 12:42:09 -0500 Subject: [PATCH] Add ConfigurationScriptSource and Payload classes --- .../configuration_script_payload.rb | 6 ++++ .../configuration_script_source.rb | 36 +++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 app/models/manageiq/providers/embedded_terraform/automation_manager/configuration_script_payload.rb create mode 100644 app/models/manageiq/providers/embedded_terraform/automation_manager/configuration_script_source.rb diff --git a/app/models/manageiq/providers/embedded_terraform/automation_manager/configuration_script_payload.rb b/app/models/manageiq/providers/embedded_terraform/automation_manager/configuration_script_payload.rb new file mode 100644 index 00000000..301bbabd --- /dev/null +++ b/app/models/manageiq/providers/embedded_terraform/automation_manager/configuration_script_payload.rb @@ -0,0 +1,6 @@ +class ManageIQ::Providers::EmbeddedTerraform::AutomationManager::ConfigurationScriptPayload < ManageIQ::Providers::EmbeddedAutomationManager::ConfigurationScriptPayload + has_many :jobs, :class_name => 'OrchestrationStack', :foreign_key => :configuration_script_base_id + + def run(vars = {}, _userid = nil) + end +end diff --git a/app/models/manageiq/providers/embedded_terraform/automation_manager/configuration_script_source.rb b/app/models/manageiq/providers/embedded_terraform/automation_manager/configuration_script_source.rb new file mode 100644 index 00000000..ba0f035f --- /dev/null +++ b/app/models/manageiq/providers/embedded_terraform/automation_manager/configuration_script_source.rb @@ -0,0 +1,36 @@ +class ManageIQ::Providers::EmbeddedTerraform::AutomationManager::ConfigurationScriptSource < ManageIQ::Providers::EmbeddedAutomationManager::ConfigurationScriptSource + FRIENDLY_NAME = "Embedded Terraform Repository".freeze + + def self.display_name(number = 1) + n_('Repository (Embedded Terraform)', 'Repositories (Embedded Terraform)', number) + end + + def sync + update!(:status => "running") + + transaction do + current = configuration_script_payloads.index_by(&:name) + + git_repository.update_repo + git_repository.with_worktree do |worktree| + worktree.ref = scm_branch + worktree.blob_list.each do |filename| + next if filename.start_with?(".") || !filename.end_with?(".tf") + + payload = worktree.read_file(filename) + found = current.delete(filename) || self.class.module_parent::ConfigurationScriptPayload.new(:configuration_script_source_id => id) + + found.update!(:name => filename, :manager_id => manager_id, :payload => payload, :payload_type => "json") + end + end + + current.values.each(&:destroy) + configuration_script_payloads.reload + end + + update!(:status => "successful", :last_updated_on => Time.zone.now, :last_update_error => nil) + rescue => error + update!(:status => "error", :last_updated_on => Time.zone.now, :last_update_error => error) + raise error + end +end