From 32b4c3b704cb6a2800488c6853ce2fea7c665aed Mon Sep 17 00:00:00 2001 From: Sergii Golovatiuk Date: Thu, 15 Jan 2015 23:41:09 +0100 Subject: [PATCH] Merge neutron provider with upstream Upstream SHA commit: d64ec6fa45907b06ed4cadce9c4abac32d6723fe neutron.rb was diverged from upstream due to keystone compatibility. Since keystone module was update neutron manifest can use provider from upstream. There were some changes to make it compatible with Ubuntu 14.04 Change-Id: Ieba2c4484518c33a77ab7fbbea399fbe02ddd9b4 Closes-Bug: 1410665 Signed-off-by: Sergii Golovatiuk --- .../neutron/lib/puppet/provider/neutron.rb | 78 +++---------------- 1 file changed, 9 insertions(+), 69 deletions(-) diff --git a/deployment/puppet/neutron/lib/puppet/provider/neutron.rb b/deployment/puppet/neutron/lib/puppet/provider/neutron.rb index 017961366c..813766994a 100644 --- a/deployment/puppet/neutron/lib/puppet/provider/neutron.rb +++ b/deployment/puppet/neutron/lib/puppet/provider/neutron.rb @@ -3,9 +3,6 @@ require 'puppet/util/inifile' class Puppet::Provider::Neutron < Puppet::Provider - #NOTE(xenolog): self.prefetch was removed with comment: - # FIXME:(xarses) needs to be abstraced from subresources and re-written here - def self.conf_filename '/etc/neutron/neutron.conf' end @@ -78,8 +75,6 @@ correctly configured.") if q.key?('nova_region_name') authenv[:OS_REGION_NAME] = q['nova_region_name'] end - # NOTE(bogdando) contribute change to upstream #1384097: - # enhanced message checks within a given time frame rv = nil timeout = 120 end_time = Time.now.to_i + timeout @@ -189,74 +184,19 @@ correctly configured.") return results end - def self.auth_keystone(*args) - q = neutron_credentials - authenv = { - :OS_AUTH_URL => self.auth_endpoint, - :OS_USERNAME => q['admin_user'], - :OS_TENANT_NAME => q['admin_tenant_name'], - :OS_PASSWORD => q['admin_password'] - } - if q.key?('nova_region_name') - authenv[:OS_REGION_NAME] = q['nova_region_name'] - end - - rv = nil - timeout = 120 - end_time = Time.now.to_i + timeout - loop do - begin - withenv authenv do - rv = keystone(args) - end - break - rescue Puppet::ExecutionFailure => e - if ! e.message =~ /(\(HTTP\s+400\))| - (400-\{\'message\'\:\s+\'\'\})| - (\[Errno 111\]\s+Connection\s+refused)| - (503\s+Service\s+Unavailable)| - (504\s+Gateway\s+Time-out)| - (\:\s+Maximum\s+attempts\s+reached)| - (Unauthorized\:\s+bad\s+credentials)| - (Max\s+retries\s+exceeded)/ - raise(e) - end - current_time = Time.now.to_i - if current_time > end_time - #raise(e) - break - else - wait = end_time - current_time - Puppet::debug("Non-fatal error: \"#{e.message}\"") - notice("Keystone API not avalaible. Wait up to #{wait} sec.") - end - sleep(2) - # Note(xarses): Don't remove, we know that there is one of the - # Recoverable erros above, So we will retry a few more times - end - end - return rv - end - - def auth_keystone(*args) - self.class.auth_neutron(args) - end - def self.get_tenant_id(catalog, name) - rv = nil - auth_keystone('tenant-list').each do |line| - fields=line.split(/\s*\|\s*/) - if fields[1] and fields[1].size == 32 - if fields[2] == name - rv = fields[1] - break - end + instance_type = 'keystone_tenant' + instance = catalog.resource("#{instance_type.capitalize!}[#{name}]") + if ! instance + instance = Puppet::Type.type(instance_type).instances.find do |i| + i.provider.name == name end end - if rv.nil? - fail("Unable to get tenant-ID for tenant '#{name}'") + if instance + return instance.provider.id + else + fail("Unable to find #{instance_type} for name #{name}") end - return rv end def self.parse_creation_output(data)