class SimplePerf::CLI::Destroy

Public Instance Methods

execute() click to toggle source
# File lib/simple_perf/cli/destroy.rb, line 8
      def execute
        opts = Trollop::options do
          version SimplePerf::VERSION
          banner <<-EOS

Destroys CloudFormation stacks.

Usage:
      simple_perf destroy -e ENVIRONMENT -p PROJECT_NAME
EOS
          opt :help, "Display Help"
          opt :environment, "Set the target environment", :type => :string
          opt :project, "Project name to manage", :type => :string
        end
        Trollop::die :environment, "is required but not specified" unless opts[:environment]
        Trollop::die :project, "is required but not specified" unless opts[:project]

        command = 'simple_deploy destroy' +
                        ' -e ' + opts[:environment] +
                        ' -n ' + 'simple-perf-' + opts[:project]

        Shared::pretty_print `#{command}`

        config = Config.new.environment opts[:environment]

        AWS.config(
            :access_key_id => config['access_key'],
            :secret_access_key => config['secret_key'])

        command = 'simple_deploy list' +
            ' -e ' + opts[:environment] +
            ' | grep ' + opts[:project] + '-s3'
        bucket_stack = `#{command}`

        puts bucket_stack

        if bucket_stack.empty?
          return
        end

        command = 'simple_deploy outputs' +
            ' -e ' + opts[:environment] +
            ' -n ' + bucket_stack
        bucket_name = `#{command}`
        bucket_name = bucket_name.split(' ')[1]

        if(config['region'] == 'us-east-1')
          s3_endpoint = 's3.amazonaws.com'
        else
          s3_endpoint = "s3-#{config['region']}.amazonaws.com"
        end

        s3 = AWS::S3.new(:s3_endpoint => s3_endpoint)

        # use existing s3 bucket
        b = s3.buckets[bucket_name]

        b.objects.each do |obj|
          puts obj.key
          obj.delete
        end

        command = 'simple_deploy destroy' +
            ' -e ' + opts[:environment] +
            ' -n ' + bucket_stack

        Shared::pretty_print `#{command}`

      end