class Fission::Command::Suspend

def execute

def execute
  super
  incorrect_arguments if @args.count != 1 && !@options.all
  vms_to_suspend.each do |vm|
    output "Suspending '#{vm.name}'"
    response = vm.suspend
    if response.successful?
      output "VM '#{vm.name}' suspended"
    else
      output_and_exit "There was an error suspending the VM.  The error was:\n#{response.message}", response.code
    end
  end
end

def initialize(args=[])

def initialize(args=[])
  super
  @options.all = false
end

def option_parser

def option_parser
  optparse = OptionParser.new do |opts|
    opts.banner = "Usage: fission suspend [TARGET_VM | --all]"
    opts.separator ''
    opts.separator 'Suspend TARGET_VM or all VMs.'
    opts.separator ''
    opts.separator 'OPTIONS:'
    opts.on '--all', 'Suspend all running VMs' do
      @options.all = true
    end
  end
  optparse
end

def summary

def summary
  'Suspend a VM'
end

def vms_to_suspend

def vms_to_suspend
  if @options.all
    response = VM.all_running
    if response.successful?
      vms = response.data
    else
      output_and_exit "There was an error getting the list of running VMs.  The error was:\n#{response.message}", response.code
    end
  else
    vms = [ VM.new(@args.first) ]
  end
  vms
end