Module: Chef::Knife::RackspaceBase

Included in:
RackspaceFlavorList, RackspaceImageList, RackspaceServerCreate, RackspaceServerDelete, RackspaceServerList
Defined in:
lib/chef/knife/rackspace_base.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(includer) ⇒ Object

:nodoc: Would prefer to do this in a rational way, but can’t be done b/c of Mixlib::CLI’s design :(



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/chef/knife/rackspace_base.rb', line 28

def self.included(includer)
  includer.class_eval do

    deps do
      require 'fog'
      require 'net/ssh/multi'
      require 'readline'
      require 'chef/json_compat'
    end

    option :rackspace_api_key,
      :short => "-K KEY",
      :long => "--rackspace-api-key KEY",
      :description => "Your rackspace API key",
      :proc => Proc.new { |key| Chef::Config[:knife][:rackspace_api_key] = key }

    option :rackspace_username,
      :short => "-A USERNAME",
      :long => "--rackspace-username USERNAME",
      :description => "Your rackspace API username",
      :proc => Proc.new { |username| Chef::Config[:knife][:rackspace_username] = username }

    option :rackspace_api_auth_url,
      :long => "--rackspace-api-auth-url URL",
      :description => "Your rackspace API auth url",
      :default => "auth.api.rackspacecloud.com",
      :proc => Proc.new { |url| Chef::Config[:knife][:rackspace_api_auth_url] = url }
  end
end

Instance Method Details

#connectionObject



58
59
60
61
62
63
64
65
66
67
# File 'lib/chef/knife/rackspace_base.rb', line 58

def connection
  @connection ||= begin
    connection = Fog::Compute.new(
      :provider => 'Rackspace',
      :rackspace_api_key => Chef::Config[:knife][:rackspace_api_key],
      :rackspace_username => (Chef::Config[:knife][:rackspace_username] || Chef::Config[:knife][:rackspace_api_username]),
      :rackspace_auth_url => Chef::Config[:knife][:rackspace_api_auth_url] || config[:rackspace_api_auth_url]
    )
  end
end

#locate_config_value(key) ⇒ Object



69
70
71
72
# File 'lib/chef/knife/rackspace_base.rb', line 69

def locate_config_value(key)
  key = key.to_sym
  Chef::Config[:knife][key] || config[key]
end

#public_dns_name(server) ⇒ Object



74
75
76
77
78
79
80
# File 'lib/chef/knife/rackspace_base.rb', line 74

def public_dns_name(server)
  @public_dns_name ||= begin
    Resolv.getname(server.addresses["public"][0])
  rescue
    "#{server.addresses["public"][0].gsub('.','-')}.static.cloud-ips.com"
  end
end