Andrew Bogott has uploaded a new change for review.

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

Change subject: Added migration tool to adopt keystone-based project assignment
......................................................................

Added migration tool to adopt keystone-based project assignment

Bug: T115029
Change-Id: I5075d5880f9a0895cd727af7f787e822c17e1d3a
---
A maintenance/migrateLdapAssignmentToKeystone.php
1 file changed, 67 insertions(+), 0 deletions(-)


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

diff --git a/maintenance/migrateLdapAssignmentToKeystone.php 
b/maintenance/migrateLdapAssignmentToKeystone.php
new file mode 100644
index 0000000..88ce760
--- /dev/null
+++ b/maintenance/migrateLdapAssignmentToKeystone.php
@@ -0,0 +1,67 @@
+<?php
+if ( getenv( 'MW_INSTALL_PATH' ) ) {
+       $IP = getenv( 'MW_INSTALL_PATH' );
+} else {
+       $IP = dirname( __FILE__ ) . '/../../..';
+}
+require_once( "$IP/maintenance/Maintenance.php" );
+
+
+function var_dump_pre($mixed = null) {
+       echo '<pre>';
+       var_dump($mixed);
+       echo '</pre>';
+       return null;
+}
+
+class OpenStackNovaDumpProjects extends Maintenance {
+       public function __construct() {
+               parent::__construct();
+               $this->mDescription = "Read ldap-based projects, roles and 
memberships, and insert them into keystone.";
+       }
+
+       public function execute() {
+               global $wgOpenStackManagerSkipArticleEdits;
+
+               $wgOpenStackManagerSkipArticleEdits = true;
+
+               $projects = OpenStackNovaProjectLdap::getAllProjects();
+               foreach ( $projects as $ldapproject) {
+                       $name = $ldapproject->getProjectName();
+                       $ldapproject->fetchProjectInfo( true );
+                       $keystoneproject = 
OpenStackNovaProject::createProject($name);
+                       if ( !$keystoneproject ) {
+                               print "Failed to create project $name, loading 
instead\n";
+                               $keystoneproject = 
OpenStackNovaProject::getProjectByName($name);
+                       }
+                       if ( !$keystoneproject ) {
+                               print "Failed to create or load project $name, 
skipping\n";
+                               continue;
+                       }
+                       $id = $keystoneproject->getId();
+                       print "Migrating project $name to keystone project with 
id $id\n";
+                       $keystoneproject->fetchProjectInfo( true );
+                       $ldapmembers = $ldapproject->getMemberUids();
+                       foreach ( $ldapmembers as $member ) {
+                               print "* Adding $member to $name\n";
+                               if ( !$keystoneproject->addMember( $member ) ) {
+                                       print "Failed to add member $member to 
$name\n";
+                               }
+                       }
+                       $ldaproles = $ldapproject->getRoles();
+                       foreach ( $ldaproles as $ldaprole ) {
+                               $rolename = $ldaprole->getRoleName();
+                               $keystonerole = 
OpenStackNovaRole::getProjectRoleByName( $rolename, $keystoneproject );
+                               foreach ( $ldaprole->getMembers() as 
$membername ) {
+                                       print "* Adding $membername to 
$rolename in $name\n";
+                                       if ( !$keystonerole->addMember( 
$membername ) ) {
+                                               print "Failed to add member 
$member to role $rolename in $name\n";
+                                       }
+                               }
+                       }
+               }
+       }
+}
+
+$maintClass = "OpenStackNovaDumpProjects";
+require_once( RUN_MAINTENANCE_IF_MAIN );

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

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