Class: Puppet::Provider::Sahara

Inherits:
Openstack
  • Object
show all
Extended by:
Openstack::Auth
Defined in:
lib/puppet/provider/sahara.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.auth_endpointObject



88
89
90
# File 'lib/puppet/provider/sahara.rb', line 88

def self.auth_endpoint
  @auth_endpoint ||= get_auth_endpoint
end

.conf_filenameObject



10
11
12
# File 'lib/puppet/provider/sahara.rb', line 10

def self.conf_filename
  '/etc/sahara/sahara.conf'
end

.flavors_listObject



92
93
94
95
96
97
98
# File 'lib/puppet/provider/sahara.rb', line 92

def self.flavors_list
  unless @flavors_hash
    list = request('flavor', 'list')
    @flavors_hash = Hash[list.collect { |flavor| [ flavor[:id], flavor[:name] ] } ]
  end
  @flavors_hash
end

.get_auth_endpointObject



83
84
85
86
# File 'lib/puppet/provider/sahara.rb', line 83

def self.get_auth_endpoint
  q = sahara_credentials
  "#{q['auth_url']}"
end

.get_sahara_credentialsObject



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/puppet/provider/sahara.rb', line 55

def self.get_sahara_credentials
  auth_keys = ['auth_url', 'project_name', 'username',
               'password']
  conf = sahara_conf
  if conf and conf['keystone_authtoken'] and
      auth_keys.all?{|k| !conf['keystone_authtoken'][k].nil?}
    creds = Hash[ auth_keys.map \
                 { |k| [k, conf['keystone_authtoken'][k].strip] } ]
    if conf['project_domain_name']
      creds['project_domain_name'] = conf['project_domain_name']
    else
      creds['project_domain_name'] = 'Default'
    end
    if conf['user_domain_name']
      creds['user_domain_name'] = conf['user_domain_name']
    else
      creds['user_domain_name'] = 'Default'
    end
    if conf['keystone_authtoken']['region_name']
      creds['region_name'] = conf['keystone_authtoken']['region_name']
    end
    return creds
  else
    raise(Puppet::Error, "File: #{conf_filename} does not contain all " +
          "required sections. Can not to authenticate Sahara.")
  end
end

.network_listObject



100
101
102
103
104
105
106
# File 'lib/puppet/provider/sahara.rb', line 100

def self.network_list
  unless @network_hash
    list = request('network', 'list')
    @network_hash = Hash[list.collect { |network| [ network[:id], network[:name] ] } ]
  end
  @network_hash
end

.request(service, action, properties = nil) ⇒ Object



21
22
23
24
25
26
27
# File 'lib/puppet/provider/sahara.rb', line 21

def self.request(service, action, properties=nil)
  begin
    super
  rescue Puppet::Error::OpenstackAuthInputError, Puppet::Error::OpenstackUnauthorizedError => error
    sahara_request(service, action, error, properties)
  end
end

.resetObject



108
109
110
111
112
# File 'lib/puppet/provider/sahara.rb', line 108

def self.reset
  @sahara_conf = nil
  @sahara_credentials = nil
  @auth_endpoint = nil
end

.sahara_confObject



14
15
16
17
18
19
# File 'lib/puppet/provider/sahara.rb', line 14

def self.sahara_conf
  return @sahara_conf if @sahara_conf
  @sahara_conf = Puppet::Util::IniConfig::File.new
  @sahara_conf.read(conf_filename)
  @sahara_conf
end

.sahara_credentialsObject



47
48
49
# File 'lib/puppet/provider/sahara.rb', line 47

def self.sahara_credentials
  @sahara_credentials ||= get_sahara_credentials
end

.sahara_request(service, action, error, properties = nil) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/puppet/provider/sahara.rb', line 29

def self.sahara_request(service, action, error, properties=nil)
  warning('Usage of keystone_authtoken parameters is deprecated.')
  properties ||= []
  @credentials.username = sahara_credentials['username']
  @credentials.password = sahara_credentials['password']
  @credentials.project_name = sahara_credentials['project_name']
  @credentials.auth_url = auth_endpoint
  if sahara_credentials['region_name']
    @credentials.region_name = sahara_credentials['region_name']
  end
  if @credentials.version == '3'
    @credentials.user_domain_name = sahara_credentials['user_domain_name']
    @credentials.project_domain_name = sahara_credentials['project_domain_name']
  end
  raise error unless @credentials.set?
  Puppet::Provider::Openstack.request(service, action, properties, @credentials)
end

Instance Method Details

#sahara_credentialsObject



51
52
53
# File 'lib/puppet/provider/sahara.rb', line 51

def sahara_credentials
  self.class.sahara_credentials
end