bad indirection performance with openstack resources

Bug #1493450 reported by Richard Megginson on 2015-09-08
12
This bug affects 2 people
Affects Status Importance Assigned to Milestone
puppet-keystone
Medium
Gilles Dubreuil

Bug Description

Calls like this::

    Puppet::Resource.indirection.find("Keystone_user/#{resource_name}")
    Puppet::Resource.indirection.find("Keystone_tenant/#{resource_name}")

will call self.instances in the provider class every time. self.instances will then create new provider objects for each one. Then the find() method will loop through each one to find the matching name, then the list will be discarded. This is extremely inefficient, and will lead to terrible performance if there are thousands of users/tenants.

These calls should be changed to use the openstack provider `request()` method `show` to get the `:id` of the given resource. The only problem here is that we do not yet have a reliable way to map the resource name to the name + domain we need in order to use `show`. This will be solved by https://review.openstack.org/#/c/218059/

Changed in puppet-keystone:
status: New → Confirmed
importance: Undecided → Medium
Changed in puppet-keystone:
assignee: nobody → Gilles Dubreuil (gdubreui)
status: Confirmed → In Progress

Reviewed: https://review.openstack.org/226624
Committed: https://git.openstack.org/cgit/openstack/puppet-keystone/commit/?id=d2c44f731caa1ac3e57c407fc63c0c790e99e43f
Submitter: Jenkins
Branch: master

commit d2c44f731caa1ac3e57c407fc63c0c790e99e43f
Author: Gilles Dubreuil <email address hidden>
Date: Mon Sep 28 11:14:30 2015 +1000

    Replace indirection calls

    Indirection calls are replaced with #fetch_project and #fetch_user methods
    using python-openstackclient (OSC).

    Also removes the assumption that if a resource is unique within a domain space
    then the domain doesn't have to be specified.

    Closes-Bug: #1493450
    Change-Id: I36fabf547fa50fc14d49f491f11cb4a0571f7d31

Changed in puppet-keystone:
status: In Progress → Fix Committed
Changed in puppet-keystone:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers