Andrew Bogott has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/268832

Change subject: Keep track of roleids as a separate thing from rolenames.
......................................................................

Keep track of roleids as a separate thing from rolenames.

In keystone/ldap they are the same, but that's not something
we can count on in the future.

Bug: T115029
Change-Id: I0545b502510758ed161473f7cdbe6d3da0d0fc7c
---
M nova/OpenStackNovaProject.php
M nova/OpenStackNovaRole.php
M special/SpecialNovaProject.php
M special/SpecialNovaRole.php
4 files changed, 35 insertions(+), 25 deletions(-)


  git pull 
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/OpenStackManager 
refs/changes/32/268832/1

diff --git a/nova/OpenStackNovaProject.php b/nova/OpenStackNovaProject.php
index f212613..d40072a 100644
--- a/nova/OpenStackNovaProject.php
+++ b/nova/OpenStackNovaProject.php
@@ -16,7 +16,6 @@
        public $projectGroup;
 
        // list of roles
-       static $rolenames = array( 'projectadmin' );
        static $roleids = array( 'projectadmin' );
 
        // short-lived cache of project objects
@@ -614,8 +613,8 @@
                $success = LdapAuthenticationPlugin::ldap_add( 
$wgAuth->ldapconn, $projectdn, $project );
                $project = new OpenStackNovaProject( $projectname );
                if ( $success ) {
-                       foreach ( self::$rolenames as $rolename ) {
-                               OpenStackNovaRole::createRole( $rolename, 
$project );
+                       foreach ( self::$roleids as $roleid ) {
+                               OpenStackNovaRole::createRole( $roleid, 
$project );
                                # TODO: If role addition fails, find a way to 
fail gracefully
                                # Though, if the project was added 
successfully, it is unlikely
                                # that role addition will fail.
diff --git a/nova/OpenStackNovaRole.php b/nova/OpenStackNovaRole.php
index 72c26fc..0438cbc 100644
--- a/nova/OpenStackNovaRole.php
+++ b/nova/OpenStackNovaRole.php
@@ -9,12 +9,13 @@
 
 class OpenStackNovaRole {
        public $rolename;
+       public $roleid;
        public $roleDN;
        public $roleInfo;
        public $project;
 
        /**
-        * @param  $rolename
+        * @param  $roleid, $project
         * @param null $project, optional
         */
        function __construct( $roleid, $project ) {
@@ -64,6 +65,13 @@
         */
        function getRoleName() {
                return $this->rolename;
+       }
+
+       /**
+        * @return string
+        */
+       function getRoleId() {
+               return $this->roleid;
        }
 
        /**
@@ -189,7 +197,7 @@
 
        /**
         * @static
-        * @param  $rolename
+        * @param  $roleid
         * @param  $project
         * @return null|OpenStackNovaRole
         */
diff --git a/special/SpecialNovaProject.php b/special/SpecialNovaProject.php
index 95916dd..722ee7b 100644
--- a/special/SpecialNovaProject.php
+++ b/special/SpecialNovaProject.php
@@ -222,6 +222,7 @@
                foreach ( $project->getRoles() as $role ) {
                        $roleRow = array();
                        $roleName = $role->getRoleName();
+                       $roleId = $role->getRoleId();
                        $this->pushResourceColumn( $roleRow, $roleName );
                        $roleMembers = $role->getMembers();
                        natcasesort( $roleMembers );
@@ -229,11 +230,11 @@
                        $actions = array();
                        $specialRoleTitle = Title::newFromText( 
'Special:NovaRole' );
                        $actions[] = $this->createActionLink( 
'openstackmanager-addrolemember',
-                               array( 'action' => 'addmember', 'projectname' 
=> $projectName, 'rolename' => $roleName, 'returnto' => 'Special:NovaProject' ),
+                               array( 'action' => 'addmember', 'projectname' 
=> $projectName, 'roleid' => $roleId, 'returnto' => 'Special:NovaProject' ),
                                $specialRoleTitle
                        );
                        $actions[] = $this->createActionLink( 
'openstackmanager-removerolemember',
-                               array( 'action' => 'deletemember', 
'projectname' => $projectName, 'rolename' => $roleName, 'returnto' => 
'Special:NovaProject' ),
+                               array( 'action' => 'deletemember', 
'projectname' => $projectName, 'roleid' => $roleId, 'returnto' => 
'Special:NovaProject' ),
                                $specialRoleTitle
                        );
                        $this->pushRawResourceColumn( $roleRow,  
$this->createResourceList( $actions ) );
diff --git a/special/SpecialNovaRole.php b/special/SpecialNovaRole.php
index 0b25363..a370a4c 100644
--- a/special/SpecialNovaRole.php
+++ b/special/SpecialNovaRole.php
@@ -41,17 +41,17 @@
                $this->getOutput()->setPagetitle( $this->msg( 
'openstackmanager-addmember' ) );
 
                $roleInfo = array();
-               $rolename = $this->getRequest()->getText( 'rolename' );
+               $roleid = $this->getRequest()->getText( 'roleid' );
                $projectname = $this->getRequest()->getText( 'projectname' );
                if ( $projectname ) {
-                       if ( !$this->userCanExecute( $this->getUser() ) && 
!$this->userLDAP->inRole( $rolename, $projectname ) ) {
+                       if ( !$this->userCanExecute( $this->getUser() ) && 
!$this->userLDAP->inRole( $roleid, $projectname ) ) {
                                $this->displayRestrictionError();
                                return false;
                        }
                        $project = OpenStackNovaProject::getProjectByName( 
$projectname );
                        $projectmembers = $project->getMembers();
                        natcasesort( $projectmembers );
-                       $role = OpenStackNovaRole::getProjectRoleByName( 
$rolename, $project );
+                       $role = OpenStackNovaRole::getProjectRoleById( $roleid, 
$project );
                        $rolemembers = $role->getMembers();
                        $member_keys = array();
                        foreach ( $projectmembers as $projectmember ) {
@@ -78,10 +78,10 @@
                        'default' => 'addmember',
                        'name' => 'action',
                );
-               $roleInfo['rolename'] = array(
+               $roleInfo['roleid'] = array(
                        'type' => 'hidden',
-                       'default' => $rolename,
-                       'name' => 'rolename',
+                       'default' => $roleid,
+                       'name' => 'roleid',
                );
                $roleInfo['projectname'] = array(
                        'type' => 'hidden',
@@ -113,17 +113,17 @@
                $this->setHeaders();
                $this->getOutput()->setPagetitle( $this->msg( 
'openstackmanager-removerolemember' ) );
 
-               $rolename = $this->getRequest()->getText( 'rolename' );
+               $roleid = $this->getRequest()->getText( 'roleid' );
                $projectname = $this->getRequest()->getText( 'projectname' );
                if ( $projectname ) {
-                       if ( !$this->userCanExecute( $this->getUser() ) && 
!$this->userLDAP->inRole( $rolename, $projectname ) ) {
+                       if ( !$this->userCanExecute( $this->getUser() ) && 
!$this->userLDAP->inRole( $roleid, $projectname ) ) {
                                $this->displayRestrictionError();
                                return false;
                        }
                        $project = OpenStackNovaProject::getProjectByName( 
$projectname );
                        $projectmembers = $project->getMembers();
                        natcasesort( $projectmembers );
-                       $role = OpenStackNovaRole::getProjectRoleByName( 
$rolename, $project );
+                       $role = OpenStackNovaRole::getProjectRoleById( $roleid, 
$project );
                        $rolemembers = $role->getMembers();
                        $member_keys = array();
                        foreach ( $projectmembers as $projectmember ) {
@@ -151,10 +151,10 @@
                        'default' => 'deletemember',
                        'name' => 'action',
                );
-               $roleInfo['rolename'] = array(
+               $roleInfo['roleid'] = array(
                        'type' => 'hidden',
-                       'default' => $rolename,
-                       'name' => 'rolename',
+                       'default' => $roleid,
+                       'name' => 'roleid',
                );
                $roleInfo['projectname'] = array(
                        'type' => 'hidden',
@@ -192,7 +192,8 @@
                                $this->getOutput()->addWikiMsg( 
'openstackmanager-nonexistentproject' );
                                return true;
                        }
-                       $role = OpenStackNovaRole::getProjectRoleByName( 
$formData['rolename'], $project );
+                       $role = OpenStackNovaRole::getProjectRoleById( 
$formData['roleid'], $project );
+                       $rolename = $role->getRoleName();
                        $members = $formData['members'];
                } else {
                        //TODO: display error
@@ -204,9 +205,9 @@
                foreach ( $members as $member ) {
                        $success = $role->addMember( $member );
                        if ( $success ) {
-                               $this->getOutput()->addWikiMsg( 
'openstackmanager-addedto', $member, $formData['rolename'] );
+                               $this->getOutput()->addWikiMsg( 
'openstackmanager-addedto', $member, $rolename );
                        } else {
-                               $this->getOutput()->addWikiMsg( 
'openstackmanager-failedtoadd', $member, $formData['rolename'] );
+                               $this->getOutput()->addWikiMsg( 
'openstackmanager-failedtoadd', $member, $rolename );
                        }
                }
                $project->editArticle();
@@ -235,7 +236,8 @@
                                $this->getOutput()->addWikiMsg( 
'openstackmanager-nonexistentproject' );
                                return true;
                        }
-                       $role = OpenStackNovaRole::getProjectRoleByName( 
$formData['rolename'], $project );
+                       $role = OpenStackNovaRole::getProjectRoleById( 
$formData['roleid'], $project );
+                       $rolename = $role->getRoleName();
                } else {
                        //TODO: display error
                }
@@ -246,9 +248,9 @@
                foreach ( $formData['members'] as $member ) {
                        $success = $role->deleteMember( $member );
                        if ( $success ) {
-                               $this->getOutput()->addWikiMsg( 
'openstackmanager-removedfrom', $member, $formData['rolename'] );
+                               $this->getOutput()->addWikiMsg( 
'openstackmanager-removedfrom', $member, $rolename );
                        } else {
-                               $this->getOutput()->addWikiMsg( 
'openstackmanager-failedtoremove', $member, $formData['rolename'] );
+                               $this->getOutput()->addWikiMsg( 
'openstackmanager-failedtoremove', $member, $rolename );
                        }
                }
                $project->editArticle();

-- 
To view, visit https://gerrit.wikimedia.org/r/268832
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I0545b502510758ed161473f7cdbe6d3da0d0fc7c
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

Reply via email to