module Deployments

Public Instance Methods

deploy(branch, deleted) click to toggle source
# File lib/helpers/deployments.rb, line 2
def deploy(branch, deleted)
  # Currently requires puppet_webhook to be run as a non-root
  # user with access to running the MCollective client.
  if settings.use_mcollective
    require 'plugins/mcollective'
    results = PuppetWebhook::Mcollective.new('r10k',
                                             'deploy',
                                             {
                                               dtimeout: settings.discovery_timeout,
                                               timeout: settings.client_timeout
                                             },
                                             settings.client_cfg,
                                             environment: branch).run
    results.each do |result|
      raise result.results[:statusmsg] unless result.results[:statuscode].zero?
    end
    raise results.stats[:noresponsefrom] unless result.stats[:noresponsefrom].length.zero?

    message = result.results[:statusmsg]
  else
    command = "#{settings.command_prefix} r10k deploy environment #{branch} #{settings.r10k_deploy_arguments}"
    message = run_command(command)
  end
  status_message = { status: :success, message: message.to_s, branch: branch, status_code: 202 }
  LOGGER.info("message: #{message} branch: #{branch}")
  unless deleted
    generate_types(branch) if types?
  end
  notification(status_message)
  [status_message[:status_code], status_message.to_json]
rescue StandardError => e
  status_message = { status: :fail, message: e.message, trace: e.backtrace, branch: branch, status_code: 500 }
  LOGGER.error("message: #{e.message} trace: #{e.backtrace}")
  status 500
  notification(status_message)
  status_message.to_json
end
deploy_module(module_name) click to toggle source
# File lib/helpers/deployments.rb, line 40
def deploy_module(module_name)
  # Currently requires puppet_webhook to be run as a non-root
  # user with access to running the MCollective client.
  if settings.use_mcollective
    require 'plugins/mcollective'
    results = PuppetWebhook::Mcollective.new('r10k',
                                             'deploy',
                                             {
                                               dtimeout: settings.discovery_timeout,
                                               timeout: settings.client_timeout
                                             },
                                             settings.client_cfg,
                                             module: module_name).run
    results.each do |result|
      raise result.results[:statusmsg] unless result.results[:statuscode].zero?
    end
    raise results.stats[:noresponsefrom] unless results.stats[:noresponsefrom].length.zero?

    message = result.results[:statusmsg]
  else
    command = "#{settings.command_prefix} r10k deploy module #{module_name}"
    message = run_command(command)
  end
  LOGGER.info("message: #{message} module_name: #{module_name}")
  status_message = { status: :success, message: message.to_s, module_name: module_name, status_code: 202 }
  notification(status_message)
  status_message.to_json
rescue StandardError => e
  status_message = { status: :fail, message: e.message, trace: e.backtrace, branch: branch, status_code: 500 }
  LOGGER.error("message: #{e.message} trace: #{e.backtrace}")
  status 500
  notification(status_message)
  status_message.to_json
end