Class: Puppet::Provider::Nova
- Inherits:
-
Openstack
- Object
- Openstack
- Puppet::Provider::Nova
- Extended by:
- Openstack::Auth
- Defined in:
- lib/puppet/provider/nova.rb
Class Method Summary collapse
- .auth_endpoint ⇒ Object
- .conf_filename ⇒ Object
- .get_auth_endpoint ⇒ Object
- .get_nova_credentials ⇒ Object
- .nova_conf ⇒ Object
- .nova_credentials ⇒ Object
- .nova_manage_request(*args) ⇒ Object
- .nova_request(service, action, error, properties = nil) ⇒ Object
- .nova_user ⇒ Object
- .request(service, action, properties = nil) ⇒ Object
- .reset ⇒ Object
- .str2hash(s) ⇒ Object
Instance Method Summary collapse
Class Method Details
.auth_endpoint ⇒ Object
117 118 119 |
# File 'lib/puppet/provider/nova.rb', line 117 def self.auth_endpoint @auth_endpoint ||= get_auth_endpoint end |
.conf_filename ⇒ Object
64 65 66 |
# File 'lib/puppet/provider/nova.rb', line 64 def self.conf_filename '/etc/nova/nova.conf' end |
.get_auth_endpoint ⇒ Object
112 113 114 115 |
# File 'lib/puppet/provider/nova.rb', line 112 def self.get_auth_endpoint q = nova_credentials "#{q['auth_url']}" end |
.get_nova_credentials ⇒ Object
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
# File 'lib/puppet/provider/nova.rb', line 83 def self.get_nova_credentials #needed keys for authentication auth_keys = ['auth_url', 'project_name', 'username', 'password'] conf = nova_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['neutron'] and conf['neutron']['region_name'] creds['region_name'] = conf['neutron']['region_name'].strip end if !conf['keystone_authtoken']['project_domain_name'].nil? creds['project_domain_name'] = conf['keystone_authtoken']['project_domain_name'].strip else creds['project_domain_name'] = 'Default' end if !conf['keystone_authtoken']['user_domain_name'].nil? creds['user_domain_name'] = conf['keystone_authtoken']['user_domain_name'].strip else creds['user_domain_name'] = 'Default' end return creds else raise(Puppet::Error, "File: #{conf_filename} does not contain all " + "required sections. Nova types will not work if nova is not " + "correctly configured.") end end |
.nova_conf ⇒ Object
68 69 70 71 72 73 |
# File 'lib/puppet/provider/nova.rb', line 68 def self.nova_conf return @nova_conf if @nova_conf @nova_conf = Puppet::Util::IniConfig::File.new @nova_conf.read(conf_filename) @nova_conf end |
.nova_credentials ⇒ Object
75 76 77 |
# File 'lib/puppet/provider/nova.rb', line 75 def self.nova_credentials @nova_credentials ||= get_nova_credentials end |
.nova_manage_request(*args) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/puppet/provider/nova.rb', line 41 def self.nova_manage_request(*args) # Not using the nova-manage command directly, # so we can disable combining of stderr/stdout output. args.unshift(Puppet::Util.which('nova-manage')) # NOTE(mnaser): We pass the arguments as an array to avoid problems with # symbols in the arguments breaking things. Puppet::Util::Execution.execute(args, { :uid => nova_user, :failonfail => true, :combine => false, :custom_environment => {} }) end |
.nova_request(service, action, error, properties = nil) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/puppet/provider/nova.rb', line 24 def self.nova_request(service, action, error, properties=nil) properties ||= [] @credentials.username = nova_credentials['username'] @credentials.password = nova_credentials['password'] @credentials.project_name = nova_credentials['project_name'] @credentials.auth_url = auth_endpoint if @credentials.version == '3' @credentials.user_domain_name = nova_credentials['user_domain_name'] @credentials.project_domain_name = nova_credentials['project_domain_name'] end if nova_credentials['region_name'] @credentials.region_name = nova_credentials['region_name'] end raise error unless @credentials.set? Puppet::Provider::Openstack.request(service, action, properties, @credentials) end |
.nova_user ⇒ Object
60 61 62 |
# File 'lib/puppet/provider/nova.rb', line 60 def self.nova_user 'nova' end |
.request(service, action, properties = nil) ⇒ Object
16 17 18 19 20 21 22 |
# File 'lib/puppet/provider/nova.rb', line 16 def self.request(service, action, properties=nil) begin super rescue Puppet::Error::OpenstackAuthInputError => error nova_request(service, action, error, properties) end end |
.reset ⇒ Object
121 122 123 124 |
# File 'lib/puppet/provider/nova.rb', line 121 def self.reset @nova_conf = nil @nova_credentials = nil end |
.str2hash(s) ⇒ Object
126 127 128 129 130 131 132 133 134 |
# File 'lib/puppet/provider/nova.rb', line 126 def self.str2hash(s) #parse string if s.include? "=" k, v = s.split("=", 2) return {k.gsub(/'/, "") => v.gsub(/'/, "")} else return s.gsub(/'/, "") end end |
Instance Method Details
#nova_credentials ⇒ Object
79 80 81 |
# File 'lib/puppet/provider/nova.rb', line 79 def nova_credentials self.class.nova_credentials end |
#nova_manage_request(*args) ⇒ Object
56 57 58 |
# File 'lib/puppet/provider/nova.rb', line 56 def nova_manage_request(*args) self.class.nova_manage_request(args) end |