forked from ManageIQ/manageiq
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request ManageIQ#13879 from blomquisg/embedded_automation_…
…manager Adding many models for EmbeddedAnsible provider
- Loading branch information
Showing
91 changed files
with
559 additions
and
248 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
5 changes: 3 additions & 2 deletions
5
app/models/manageiq/providers/ansible_tower/automation_manager/azure_credential.rb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,4 @@ | ||
# This corresponds to Ansible Tower's Azure Resource Manager (azure_rm) type credential. We are not modeling the deprecated Azzure classic | ||
class ManageIQ::Providers::AnsibleTower::AutomationManager::AzureCredential < ManageIQ::Providers::AnsibleTower::AutomationManager::CloudCredential | ||
# This corresponds to Ansible Tower's Azure Resource Manager (azure_rm) type credential. We are not modeling the deprecated Azure classic | ||
class ManageIQ::Providers::AnsibleTower::AutomationManager::AzureCredential < | ||
ManageIQ::Providers::AnsibleTower::AutomationManager::CloudCredential | ||
end |
20 changes: 3 additions & 17 deletions
20
app/models/manageiq/providers/ansible_tower/automation_manager/configuration_script.rb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,19 +1,5 @@ | ||
class ManageIQ::Providers::AnsibleTower::AutomationManager::ConfigurationScript < ConfigurationScript | ||
extend ApiCreate | ||
class ManageIQ::Providers::AnsibleTower::AutomationManager::ConfigurationScript < | ||
ManageIQ::Providers::ExternalAutomationManager::ConfigurationScript | ||
|
||
def run(vars = {}) | ||
options = vars.merge(merge_extra_vars(vars[:extra_vars])) | ||
|
||
with_provider_object do |jt| | ||
jt.launch(options) | ||
end | ||
end | ||
|
||
def merge_extra_vars(external) | ||
{:extra_vars => variables.merge(external || {}).to_json} | ||
end | ||
|
||
def provider_object(connection = nil) | ||
(connection || connection_source.connect).api.job_templates.find(manager_ref) | ||
end | ||
include ManageIQ::Providers::AnsibleTower::Shared::AutomationManager::ConfigurationScript | ||
end |
19 changes: 4 additions & 15 deletions
19
app/models/manageiq/providers/ansible_tower/automation_manager/configured_system.rb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,17 +1,6 @@ | ||
class ManageIQ::Providers::AnsibleTower::AutomationManager::ConfiguredSystem < ::ConfiguredSystem | ||
include ProviderObjectMixin | ||
|
||
def provider_object(connection = nil) | ||
(connection || connection_source.connect).api.hosts.find(manager_ref) | ||
end | ||
|
||
def ext_management_system | ||
manager | ||
end | ||
class ManageIQ::Providers::AnsibleTower::AutomationManager::ConfiguredSystem < | ||
ManageIQ::Providers::ExternalAutomationManager::ConfiguredSystem | ||
|
||
private | ||
|
||
def connection_source(options = {}) | ||
options[:connection_source] || manager | ||
end | ||
include ManageIQ::Providers::AnsibleTower::Shared::AutomationManager::ConfiguredSystem | ||
include ProviderObjectMixin | ||
end |
2 changes: 1 addition & 1 deletion
2
app/models/manageiq/providers/ansible_tower/automation_manager/credential.rb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
class ManageIQ::Providers::AnsibleTower::AutomationManager::Credential < ManageIQ::Providers::AutomationManager::Authentication | ||
class ManageIQ::Providers::AnsibleTower::AutomationManager::Credential < ManageIQ::Providers::ExternalAutomationManager::Authentication | ||
end |
86 changes: 4 additions & 82 deletions
86
app/models/manageiq/providers/ansible_tower/automation_manager/job.rb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,84 +1,6 @@ | ||
require 'ansible_tower_client' | ||
class ManageIQ::Providers::AnsibleTower::AutomationManager::Job < ::OrchestrationStack | ||
require_nested :Status | ||
|
||
belongs_to :ext_management_system, :foreign_key => :ems_id, :class_name => "ManageIQ::Providers::AutomationManager" | ||
belongs_to :job_template, :foreign_key => :orchestration_template_id, :class_name => "ConfigurationScript" | ||
|
||
# | ||
# Allowed options are | ||
# :limit => String | ||
# :extra_vars => Hash | ||
# | ||
def self.create_stack(template, options = {}) | ||
stack = new(:name => template.name, | ||
:ext_management_system => template.manager, | ||
:job_template => template) | ||
stack.send(:update_with_provider_object, raw_create_stack(template, options)) | ||
stack | ||
end | ||
|
||
def self.raw_create_stack(template, options = {}) | ||
template.run(options) | ||
rescue => err | ||
_log.error "Failed to create job from template(#{name}), error: #{err}" | ||
raise MiqException::MiqOrchestrationProvisionError, err.to_s, err.backtrace | ||
end | ||
|
||
class << self | ||
alias create_job create_stack | ||
alias raw_create_job raw_create_stack | ||
end | ||
class ManageIQ::Providers::AnsibleTower::AutomationManager::Job < | ||
ManageIQ::Providers::ExternalAutomationManager::OrchestrationStack | ||
include ManageIQ::Providers::AnsibleTower::Shared::AutomationManager::Job | ||
|
||
def refresh_ems | ||
ext_management_system.with_provider_connection do |connection| | ||
update_with_provider_object(connection.api.jobs.find(ems_ref)) | ||
end | ||
rescue AnsibleTowerClient::ResourceNotFoundError | ||
msg = "AnsibleTower Job #{name} with id(#{id}) does not exist on #{ext_management_system.name}" | ||
raise MiqException::MiqOrchestrationStackNotExistError, msg | ||
rescue => err | ||
_log.error "Refreshing job(#{name}, ems_ref=#{ems_ref}), error: #{err}" | ||
raise MiqException::MiqOrchestrationUpdateError, err.to_s, err.backtrace | ||
end | ||
|
||
def update_with_provider_object(raw_job) | ||
self.ems_ref = raw_job.id | ||
self.status = raw_job.status | ||
self.parameters = | ||
raw_job.extra_vars_hash.collect do |para_key, para_val| | ||
OrchestrationStackParameter.new(:name => para_key, :value => para_val, :ems_ref => "#{raw_job.id}_#{para_key}") | ||
end if parameters.empty? | ||
save! | ||
end | ||
private :update_with_provider_object | ||
|
||
def raw_status | ||
ext_management_system.with_provider_connection do |connection| | ||
raw_job = connection.api.jobs.find(ems_ref) | ||
Status.new(raw_job.status, nil) | ||
end | ||
rescue AnsibleTowerClient::ResourceNotFoundError | ||
msg = "AnsibleTower Job #{name} with id(#{id}) does not exist on #{ext_management_system.name}" | ||
raise MiqException::MiqOrchestrationStackNotExistError, msg | ||
rescue => err | ||
_log.error "AnsibleTower Job #{name} with id(#{id}) status error: #{err}" | ||
raise MiqException::MiqOrchestrationStatusError, err.to_s, err.backtrace | ||
end | ||
|
||
def raw_stdout | ||
ext_management_system.with_provider_connection do |connection| | ||
connection.api.jobs.find(ems_ref).stdout | ||
end | ||
rescue AnsibleTowerClient::ResourceNotFoundError | ||
msg = "AnsibleTower Job #{name} with id(#{id}) does not exist on #{ext_management_system.name}" | ||
raise MiqException::MiqOrchestrationStackNotExistError, msg | ||
rescue => err | ||
_log.error "Reading AnsibleTower Job #{name} with id(#{id}) stdout failed with error: #{err}" | ||
raise MiqException::MiqOrchestrationStatusError, err.to_s, err.backtrace | ||
end | ||
|
||
def self.db_name | ||
'ConfigurationJob' | ||
end | ||
require_nested :Status | ||
end |
28 changes: 1 addition & 27 deletions
28
app/models/manageiq/providers/ansible_tower/automation_manager/job/status.rb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,29 +1,3 @@ | ||
class ManageIQ::Providers::AnsibleTower::AutomationManager::Job::Status < ::OrchestrationStack::Status | ||
def succeeded? | ||
status.casecmp("successful").zero? | ||
end | ||
|
||
def failed? | ||
status.casecmp("failed").zero? | ||
end | ||
|
||
def canceled? | ||
status.casecmp("canceled").zero? | ||
end | ||
|
||
def normalized_status | ||
return ['transient', reason || status] unless completed? | ||
|
||
if succeeded? | ||
['create_complete', reason || 'OK'] | ||
elsif deleted? | ||
['delete_complete', reason || 'Job was deleted'] | ||
elsif canceled? | ||
['create_canceled', reason || 'Job launching was canceled'] | ||
elsif updated? | ||
['update_complete', reason || 'OK'] | ||
else | ||
['failed', reason || 'Job launching failed'] | ||
end | ||
end | ||
include ManageIQ::Providers::AnsibleTower::Shared::AutomationManager::Job::Status | ||
end |
3 changes: 2 additions & 1 deletion
3
app/models/manageiq/providers/ansible_tower/automation_manager/playbook.rb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,3 @@ | ||
class ManageIQ::Providers::AnsibleTower::AutomationManager::Playbook < ConfigurationScriptPayload | ||
class ManageIQ::Providers::AnsibleTower::AutomationManager::Playbook < | ||
ManageIQ::Providers::ExternalAutomationManager::ConfigurationScriptPayload | ||
end |
2 changes: 1 addition & 1 deletion
2
app/models/manageiq/providers/ansible_tower/automation_manager/scm_credential.rb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
class ManageIQ::Providers::AnsibleTower::AutomationManager::ScmCredential < ManageIQ::Providers::AutomationManager::Authentication | ||
class ManageIQ::Providers::AnsibleTower::AutomationManager::ScmCredential < ManageIQ::Providers::AnsibleTower::AutomationManager::Credential | ||
end |
25 changes: 25 additions & 0 deletions
25
app/models/manageiq/providers/ansible_tower/shared/automation_manager.rb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
module ManageIQ::Providers::AnsibleTower::Shared::AutomationManager | ||
extend ActiveSupport::Concern | ||
|
||
include ProcessTasksMixin | ||
delegate :authentications, | ||
:authentication_check, | ||
:authentication_status, | ||
:authentication_status_ok?, | ||
:connect, | ||
:verify_credentials, | ||
:with_provider_connection, | ||
:to => :provider | ||
|
||
module ClassMethods | ||
private | ||
|
||
def connection_source(options = {}) | ||
options[:connection_source] || self | ||
end | ||
end | ||
|
||
def image_name | ||
"ansible_tower_configuration" | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
18 changes: 18 additions & 0 deletions
18
app/models/manageiq/providers/ansible_tower/shared/automation_manager/configured_system.rb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
module ManageIQ::Providers::AnsibleTower::Shared::AutomationManager::ConfiguredSystem | ||
extend ActiveSupport::Concern | ||
extend ProviderObjectMixin | ||
|
||
def provider_object(connection = nil) | ||
(connection || connection_source.connect).api.hosts.find(manager_ref) | ||
end | ||
|
||
def ext_management_system | ||
manager | ||
end | ||
|
||
private | ||
|
||
def connection_source(options = {}) | ||
options[:connection_source] || manager | ||
end | ||
end |
Oops, something went wrong.