ManageIQ/manageiq-providers-nuage

View on GitHub
app/models/manageiq/providers/nuage/ansible_crud_mixin.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
90%
module ManageIQ::Providers::Nuage::AnsibleCrudMixin
  extend ActiveSupport::Concern

  module ClassMethods
    def ansible_stats(ansible_response, *keys, default: {})
      ansible_response.parsed_stdout.dig(-1, 'event_data', 'artifact_data', *keys) || default
    end

    def ansible_raise_for_status(ansible_response)
      $nuage_log.debug("Ansible response:\n#{ansible_outputs(ansible_response)}")
      # TODO: introduce new error type say MiqException::AnsibleReturnCodeError
      raise MiqException::Error, ansible_outputs(ansible_response) unless ansible_response.return_code.zero?
    end

    def ansible_outputs(ansible_response)
      "Playbook finished with return code #{ansible_response.return_code}\n" + \
        ansible_response.parsed_stdout.map { |line| line['stdout'].to_s.strip }.join("\n")
    end
  end
end