class CfnGuardian::CodePipeline

Public Class Methods

new(pipeline_name) click to toggle source
# File lib/cfnguardian/codepipeline.rb, line 9
def initialize(pipeline_name)
  @pipeline_name = pipeline_name
  client = Aws::CodePipeline::Client.new()
  @pipeline = client.get_pipeline_state({
    name: @pipeline_name
  })
end

Public Instance Methods

colour_rows(rows, status) click to toggle source
# File lib/cfnguardian/codepipeline.rb, line 28
def colour_rows(rows, status)
  if status == 'Failed'
    rows.map! {|row| row.map! {|r| r.red } }
  elsif status == 'Succeeded'
    rows.map! {|row| row.map! {|r| r.green } }
  elsif status == 'InProgress'
    rows.map! {|row| row.map! {|r| r.blue } }
  elsif ["Stopped", "Stopping"].include? status
    rows.map! {|row| row.map! {|r| r.yellow } }
  end
end
get_build() click to toggle source
# File lib/cfnguardian/codepipeline.rb, line 64
def get_build()
  source_stage = get_stage("Build")
  action = source_stage.action_states.first
  status = source_stage.latest_execution.status
  state = {
    stage: action.action_name,
    rows: [
      ['Status', status],
      ['Build Id', action.latest_execution.external_execution_id],
      ['Last Status Change', action.latest_execution.last_status_change.localtime.strftime("%d/%m/%Y %I:%M %p")],
      ['Logs', action.latest_execution.external_execution_url]
    ]
  }
  
  unless action.latest_execution.error_details.nil?
    state[:rows].push(
      ['Error Message', action.latest_execution.error_details.message]
    )
  end
  
  colour_rows(state[:rows],status)
  
  return state
end
get_create_changeset() click to toggle source
# File lib/cfnguardian/codepipeline.rb, line 89
def get_create_changeset()
  source_stage = get_stage("Deploy")
  action = source_stage.action_states.find {|action| action.action_name == "CreateChangeSet"}
  status = source_stage.latest_execution.status
  state = {
    stage: action.action_name,
    rows: [
      ['Status', status],
      ['Summary', action.latest_execution.summary],
      ['Last Status Change', action.latest_execution.last_status_change.localtime.strftime("%d/%m/%Y %I:%M %p")],
    ]
  }
  
  unless action.latest_execution.error_details.nil?
    state[:rows].push(
      ['Error Message', action.latest_execution.error_details.message]
    )
  end
  
  colour_rows(state[:rows],status)
  
  return state
end
get_deploy_changeset() click to toggle source
# File lib/cfnguardian/codepipeline.rb, line 113
def get_deploy_changeset()
  source_stage = get_stage("Deploy")
  action = source_stage.action_states.find {|action| action.action_name == "DeployChangeSet"}
  status = source_stage.latest_execution.status
  state = {
    stage: action.action_name,
    rows: [
      ['Status', status],
      ['Summary', action.latest_execution.summary],
      ['Last Status Change', action.latest_execution.last_status_change.localtime.strftime("%d/%m/%Y %I:%M %p")],
    ]
  }
  
  unless action.latest_execution.error_details.nil?
    state[:rows].push(
      ['Error Message', action.latest_execution.error_details.message]
    )
  end
  
  colour_rows(state[:rows],status)
  
  return state
end
get_source() click to toggle source
# File lib/cfnguardian/codepipeline.rb, line 40
def get_source()
  source_stage = get_stage("Source")
  action = source_stage.action_states.first
  status = source_stage.latest_execution.status
  state = {
    stage: action.action_name,
    rows: [
      ['Status', status],
      ['Commit', action.current_revision.revision_id],
      ['Last Status Change', action.latest_execution.last_status_change.localtime.strftime("%d/%m/%Y %I:%M %p")]
    ]
  }
  
  unless action.latest_execution.error_details.nil?
    state[:rows].push(
      ['Error Message', action.latest_execution.error_details.message]
    )
  end
  
  colour_rows(state[:rows],status)
  
  return state
end
get_stage(stage_name) click to toggle source
# File lib/cfnguardian/codepipeline.rb, line 24
def get_stage(stage_name)
  return @pipeline.stage_states.find {|stage| stage.stage_name == stage_name}
end
retry() click to toggle source
# File lib/cfnguardian/codepipeline.rb, line 17
def retry()
  resp = client.start_pipeline_execution({
    name: @pipeline_name,
    client_request_token: "ClientRequestToken",
  })
end