Andrew Bogott has uploaded a new change for review.
https://gerrit.wikimedia.org/r/270494
Change subject: Added OpenStackNovaRole::getRoleNameForId
......................................................................
Added OpenStackNovaRole::getRoleNameForId
This new function caches the global role list, which means
one less keystone call each time we initialize a role.
Change-Id: I595ae53b419656818f50373d2fac251a5af8a261
---
M nova/OpenStackNovaRole.php
1 file changed, 27 insertions(+), 10 deletions(-)
git pull
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/OpenStackManager
refs/changes/94/270494/1
diff --git a/nova/OpenStackNovaRole.php b/nova/OpenStackNovaRole.php
index 44f3aab..423fe5e 100644
--- a/nova/OpenStackNovaRole.php
+++ b/nova/OpenStackNovaRole.php
@@ -24,16 +24,7 @@
$this->project = $project;
OpenStackNovaLdapConnection::connect();
- # Get the name by searching the global role list
- $controller = OpenstackNovaProject::getController();
- $globalrolelist = $controller->getKeystoneRoles();
- $this->rolename = 'unknown role';
- foreach ( $globalrolelist as $id => $name ) {
- if ( $id == $this->roleid ) {
- $this->rolename = $name;
- break;
- }
- }
+ $this->rolename = OpenStackNovaRole::getRoleNameForId(
$this->roleid );
}
/**
@@ -197,4 +188,30 @@
}
return null;
}
+
+ /**
+ * @static
+ * @param $roleid
+ * @return role name
+ */
+ static function getRoleNameForId( $roleid ) {
+ global $wgMemc;
+
+ $key = wfMemcKey( 'openstackmanager', 'globalrolelist' );
+ $globalrolelist = $wgMemc->get( $key );
+ if ( ! is_array( $globalrolelist ) ) {
+ $controller = OpenstackNovaProject::getController();
+ $globalrolelist = $controller->getKeystoneRoles();
+
+ # Roles basically never change, so this can be a
long-lived cache
+ $wgMemc->set( $key, $globalrolelist );
+ }
+
+ foreach ( $globalrolelist as $id => $name ) {
+ if ( $id == $roleid ) {
+ return $name;
+ }
+ }
+ return "unknown role";
+ }
}
--
To view, visit https://gerrit.wikimedia.org/r/270494
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I595ae53b419656818f50373d2fac251a5af8a261
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/OpenStackManager
Gerrit-Branch: master
Gerrit-Owner: Andrew Bogott <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits