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