class Chef::Knife::SakuraDiskCreate

Public Instance Methods

run() click to toggle source
# File lib/chef/knife/sakura_disk_create.rb, line 44
def run
  validate!

  options = {}
  options['name'] = locate_config_value( :name )
  options['plan'] = locate_config_value( :plan )
  options['source_archive'] = locate_config_value( :source_archive )

  if options['name'] == nil
    puts 'Error. Missing disk name (-n) option.'
  elsif options['plan'] == nil
    puts 'Error. Missing plan id (-p) option.'
  elsif options['source_archive'] == nil
    puts 'Error. Missing source_archive id (-s) option.'
  else

    volume = Fog::Volume.new(
      :provider => 'SakuraCloud',
      :sakuracloud_api_token => Chef::Config[:knife][:sakuracloud_api_token],
      :sakuracloud_api_token_secret => Chef::Config[:knife][:sakuracloud_api_token_secret],
    )

    begin
      response = volume.disks.create( options )
      if response.class == Fog::Volume::SakuraCloud::Disk
        puts "succeeded."
      else
        puts "failed."
      end
    rescue Exception
      body = Fog::JSON.decode( $!.response.body )
      puts "#{body['status']}: #{body['error_msg']}"
    end
  end
end