Skip to content

Instantly share code, notes, and snippets.

@aufi
Created January 29, 2018 16:45
Show Gist options
  • Save aufi/d014cc327081a709fcdef328b3444cb7 to your computer and use it in GitHub Desktop.
Save aufi/d014cc327081a709fcdef328b3444cb7 to your computer and use it in GitHub Desktop.
keystone
diff --git a/app/models/manageiq/providers/openstack/inventory/collector/target_collection.rb b/app/models/manageiq/providers/openstack/inventory/collector/target_collection.rb
index 0d98e25a..a63299fb 100644
--- a/app/models/manageiq/providers/openstack/inventory/collector/target_collection.rb
+++ b/app/models/manageiq/providers/openstack/inventory/collector/target_collection.rb
@@ -124,7 +124,7 @@ class ManageIQ::Providers::Openstack::Inventory::Collector::TargetCollection < M
def memoized_get_tenant(tenant_id)
return nil if tenant_id.blank?
@tenant_memo ||= Hash.new do |h, key|
- h[key] = safe_get { identity_service.tenants.find_by_id(key) }
+ h[key] = safe_get { identity_service.respond_to?(:projects) ? identity_service.projects_get_by_id(key) : identity_service.tenants.find_by_id(key) }
end
@tenant_memo[tenant_id]
end
@@ -275,8 +275,7 @@ class ManageIQ::Providers::Openstack::Inventory::Collector::TargetCollection < M
add_simple_target!(:key_pairs, name)
end
add_simple_target!(:images, vm.parent.ems_ref) if vm.parent
- # TODO: consider if CloudTenant refresh is needed, if so, fix get_project in fog/openstack and update code
- # add_simple_target!(:cloud_tenants, vm.cloud_tenant.ems_ref) if vm.cloud_tenant
+ add_simple_target!(:cloud_tenants, vm.cloud_tenant.ems_ref) if vm.cloud_tenant
end
end
@@ -285,8 +284,7 @@ class ManageIQ::Providers::Openstack::Inventory::Collector::TargetCollection < M
add_simple_target!(:images, vm.image["id"])
add_simple_target!(:availability_zones, vm.availability_zone)
add_simple_target!(:key_pairs, vm.key_name) if vm.key_name
- # TODO: consider if CloudTenant refresh is needed, if so, fix get_project in fog/openstack and update code
- # add_simple_target!(:cloud_tenants, vm.tenant_id)
+ add_simple_target!(:cloud_tenants, vm.tenant_id)
add_simple_target!(:flavors, vm.flavor["id"])
vm.os_interfaces.each do |iface|
diff --git a/lib/manageiq/providers/openstack/legacy/openstack_handle/identity_delegate.rb b/lib/manageiq/providers/openstack/legacy/openstack_handle/identity_delegate.rb
index f539524c..1f84adcf 100644
--- a/lib/manageiq/providers/openstack/legacy/openstack_handle/identity_delegate.rb
+++ b/lib/manageiq/providers/openstack/legacy/openstack_handle/identity_delegate.rb
@@ -144,5 +144,28 @@ module OpenstackHandle
list_roles_for_user_on_tenant(project_id, user_id).body["roles"]
end
end
+
+ def projects_get_by_id(id)
+ response = Handle.try_connection(@os_handle.security_protocol) do |scheme, connection_options|
+ url = Handle.url(@os_handle.address, @os_handle.port, scheme, "/v3/projects/#{id}")
+ connection = Fog::Core::Connection.new(url, false, connection_options)
+puts "========================================================"
+p connection
+puts "========================================================"
+ p unscoped_token
+ response = connection.request(
+ :expects => [200, 204],
+ :headers => {'Content-Type' => 'application/json',
+ 'Accept' => 'application/json',
+ 'X-Auth-Token' => unscoped_token},
+ :method => 'GET'
+ )
+ end
+ puts "========================================================"
+ puts "========================================================"
+ puts "========================================================"
+ p response.body
+ Fog::JSON.decode(response.body)
+ end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment