Andrew Bogott has uploaded a new change for review.

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


Change subject: WIP:  Sudo policy for service groups
......................................................................

WIP:  Sudo policy for service groups

Change-Id: I0cda7c4f32709c8c7bf6ac38eadd0d1d39b19767
---
M nova/OpenStackNovaServiceGroup.php
M special/SpecialNovaSudoer.php
2 files changed, 32 insertions(+), 1 deletion(-)


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

diff --git a/nova/OpenStackNovaServiceGroup.php 
b/nova/OpenStackNovaServiceGroup.php
index f2a462a..dc3c49d 100644
--- a/nova/OpenStackNovaServiceGroup.php
+++ b/nova/OpenStackNovaServiceGroup.php
@@ -259,6 +259,20 @@
                        return null;
                }
 
+               # Create Sudo policy so that members of this group can chmod 
files
+               if ( OpenStackNovaSudoer::createSudoer( $groupName . '-chmod',
+                               $project->projectname,
+                               array( $groupName ),
+                               array( 'ALL' ),
+                               array( 'chown -R ' . $groupName . ':' . 
$groupName . ' /data/project/' . $groupName ),
+                               array( '!authenticate' ) ) ) {
+                       $wgAuth->printDebug( "Successfully created chmod sudo 
policy for $groupName",
+                               NONSENSITIVE );
+               } else {
+                       $wgAuth->printDebug( "Failed to  creat chmod sudo 
policy for $groupName",
+                               NONSENSITIVE );
+               }
+
                return $newGroup;
        }
 
diff --git a/special/SpecialNovaSudoer.php b/special/SpecialNovaSudoer.php
index 28dbaad..b67148d 100644
--- a/special/SpecialNovaSudoer.php
+++ b/special/SpecialNovaSudoer.php
@@ -272,6 +272,7 @@
                $projectmembers = $project->getMembers();
 
                array_unshift( $projectmembers, $this->msg( 
'openstackmanager-allmembers' )->text() );
+
                $sudomembers = array();
                if ( $sudoer ) {
                        $sudomembers = $sudoer->getSudoerUsers();
@@ -398,6 +399,12 @@
                        $userNames = array();
                        $projectmembers = $project->getMembers();
                        $sudoUsers = $sudoer->getSudoerUsers();
+                       # Add service users.  These aren't editable.
+                       foreach ( $project->serviceGroups as $servicegroup ) {
+                               if ( in_array( $servicegroup->groupName, 
$sudoUsers ) ) {
+                                       $userNames[] = $servicegroup->groupName;
+                               }
+                       }
                        foreach ( $projectmembers as $member ) {
                                $user = new OpenStackNovaUser( $member );
                                if ( in_array( $user->getUid(), $sudoUsers ) ) {
@@ -551,7 +558,17 @@
                        } else {
                                $options[] = '!authenticate';
                        }
-                       $success = $sudoer->modifySudoer( 
$this->removeALLFromUserKeys($formData['users']), $formData['hosts'], 
$commands, $options );
+
+                       # Make sure we aren't pulling service users out of the 
list.
+                       $users = 
$this->removeALLFromUserKeys($formData['users']);
+                       $project = OpenStackNovaProject::getProjectByName( 
$formData['project'] );
+                       foreach ( $this->project->serviceGroups as 
$servicegroup ) {
+                               if ( in_array( $servicegroup->groupName, 
$sudoer->getSudoerUsers() ) ) {
+                                       $users[] = $servicegroup->groupName;
+                               }
+                       }
+
+                       $success = $sudoer->modifySudoer( $users, 
$formData['hosts'], $commands, $options );
                        if ( ! $success ) {
                                $this->getOutput()->addWikiMsg( 
'openstackmanager-modifysudoerfailed' );
                                return true;

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

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