Skip to content

Instantly share code, notes, and snippets.

@aufi
Created April 3, 2018 12:40
Show Gist options
  • Save aufi/78e52c0f350a8739b239acb66c94605e to your computer and use it in GitHub Desktop.
Save aufi/78e52c0f350a8739b239acb66c94605e to your computer and use it in GitHub Desktop.
diff --git a/lib/manageiq/providers/openstack/legacy/openstack_handle/handle.rb b/lib/manageiq/providers/openstack/legacy/openstack_handle/handle.rb
index 7caa3297..e52bc976 100644
--- a/lib/manageiq/providers/openstack/legacy/openstack_handle/handle.rb
+++ b/lib/manageiq/providers/openstack/legacy/openstack_handle/handle.rb
@@ -166,17 +166,18 @@ module OpenstackHandle
opts = options.dup
service = (opts.delete(:service) || "Compute").to_s.camelize
tenant = opts.delete(:tenant_name)
+ tenant_discovery = opts.delete(:tenant_discovery) || true
domain = domain_id
# Do not send auth_type to fog, it throws warning
opts.delete(:auth_type)
unless tenant
- tenant ||= default_tenant_name
+ tenant ||= default_tenant_name unless tenant_discovery
end
- opts[:openstack_tenant] = tenant
+ opts[:openstack_tenant] = tenant if tenant
# For identity ,there is only domain scope, with project_name nil
- opts[:openstack_project_name] = @project_name = tenant
+ opts[:openstack_project_name] = @project_name = tenant if tenant
opts[:openstack_project_domain_id] = domain
opts[:openstack_user_domain_id] = domain
opts[:openstack_region] = region
@@ -239,8 +240,8 @@ module OpenstackHandle
end
alias_method :connect_compute, :compute_service
- def identity_service
- connect(:service => "Identity")
+ def identity_service(tenant_discovery = true)
+ connect(:service => "Identity", :tenant_discovery => tenant_discovery)
end
alias_method :connect_identity, :identity_service
@@ -346,7 +347,7 @@ module OpenstackHandle
end
def tenants
- @tenants ||= identity_service.visible_tenants
+ @tenants ||= identity_service(discover_tenants: false).visible_tenants
end
def tenant_names
@@ -380,7 +381,7 @@ module OpenstackHandle
def default_tenant_name
return @default_tenant_name ||= "admin" if tenant_accessible?("admin")
tenant_names.each do |name|
- next if name == "services"
+ next if name.blank? || name == "services"
return @default_tenant_name ||= name if tenant_accessible?(name)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment