Class: Chef::Knife::CfnDescribe

Inherits:
CfnBase show all
Defined in:
lib/chef/knife/cfn_describe.rb

Instance Method Summary collapse

Methods inherited from CfnBase

#connection, included, #is_image_windows?, #locate_config_value, #msg_pair, #validate!

Methods inherited from Chef::Knife

#create_create_def, #create_update_def, #iam_name_from_profile, #ini_parse

Instance Method Details

#runObject



77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
# File 'lib/chef/knife/cfn_describe.rb', line 77

def run
  $stdout.sync = true

  validate!

  stack_name = @name_args[0]
  if stack_name.nil?
    @name_args[0] = "__ALL__"
  end

  output_mode = "StackName"
  output_header = "Stack Name"

  if !config[:long_names].nil?
    output_mode = "StackId"
    output_header = "Stack ID"
  end

  stack_list = [
      ui.color(output_header, :bold),
      ui.color('Status', :bold),
      ui.color('Creation Time', :bold),
      ui.color('Disable Rollback', :bold)
  ]

  @name_args.each do |stack_name|
    options = {}
    data = Array.new
    options['StackName'] = stack_name

    begin
      if stack_name == "__ALL__"
        response = connection.describe_stacks()
      else
        response = connection.describe_stacks(options)
      end

      data = response.body['Stacks']
    rescue Excon::Errors::BadRequest => e
      i= e.response.body.index("<Message>")
      j = e.response.body.index("</Message>")
      if !i.nil? and !j.nil?
        ui.error(e.response.body[i+9,j-i-9])
      else
        print "\n#{e.response.body}"
      end
      exit 1
    else
      data.each do |stack|
        stack_list << stack[output_mode]
        stack_list << stack['StackStatus']
        stack_list << stack['CreationTime'].to_s
        stack_list << stack['DisableRollback'].to_s
      end

      puts ui.list(stack_list, :uneven_columns_across, 4)
    end
  end
end