diff --git a/.phpcs-ruleset-pure.xml b/.phpcs-ruleset-pure.xml
index 476e34d19..fe8bbfb6c 100644
--- a/.phpcs-ruleset-pure.xml
+++ b/.phpcs-ruleset-pure.xml
@@ -22,4 +22,7 @@
+
+
+
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 28fb6dc5e..85e61d36b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,15 @@ For details on the changes in each release, see [the Releases page](https://gith
## Version-specific update instructions:
+### 1.8 -> 1.9
+- schema migration:
+ - the new LDAP schema should be added in conjunction with the old
+ - all entries should have the `piGroup` objectClass replaced with `unityGroup`
+ - the `setup-pi-group-owners.php` worker should be run
+- all existing PI group requests in SQL must be converted to the format "owner_uid:group_gid"
+- ownership of any course groups should be transferred to a Unity admin
+- dummy course group owners should be deleted
+
### 1.7 -> 1.8
- the [webhook] section of the config file can be removed
- all mail templates are no longer PHP files, now they are `.html.twig`
diff --git a/deployment/domain_overrides/course-creator/config.ini b/deployment/domain_overrides/course-creator/config.ini
index 06847b570..2545380c0 100644
--- a/deployment/domain_overrides/course-creator/config.ini
+++ b/deployment/domain_overrides/course-creator/config.ini
@@ -1,6 +1,5 @@
-# we have hacked in course groups using normal PI accounts but using a different IDnumber range
+# we have hacked in course groups using normal PI groups but using a different IDnumber range
[ldap]
-offset_UIDGID = 20000
offset_PIGID = 20000
[site]
diff --git a/resources/init.php b/resources/init.php
index b3f74cf9e..1ce8e543e 100644
--- a/resources/init.php
+++ b/resources/init.php
@@ -80,7 +80,7 @@
}
$_SESSION["user_exists"] = $USER->exists() && !$USER->getFlag(UserFlag::DISABLED);
- $_SESSION["is_pi"] = $USER->isPI();
+ $_SESSION["owned_managed_pi_group_gids"] = $USER->getOwnedPIGroupGIDs();
$days_idle = $SQL->convertLastLoginToDaysIdle($SQL->getUserLastLogin($USER->uid));
$SQL->addLog("user_login", $OPERATOR->uid);
diff --git a/resources/lib/UnityGroup.php b/resources/lib/UnityGroup.php
index f30b97659..435c613b6 100644
--- a/resources/lib/UnityGroup.php
+++ b/resources/lib/UnityGroup.php
@@ -17,7 +17,7 @@ enum UnityGroupUserRemovedReason: string
*/
class UnityGroup extends PosixGroup
{
- public const string PI_PREFIX = "pi_";
+ public const string NAMESAKE_PI_PREFIX = "pi_";
public string $gid;
private UnityLDAP $LDAP;
private UnitySQL $SQL;
@@ -37,21 +37,25 @@ public function __toString(): string
return $this->gid;
}
- public function requestGroup(?bool $send_mail_to_admins = null, bool $send_mail = true): void
- {
+ public function requestGroup(
+ string $owner_uid,
+ ?bool $send_mail_to_admins = null,
+ bool $send_mail = true,
+ ): void {
$send_mail_to_admins ??= CONFIG["mail"]["send_pimesg_to_admins"];
if ($this->exists() && !$this->getIsDisabled()) {
return;
}
+ $owner = new UnityUser($owner_uid, $this->LDAP, $this->SQL, $this->MAILER);
$context = [
- "user" => $this->getOwner()->uid,
- "org" => $this->getOwner()->getOrg(),
- "name" => $this->getOwner()->getFullName(),
- "email" => $this->getOwner()->getMail(),
+ "user" => $owner_uid,
+ "org" => $owner->getOrg(),
+ "name" => $owner->getFullName(),
+ "email" => $owner->getMail(),
];
- $this->SQL->addRequest($this->getOwner()->uid, UnitySQL::REQUEST_BECOME_PI);
+ $this->SQL->addRequest("$owner_uid:$this->gid", UnitySQL::REQUEST_CREATE_PI_GROUP);
if ($send_mail) {
- $this->MAILER->sendMail($this->getOwner()->getMail(), "group_request");
+ $this->MAILER->sendMail($owner->getMail(), "group_request");
if ($send_mail_to_admins) {
$this->MAILER->sendMail("admin", "group_request_admin", $context);
}
@@ -117,52 +121,59 @@ private function reenable(bool $send_mail = true): void
/**
* This method will create the group (this is what is executed when an admin approved the group)
*/
- public function approveGroup(bool $send_mail = true): void
+ public function approveGroup(string $owner_uid, bool $send_mail = true): void
{
- $uid = $this->getOwner()->uid;
- $request = $this->SQL->getRequest($uid, UnitySQL::REQUEST_BECOME_PI);
- assert($this->getOwner()->exists());
+ $request = "$owner_uid:$this->gid";
+ assert($this->SQL->requestExists($request, UnitySQL::REQUEST_CREATE_PI_GROUP));
+ $owner = new UnityUser($owner_uid, $this->LDAP, $this->SQL, $this->MAILER);
+ assert($owner->exists());
if (!$this->entry->exists()) {
- $this->init();
+ $this->init($owner_uid);
} elseif ($this->getIsDisabled()) {
$this->reenable();
} else {
throw new Exception("cannot approve group that already exists and is not disabled");
}
- $this->SQL->removeRequest($this->getOwner()->uid, UnitySQL::REQUEST_BECOME_PI);
- $this->SQL->addLog("approved_group", $this->getOwner()->uid);
+ $this->SQL->removeRequest($request, UnitySQL::REQUEST_CREATE_PI_GROUP);
+ $this->SQL->addLog("approved_group", $request);
if ($send_mail) {
- $this->MAILER->sendMail($this->getOwner()->getMail(), "group_created");
+ $this->MAILER->sendMail($owner->getMail(), "group_created");
}
// having your own group makes you qualified
- $this->getOwner()->updateIsQualified($send_mail);
+ $owner->updateIsQualified($send_mail);
}
/**
* This method is executed when an admin denys the PI group request
*/
- public function denyGroup(bool $send_mail = true): void
+ public function denyGroup(string $owner_uid, bool $send_mail = true): void
{
- $request = $this->SQL->getRequest($this->getOwner()->uid, UnitySQL::REQUEST_BECOME_PI);
- $this->SQL->removeRequest($this->getOwner()->uid, UnitySQL::REQUEST_BECOME_PI);
+ $request = "$owner_uid:$this->gid";
+ assert($this->SQL->requestExists($request, UnitySQL::REQUEST_CREATE_PI_GROUP));
+ $owner = new UnityUser($owner_uid, $this->LDAP, $this->SQL, $this->MAILER);
+ assert($owner->exists());
+ $this->SQL->removeRequest($request, UnitySQL::REQUEST_CREATE_PI_GROUP);
if ($this->exists()) {
return;
}
- $this->SQL->addLog("denied_group", $this->getOwner()->uid);
+ $this->SQL->addLog("denied_group", $owner_uid);
if ($send_mail) {
- $this->MAILER->sendMail($this->getOwner()->getMail(), "group_denied");
+ $this->MAILER->sendMail($owner->getMail(), "group_denied");
}
}
- public function cancelGroupRequest(bool $send_mail = true): void
+ public function cancelGroupRequest(string $owner_uid, bool $send_mail = true): void
{
- if (!$this->SQL->requestExists($this->getOwner()->uid, UnitySQL::REQUEST_BECOME_PI)) {
+ $request = "$owner_uid:$this->gid";
+ if (!$this->SQL->requestExists($request, UnitySQL::REQUEST_CREATE_PI_GROUP)) {
return;
}
- $this->SQL->removeRequest($this->getOwner()->uid, UnitySQL::REQUEST_BECOME_PI);
+ $owner = new UnityUser($owner_uid, $this->LDAP, $this->SQL, $this->MAILER);
+ assert($owner->exists());
+ $this->SQL->removeRequest($request, UnitySQL::REQUEST_CREATE_PI_GROUP);
if ($send_mail) {
$this->MAILER->sendMail("pi_approve", "group_request_cancelled", [
- "uid" => $this->getOwner()->uid,
+ "uid" => $owner_uid,
]);
}
}
@@ -346,15 +357,15 @@ public function requestExists(UnityUser $user): bool
return false;
}
- private function init(): void
+ private function init(string $owner_uid): void
{
- $owner = $this->getOwner();
assert(!$this->entry->exists());
$nextGID = $this->LDAP->getNextPIGIDNumber();
$this->entry->create([
- "objectclass" => ["piGroup", "posixGroup", "top"],
+ "objectclass" => ["unityGroup", "posixGroup", "top"],
"gidnumber" => strval($nextGID),
- "memberuid" => [$owner->uid],
+ "memberuid" => [$owner_uid],
+ "owneruid" => $owner_uid,
]);
// TODO if we ever make this project based,
// we need to update the cache here with the memberuid
@@ -367,25 +378,21 @@ private function addRequest(string $uid): void
public function getOwner(): UnityUser
{
- return new UnityUser(
- self::GID2OwnerUID($this->gid),
- $this->LDAP,
- $this->SQL,
- $this->MAILER,
- );
+ $uid = $this->entry->getAttribute("ownerUid")[0];
+ return new UnityUser($uid, $this->LDAP, $this->SQL, $this->MAILER);
}
- public static function ownerUID2GID(string $uid): string
+ public static function ownerUID2NamesakeGID(string $uid): string
{
- return self::PI_PREFIX . $uid;
+ return self::NAMESAKE_PI_PREFIX . $uid;
}
- public static function GID2OwnerUID(string $gid): string
+ public static function NamesakeGID2OwnerUID(string $gid): string
{
- if (substr($gid, 0, strlen(self::PI_PREFIX)) != self::PI_PREFIX) {
+ if (substr($gid, 0, strlen(self::NAMESAKE_PI_PREFIX)) != self::NAMESAKE_PI_PREFIX) {
throw new Exception("PI group GID doesn't have the correct prefix.");
}
- return substr($gid, strlen(self::PI_PREFIX));
+ return substr($gid, strlen(self::NAMESAKE_PI_PREFIX));
}
/**
@@ -480,7 +487,7 @@ public function addPlusAddressToMail(string $mail): string
$owner = $this->getOwner();
$suffix = "_" . $owner->getOrg();
assert(str_ends_with($owner->uid, $suffix));
- $short_name = substr($owner->uid, 0, -1 * strlen($suffix));
+ $short_name = substr($owner->uid, 0, -(1 * strlen($suffix)));
$parts = explode("@", $mail, 2);
return sprintf("%s+%s@%s", $parts[0], $short_name, $parts[1]);
}
diff --git a/resources/lib/UnityLDAP.php b/resources/lib/UnityLDAP.php
index 36eb5833a..19acc9128 100644
--- a/resources/lib/UnityLDAP.php
+++ b/resources/lib/UnityLDAP.php
@@ -236,12 +236,31 @@ public function getPIGroupGIDsWithManagerUID(
);
}
+ /** @return string[] */
+ public function getPIGroupGIDsWithOwnerUID(
+ string $uid,
+ string $base_filter = self::NON_DISABLED,
+ ): array {
+ return array_map(
+ fn($x) => $x["cn"][0],
+ $this->pi_groupOU->getChildrenArrayStrict(
+ ["cn"],
+ recursive: false,
+ filter: sprintf(
+ "(&(owneruid=%s)%s)",
+ ldap_escape($uid, flags: LDAP_ESCAPE_FILTER),
+ $base_filter,
+ ),
+ ),
+ );
+ }
+
/** @return string[] */
public function getPIGroupOwnerUIDs(string $filter = self::NON_DISABLED): array
{
return array_map(
- fn($x) => UnityGroup::GID2OwnerUID((string) $x["cn"][0]),
- $this->getPIGroupsAttributes(["cn"], filter: $filter),
+ fn($x) => (string) $x["owneruid"][0],
+ $this->getPIGroupsAttributes(["ownerUid"], filter: $filter),
);
}
diff --git a/resources/lib/UnitySQL.php b/resources/lib/UnitySQL.php
index b65b80192..6c331b26c 100644
--- a/resources/lib/UnitySQL.php
+++ b/resources/lib/UnitySQL.php
@@ -14,8 +14,9 @@ class UnitySQL
private const string TABLE_AUDIT_LOG = "audit_log";
private const string TABLE_USER_LAST_LOGINS = "user_last_logins";
// FIXME this string should be changed to something more intuitive, requires production change
- public const string REQUEST_BECOME_PI = "admin";
+ public const string REQUEST_CREATE_PI_GROUP = "admin";
private const int TABLE_AUDIT_LOG_RECIPIENT_MAX_MB_STR_LEN = 768;
+ // FIXME the `uid` column should use a more generic name since it can now conatin "uid:gid"
private PDO $conn;
diff --git a/resources/lib/UnityUser.php b/resources/lib/UnityUser.php
index a2b7db682..d8ddf753a 100644
--- a/resources/lib/UnityUser.php
+++ b/resources/lib/UnityUser.php
@@ -362,18 +362,27 @@ public function getHomeDir(): string
return $this->entry->getAttribute("homedirectory")[0];
}
- /**
- * Checks if current user is a PI
- */
+ /** @return string[] */
+ public function getOwnedPIGroupGIDs(): array
+ {
+ return $this->LDAP->getPIGroupGIDsWithOwnerUID($this->uid);
+ }
+
+ /** @return string[] */
+ public function getManagedPIGroupGIDs(): array
+ {
+ return $this->LDAP->getPIGroupGIDsWithManagerUID($this->uid);
+ }
+
public function isPI(): bool
{
- return $this->getPIGroup()->exists() && !$this->getPIGroup()->getIsDisabled();
+ return $this->getNamesakePIGroup()->exists();
}
- public function getPIGroup(): UnityGroup
+ public function getNamesakePIGroup(): UnityGroup
{
return new UnityGroup(
- UnityGroup::ownerUID2GID($this->uid),
+ UnityGroup::ownerUID2NamesakeGID($this->uid),
$this->LDAP,
$this->SQL,
$this->MAILER,
@@ -418,7 +427,7 @@ public function disable(
bool $send_mail_pi_group_owner = true,
bool $send_mail_admin = true,
): void {
- $pi_group = $this->getPIGroup();
+ $pi_group = $this->getNamesakePIGroup();
if ($pi_group->exists() && !$pi_group->getIsDisabled()) {
$pi_group->disable($send_mail);
}
diff --git a/resources/templates/header.html.twig b/resources/templates/header.html.twig
index c37b539d4..d0e3fc394 100644
--- a/resources/templates/header.html.twig
+++ b/resources/templates/header.html.twig
@@ -72,9 +72,13 @@
{{ getRelativeHyperlink('Account Settings', 'panel/account.php')|raw }}
{{ getRelativeHyperlink('My PIs', 'panel/groups.php')|raw }}
- {% if is_pi %}
- {{ getRelativeHyperlink('My Users', 'panel/pi.php')|raw }}
- {% endif %}
+ {% for gid in owned_managed_pi_group_gids %}
+ {% if uid in gid %}
+ {{ getRelativeHyperlink('My Users', 'panel/pi.php')|raw }}
+ {% else %}
+ {{ getRelativeHyperlink('PI Group ' ~ (gid|e), 'panel/pi.php?gid=' ~ (gid|e))|raw }}
+ {% endif %}
+ {% endfor %}
{% for label in CONFIG['menuitems_secure']['labels'] %}
{{ label }}
diff --git a/resources/templates/header.php b/resources/templates/header.php
index 3f2f4be8b..b5b2e7ffc 100644
--- a/resources/templates/header.php
+++ b/resources/templates/header.php
@@ -40,6 +40,7 @@
"messages" => UnityHTTPD::getMessages(),
"viewUser" => $_SESSION["viewUser"] ?? null,
"user_exists" => $_SESSION["user_exists"] ?? false,
- "is_pi" => $_SESSION["is_pi"] ?? false,
+ "uid" => $_SESSION["SSO"]["user"] ?? null,
+ "owned_managed_pi_group_gids" => $_SESSION["owned_managed_pi_group_gids"] ?? [],
"is_admin" => $_SESSION["is_admin"] ?? false
]);
diff --git a/test/functional/ExpiryWorkerTest.php b/test/functional/ExpiryWorkerTest.php
index 1db247a80..c54452842 100644
--- a/test/functional/ExpiryWorkerTest.php
+++ b/test/functional/ExpiryWorkerTest.php
@@ -59,7 +59,7 @@ public function testExpiryWorker(string $nickname, string $mail, bool $is_pi)
$this->assertFalse($USER->getFlag(UserFlag::IDLELOCKED));
$this->assertFalse($USER->getFlag(UserFlag::DISABLED));
if ($is_pi) {
- $this->assertFalse($USER->getPIGroup()->getIsDisabled());
+ $this->assertFalse($USER->getNamesakePIGroup()->getIsDisabled());
}
// see deployment/overrides/phpunit/config/config.ini
$this->assertEquals(CONFIG["expiry"]["idlelock_warning_days"], [2, 3]);
@@ -122,7 +122,7 @@ public function testExpiryWorker(string $nickname, string $mail, bool $is_pi)
$this->assertTrue($USER->getFlag(UserFlag::DISABLED));
$this->assertEmpty($USER->getSSHKeys());
if ($is_pi) {
- $this->assertTrue($USER->getPIGroup()->getIsDisabled());
+ $this->assertTrue($USER->getNamesakePIGroup()->getIsDisabled());
}
// 9 ///////////////////////////////////////////////////////////////////////////////////
$output = $this->runExpiryWorker(idle_days: 9);
@@ -132,8 +132,8 @@ public function testExpiryWorker(string $nickname, string $mail, bool $is_pi)
if ($USER->getFlag(UserFlag::DISABLED)) {
$USER->reEnable();
}
- if ($is_pi && $USER->getPIGroup()->getIsDisabled()) {
- callPrivateMethod($USER->getPIGroup(), "reenable");
+ if ($is_pi && $USER->getNamesakePIGroup()->getIsDisabled()) {
+ callPrivateMethod($USER->getNamesakePIGroup(), "reenable");
}
callPrivateMethod($USER, "setSSHKeys", $ssh_keys_before);
}
@@ -214,7 +214,7 @@ public function testGroupMembersNotified()
$member = $USER;
$this->switchUser("EmptyPIGroupOwner");
$owner = $USER;
- $pi_group = $USER->getPIGroup();
+ $pi_group = $USER->getNamesakePIGroup();
try {
$owner->setFlag(UserFlag::IDLELOCKED, true);
$pi_group->newUserRequest($member, false);
@@ -239,7 +239,7 @@ public function testGroupMembersNotified()
"idle_days" => 7,
"expiration_date" => "1970/01/10",
"is_final_warning" => true,
- "pi_group_gid" => $owner->getPIGroup()->gid,
+ "pi_group_gid" => $owner->getNamesakePIGroup()->gid,
]),
"user_expiry_disable_warning_member",
'["' . $member->getMail() . '"]',
@@ -248,7 +248,7 @@ public function testGroupMembersNotified()
"idle_days" => 7,
"expiration_date" => "1970/01/10",
"is_final_warning" => true,
- "pi_group_gid" => $owner->getPIGroup()->gid,
+ "pi_group_gid" => $owner->getNamesakePIGroup()->gid,
]),
),
$output,
@@ -266,7 +266,7 @@ public function testGroupOwnerManagersNotified()
global $USER, $LDAP, $SQL, $MAILER;
$this->switchUser("EmptyPIGroupOwner");
$owner = $USER;
- $pi_group = $USER->getPIGroup();
+ $pi_group = $USER->getNamesakePIGroup();
$this->assertEmpty($pi_group->getManagerUIDs());
$manager_uid = self::$NICKNAME2UID["Admin"];
$manager = new UnityUser($manager_uid, $LDAP, $SQL, $MAILER);
@@ -291,10 +291,7 @@ public function testGroupOwnerManagersNotified()
"idle-locking user '%s'\nsending %s email to %s with data %s",
$member->uid,
"group_user_idlelocked_owner",
- _json_encode([
- $pi_group->addPlusAddressToMail($manager->getMail()),
- $owner->getMail(),
- ]),
+ _json_encode([$manager->getMail(), $owner->getMail()]),
_json_encode([
"group" => $pi_group->gid,
"user" => $member->uid,
diff --git a/test/functional/PIBecomeRequestTest.php b/test/functional/PIBecomeRequestTest.php
index ff457db2c..dca78f975 100644
--- a/test/functional/PIBecomeRequestTest.php
+++ b/test/functional/PIBecomeRequestTest.php
@@ -4,6 +4,7 @@
use UnityWebPortal\lib\UnitySQL;
use UnityWebPortal\lib\UserFlag;
use UnityWebPortal\lib\UnityHTTPD;
+use UnityWebPortal\lib\UnityGroup;
class PIBecomeRequestTest extends UnityWebPortalTestCase
{
@@ -27,11 +28,12 @@ private function cancelRequestGroupCreation()
]);
}
- private function approveGroup($uid)
+ private function approveGroup($uid, $gid)
{
$this->http_post(__DIR__ . "/../../webroot/admin/pi-mgmt.php", [
"form_type" => "req",
"action" => "Approve",
+ "pi" => $gid,
"uid" => $uid,
]);
}
@@ -40,6 +42,8 @@ public function testRequestBecomePi()
{
global $USER, $SQL;
$this->switchUser("Blank");
+ $gid = UnityGroup::ownerUID2NamesakeGID($USER->uid);
+ $request = "$USER->uid:$gid";
$this->assertNumberPiBecomeRequests(0);
try {
$this->http_post(__DIR__ . "/../../webroot/panel/account.php", [
@@ -69,8 +73,8 @@ public function testRequestBecomePi()
);
$this->assertNumberPiBecomeRequests(1);
} finally {
- if ($SQL->requestExists($USER, UnitySQL::REQUEST_BECOME_PI)) {
- $SQL->removeRequest($USER->uid, UnitySQL::REQUEST_BECOME_PI);
+ if ($SQL->requestExists($request, UnitySQL::REQUEST_CREATE_PI_GROUP)) {
+ $SQL->removeRequest($request, UnitySQL::REQUEST_CREATE_PI_GROUP);
}
}
}
@@ -79,7 +83,7 @@ public function testApprovePI()
{
global $USER, $SSO, $LDAP, $SQL, $MAILER;
$this->switchUser("Blank");
- $pi_group = $USER->getPIGroup();
+ $pi_group = $USER->getNamesakePIGroup();
try {
$this->requestGroupCreation();
$this->assertRequestedPIGroup(true);
@@ -97,7 +101,7 @@ public function testApprovePI()
$approve_uid = $SSO["user"];
$this->switchUser("Admin");
- $this->approveGroup($approve_uid);
+ $this->approveGroup($approve_uid, $pi_group->gid);
$this->switchUser("Blank", validate: false);
$this->assertRequestedPIGroup(false);
@@ -120,13 +124,13 @@ public function testReenableGroup()
$this->switchUser("ReenabledOwnerOfDisabledPIGroup");
$this->assertFalse($USER->isPI());
$user = $USER;
- $pi_group = $USER->getPIGroup();
+ $pi_group = $USER->getNamesakePIGroup();
$approve_uid = $USER->uid;
try {
$this->requestGroupCreation();
$this->assertRequestedPIGroup(true);
$this->switchUser("Admin");
- $this->approveGroup($approve_uid);
+ $this->approveGroup($approve_uid, $pi_group->gid);
$this->assertTrue($user->isPI());
} finally {
if ($pi_group->memberUIDExists($approve_uid)) {
@@ -141,24 +145,26 @@ public function testDenyPiBecomeRequest()
{
global $USER, $LDAP, $SQL, $MAILER;
$this->switchUser("Blank");
- $piGroup = $USER->getPIGroup();
+ $uid = $USER->uid;
+ $piGroup = $USER->getNamesakePIGroup();
$this->assertFalse($piGroup->exists());
- $this->assertFalse($SQL->requestExists($USER->uid, UnitySQL::REQUEST_BECOME_PI));
- $piGroup->requestGroup();
+ $request = "$USER->uid:$piGroup->gid";
+ $this->assertFalse($SQL->requestExists($request, UnitySQL::REQUEST_CREATE_PI_GROUP));
+ $piGroup->requestGroup($USER->uid);
try {
- $this->assertTrue($SQL->requestExists($USER->uid, UnitySQL::REQUEST_BECOME_PI));
+ $this->assertTrue($SQL->requestExists($request, UnitySQL::REQUEST_CREATE_PI_GROUP));
$this->switchUser("Admin");
$this->http_post(__DIR__ . "/../../webroot/admin/pi-mgmt.php", [
"form_type" => "req",
"action" => "Deny",
- "uid" => $piGroup->getOwner()->uid,
+ "uid" => $uid,
+ "pi" => $piGroup->gid,
]);
- $this->switchBackUser();
$this->assertFalse($piGroup->exists());
- $this->assertFalse($SQL->requestExists($USER->uid, UnitySQL::REQUEST_BECOME_PI));
+ $this->assertFalse($SQL->requestExists($request, UnitySQL::REQUEST_CREATE_PI_GROUP));
} finally {
- if ($SQL->requestExists($USER->uid, UnitySQL::REQUEST_BECOME_PI)) {
- $SQL->removeRequest($USER->uid, UnitySQL::REQUEST_BECOME_PI);
+ if ($SQL->requestExists($request, UnitySQL::REQUEST_CREATE_PI_GROUP)) {
+ $SQL->removeRequest($request, UnitySQL::REQUEST_CREATE_PI_GROUP);
}
}
}
diff --git a/test/functional/PIDisableTest.php b/test/functional/PIDisableTest.php
index 788ae5a44..5d775859e 100644
--- a/test/functional/PIDisableTest.php
+++ b/test/functional/PIDisableTest.php
@@ -9,7 +9,7 @@ public function testDisableGroupByAdmin()
{
global $USER, $LDAP;
$this->switchUser("EmptyPIGroupOwner");
- $pi_group = $USER->getPIGroup();
+ $pi_group = $USER->getNamesakePIGroup();
$memberuids_before = $pi_group->getMemberUIDs();
$this->assertFalse($pi_group->getIsDisabled());
$this->assertNotEmpty($pi_group->getMemberUIDs());
@@ -36,7 +36,7 @@ public function testDisableGroupByOwner()
{
global $USER, $LDAP;
$this->switchUser("EmptyPIGroupOwner");
- $pi_group = $USER->getPIGroup();
+ $pi_group = $USER->getNamesakePIGroup();
$memberuids_before = $pi_group->getMemberUIDs();
$this->assertFalse($pi_group->getIsDisabled());
$this->assertNotEmpty($pi_group->getMemberUIDs());
@@ -85,7 +85,7 @@ public function testMemberBecomesUnqualified()
$new_user = $USER;
$this->assertFalse($new_user->getFlag(UserFlag::QUALIFIED));
$this->switchUser("EmptyPIGroupOwner");
- $pi_group = $USER->getPIGroup();
+ $pi_group = $USER->getNamesakePIGroup();
$memberuids_before = $pi_group->getMemberUIDs();
try {
$pi_group->newUserRequest($new_user);
@@ -113,7 +113,7 @@ public function testPICannotDisableIfMembersExist()
$new_user = $USER;
$this->assertFalse($new_user->getFlag(UserFlag::QUALIFIED));
$this->switchUser("EmptyPIGroupOwner");
- $pi_group = $USER->getPIGroup();
+ $pi_group = $USER->getNamesakePIGroup();
$memberuids_before = $pi_group->getMemberUIDs();
try {
$pi_group->newUserRequest($new_user);
@@ -141,7 +141,7 @@ public function testGetDisabledSetDisabled()
{
global $USER, $LDAP;
$this->switchUser("NormalPI");
- $pi_group = $USER->getPIGroup();
+ $pi_group = $USER->getNamesakePIGroup();
$entry = $LDAP->getPIGroupEntry($pi_group->gid);
$this->assertEquals([], $entry->getAttribute("isDisabled"));
try {
@@ -162,7 +162,7 @@ public function testPIMgmtShowsBothGroupsWithDisabledAttributeSetFalseAndUnset()
{
global $USER, $LDAP;
$this->switchUser("NormalPI");
- $pi_group = $USER->getPIGroup();
+ $pi_group = $USER->getNamesakePIGroup();
$entry = $LDAP->getPIGroupEntry($pi_group->gid);
$this->assertEquals([], $entry->getAttribute("isDisabled"));
$this->switchUser("Admin");
diff --git a/test/functional/PIMemberRequestTest.php b/test/functional/PIMemberRequestTest.php
index 15b943e35..b8f8656da 100644
--- a/test/functional/PIMemberRequestTest.php
+++ b/test/functional/PIMemberRequestTest.php
@@ -32,7 +32,7 @@ private function cancelRequest(string $gid)
private function approveUserByPI(string $uid, string $gid)
{
global $USER;
- assert($USER->getPIGroup()->gid === $gid, "signed in user must be the group owner");
+ assert($USER->getNamesakePIGroup()->gid === $gid, "signed in user must be the group owner");
$this->http_post(__DIR__ . "/../../webroot/panel/pi.php", [
"form_type" => "userReq",
"action" => "Approve",
@@ -67,7 +67,7 @@ private function denyRequestByPI(string $uid)
private function denyRequestByAdmin(string $uid)
{
global $USER;
- $gid = $USER->getPIGroup()->gid;
+ $gid = $USER->getNamesakePIGroup()->gid;
$this->switchUser("Admin");
try {
$this->http_post(__DIR__ . "/../../webroot/admin/pi-mgmt.php", [
@@ -85,7 +85,7 @@ public function testRequestMembershipAndCancel()
{
global $USER, $SQL;
$this->switchUser("EmptyPIGroupOwner");
- $pi_group = $USER->getPIGroup();
+ $pi_group = $USER->getNamesakePIGroup();
$this->switchUser("Blank");
try {
$this->requestMembership($pi_group->gid);
@@ -103,7 +103,7 @@ public function testRequestMembershipBogus()
{
global $USER, $SQL;
$this->switchUser("EmptyPIGroupOwner");
- $pi_group = $USER->getPIGroup();
+ $pi_group = $USER->getNamesakePIGroup();
$this->switchUser("Blank");
try {
UnityHTTPD::clearMessages();
@@ -125,7 +125,7 @@ public function testRequestMembershipDuplicate()
{
global $USER, $SQL;
$this->switchUser("EmptyPIGroupOwner");
- $pi_group = $USER->getPIGroup();
+ $pi_group = $USER->getNamesakePIGroup();
$this->switchUser("Blank");
$this->assertNumberRequests(0);
try {
@@ -180,7 +180,7 @@ public function testApproveNonexistentRequest($methodName)
$this->switchUser("Blank");
$uid = $USER->uid;
$this->switchUser("EmptyPIGroupOwner");
- $piGroup = $USER->getPIGroup();
+ $piGroup = $USER->getNamesakePIGroup();
try {
$this->expectException(Exception::class); // FIXME more specific exception type
$this->$methodName($uid, $piGroup->gid);
@@ -196,7 +196,7 @@ public function testApproveMember($methodName)
global $USER, $SSO, $LDAP, $SQL, $MAILER;
$this->switchUser("EmptyPIGroupOwner");
$pi_uid = $USER->uid;
- $pi_group = $USER->getPIGroup();
+ $pi_group = $USER->getNamesakePIGroup();
$gid = $pi_group->gid;
$this->switchUser("Blank");
try {
@@ -234,7 +234,7 @@ public function testDenyRequest(string $methodName)
$requestedUser = $USER;
$this->switchUser("EmptyPIGroupOwner");
$pi = $USER;
- $piGroup = $USER->getPIGroup();
+ $piGroup = $USER->getNamesakePIGroup();
$this->assertEmpty($piGroup->getRequests());
$this->assertEqualsCanonicalizing([$pi->uid], $piGroup->getMemberUIDs());
try {
diff --git a/test/functional/PIRemoveUserTest.php b/test/functional/PIRemoveUserTest.php
index 0b38766c3..d59ae2a64 100644
--- a/test/functional/PIRemoveUserTest.php
+++ b/test/functional/PIRemoveUserTest.php
@@ -11,7 +11,7 @@ class PIRemoveUserTest extends UnityWebPortalTestCase
private function removeUserByPI(string $uid, string $gid)
{
global $USER;
- assert($USER->getPIGroup()->gid === $gid, "signed in user must be the group owner");
+ assert($USER->getNamesakePIGroup()->gid === $gid, "signed in user must be the group owner");
$this->http_post(__DIR__ . "/../../webroot/panel/pi.php", [
"form_type" => "remUser",
"uid" => $uid,
@@ -45,7 +45,7 @@ public function testRemoveUser($methodName)
$this->switchUser("NormalPI");
$pi = $USER;
$piUid = $USER->uid;
- $piGroup = $USER->getPIGroup();
+ $piGroup = $USER->getNamesakePIGroup();
$memberUIDs = $piGroup->getMemberUIDs();
// the ordering of the uids in getGroupMemberUIDs is different each time
// use a linear search to find a user who is not the PI
@@ -78,7 +78,7 @@ public function testRemovePIFromTheirOwnGroup($methodName)
global $USER, $LDAP, $SQL, $MAILER;
$this->switchUser("NormalPI");
$pi = $USER;
- $piGroup = $USER->getPIGroup();
+ $piGroup = $USER->getNamesakePIGroup();
$this->expectException(Exception::class);
try {
$this->$methodName($piGroup->getOwner()->uid, $piGroup->gid);
@@ -93,9 +93,10 @@ public function testRemovePIFromTheirOwnGroup($methodName)
public function testRemoveMemberAlsoRemovesManager()
{
- global $USER;
+ global $USER, $LDAP, $SQL, $MAILER;
$this->switchUser("CourseGroupOwner");
- $group = $USER->getPIGroup();
+ $gid = $LDAP->getPIGroupGIDsWithOwnerUID($USER->uid)[0];
+ $group = new UnityGroup($gid, $LDAP, $SQL, $MAILER);
$manager_uids = $group->getManagerUIDs();
$this->assertNotEmpty($manager_uids);
$manager_uid = $manager_uids[0];
diff --git a/test/functional/PageLoadTest.php b/test/functional/PageLoadTest.php
index e62993c55..fceef52ea 100644
--- a/test/functional/PageLoadTest.php
+++ b/test/functional/PageLoadTest.php
@@ -89,7 +89,7 @@ public function testLoadPIPageForAnotherGroupForbidden()
{
global $USER;
$this->switchUser("EmptyPIGroupOwner");
- $gid = $USER->getPIGroup()->gid;
+ $gid = $USER->getNamesakePIGroup()->gid;
$this->switchUser("Blank");
$output = $this->http_get(
__DIR__ . "/../../webroot/panel/pi.php",
diff --git a/test/functional/WorkerRemoveUsersFromGroupTest.php b/test/functional/WorkerRemoveUsersFromGroupTest.php
index 665ae9b14..4f9ada862 100644
--- a/test/functional/WorkerRemoveUsersFromGroupTest.php
+++ b/test/functional/WorkerRemoveUsersFromGroupTest.php
@@ -10,7 +10,7 @@ public function testRemoveUsersFromGroup()
global $USER, $LDAP, $SQL, $MAILER;
$this->switchUser("EmptyPIGroupOwner");
$pi = $USER;
- $pi_group = $USER->getPIGroup();
+ $pi_group = $USER->getNamesakePIGroup();
$this->assertTrue($pi->isPI());
$this->assertEqualsCanonicalizing([$pi->uid], $pi_group->getMemberUIDs());
$this->assertEqualsCanonicalizing([$pi->uid], $pi_group->getMemberUIDs());
@@ -33,7 +33,7 @@ public function testRemoveUsersFromGroup()
print implode("\n", $output);
$this->switchUser("EmptyPIGroupOwner", validate: false);
$pi = $USER;
- $pi_group = $USER->getPIGroup();
+ $pi_group = $USER->getNamesakePIGroup();
$this->assertEqualsCanonicalizing($expected_new_uids, $pi_group->getMemberUIDs());
$this->assertEqualsCanonicalizing($expected_new_uids, $pi_group->getMemberUIDs());
} finally {
@@ -77,7 +77,7 @@ public function testRemoveNonexistentUID()
{
global $USER;
$this->switchUser("EmptyPIGroupOwner");
- $pi_group = $USER->getPIGroup();
+ $pi_group = $USER->getNamesakePIGroup();
$members_before = $pi_group->getMemberUIDs();
$remove_uids_file = writeLinesToTmpFile(["foo", "bar"]);
$remove_uids_file_path = getPathFromFileHandle($remove_uids_file);
diff --git a/test/functional/WorkerUnityCourseTest.php b/test/functional/WorkerUnityCourseTest.php
index 187c713e9..56c2339a9 100644
--- a/test/functional/WorkerUnityCourseTest.php
+++ b/test/functional/WorkerUnityCourseTest.php
@@ -2,29 +2,24 @@
class WorkerUnityCourseTest extends UnityWebPortalTestCase
{
- private static string $course_owner_uid = "cs124_org1_test";
+ private static string $course_owner_uid = "user2_org1_test";
+ private static string $course_manager_uid = "user3_org1_test";
private static string $course_gid = "pi_cs124_org1_test";
- private static array $course_owner_name = ["cs124", "Fall 2025"];
- private static string $manager_uid = "user2_org1_test";
- private static string $manager_mail = "user2@org1.test";
- private static string $courseOwnerMail = "user2+cs124@org1.test";
+ private static array $course_info = ["cs124", "Fall 2025"];
public function testCreateCourse()
{
global $LDAP, $USER;
$this->switchUser("Blank");
- $this->assertEquals(self::$manager_uid, $USER->uid);
- $this->assertEquals(self::$manager_mail, $USER->getMail());
- $manager = $USER;
+ $this->assertEquals(self::$course_owner_uid, $USER->uid);
$pi_group_entry = $LDAP->getPIGroupEntry(self::$course_gid);
- $owner_user_entry = $LDAP->getUserEntry(self::$course_owner_uid);
$this->assertFalse($pi_group_entry->exists());
- $this->assertFalse($owner_user_entry->exists());
$stdin_file = writeLinesToTmpFile([
- self::$course_owner_name[0],
- self::$course_owner_name[1],
+ self::$course_info[0],
+ self::$course_info[1],
+ self::$course_gid,
self::$course_owner_uid,
- self::$manager_uid,
+ self::$course_manager_uid,
]);
$stdin_file_path = getPathFromFileHandle($stdin_file);
try {
@@ -34,21 +29,25 @@ public function testCreateCourse()
unset($GLOBALS["ldapconn"]);
$this->switchUser("Admin");
$pi_group_entry = $LDAP->getPIGroupEntry(self::$course_gid);
- $owner_user_entry = $LDAP->getUserEntry(self::$course_owner_uid);
$this->assertTrue($pi_group_entry->exists());
- $this->assertTrue($owner_user_entry->exists());
- $this->assertEquals(self::$courseOwnerMail, $owner_user_entry->getAttribute("mail")[0]);
$this->assertEqualsCanonicalizing(
- [self::$course_owner_uid, $manager->uid],
+ [self::$course_owner_uid, self::$course_manager_uid],
$pi_group_entry->getAttribute("memberuid"),
);
$this->assertEqualsCanonicalizing(
- [$manager->uid],
+ [self::$course_manager_uid],
$pi_group_entry->getAttribute("manageruid"),
);
+ $this->assertEqualsCanonicalizing(
+ [self::$course_owner_uid],
+ $pi_group_entry->getAttribute("owneruid"),
+ );
+ $this->assertEqualsCanonicalizing(
+ [self::$course_info[0] . " " . self::$course_info[1]],
+ $pi_group_entry->getAttribute("description"),
+ );
} finally {
ensurePIGroupDoesNotExist(self::$course_gid);
- ensureUserDoesNotExist(self::$course_owner_uid);
unlink($stdin_file_path);
}
}
diff --git a/test/functional/WorkerUpdateQualifiedUsersGroupTest.php b/test/functional/WorkerUpdateQualifiedUsersGroupTest.php
index 62583f0c4..3f504d0d7 100644
--- a/test/functional/WorkerUpdateQualifiedUsersGroupTest.php
+++ b/test/functional/WorkerUpdateQualifiedUsersGroupTest.php
@@ -9,7 +9,7 @@ public function testQualifyUser()
{
global $USER, $LDAP, $SQL, $MAILER;
$this->switchUser("EmptyPIGroupOwner");
- $pi_group = $USER->getPIGroup();
+ $pi_group = $USER->getNamesakePIGroup();
$this->switchUser("Blank");
$user = $USER;
$expectedOutput = [
diff --git a/test/phpunit-bootstrap.php b/test/phpunit-bootstrap.php
index c1986b35e..19d3bcf3f 100644
--- a/test/phpunit-bootstrap.php
+++ b/test/phpunit-bootstrap.php
@@ -202,6 +202,12 @@ function accessPrivateVariable($obj, string $name)
return $property->getValue($obj);
}
+function accessPrivateConst($obj, string $name)
+{
+ $class = new \ReflectionClass($obj);
+ return $class->getConstant($name);
+}
+
class UnityWebPortalTestCase extends TestCase
{
private ?string $last_user_nickname = null;
@@ -238,8 +244,8 @@ class UnityWebPortalTestCase extends TestCase
"Admin" => "user1_org1_test",
"Blank" => "user2_org1_test",
"EmptyPIGroupOwner" => "user5_org2_test",
- "CourseGroupOwner" => "cs123_org1_test",
- "CourseGroupManager" => "user1_org1_test",
+ "CourseGroupOwner" => "user1_org1_test",
+ "CourseGroupManager" => "user3_org1_test",
"CustomMapped555" => "user2002_org998_test",
"Disabled" => "user7_org1_test",
"DisabledNotPI" => "user7_org1_test",
@@ -282,8 +288,8 @@ public function validateUser(string $nickname)
$this->assertTrue($LDAP->getOrgGroupEntry($USER->getOrg())->exists());
break;
case "CourseGroupOwner":
- $this->assertTrue($USER->getPIGroup()->exists());
- $this->assertNotEmpty($USER->getPIGroup()->getManagerUIDs());
+ $this->assertTrue($USER->getNamesakePIGroup()->exists());
+ $this->assertNotEmpty($LDAP->getPIGroupGIDsWithOwnerUID($USER->uid));
break;
case "CourseGroupManager":
$this->assertNotEmpty($LDAP->getPIGroupGIDsWithManagerUID($USER->uid));
@@ -295,7 +301,7 @@ public function validateUser(string $nickname)
break;
case "EmptyPIGroupOwner":
$this->assertTrue($USER->isPI());
- $pi_group = $USER->getPIGroup();
+ $pi_group = $USER->getNamesakePIGroup();
$this->assertEqualsCanonicalizing([$USER->uid], $pi_group->getMemberUIDs());
$this->assertEmpty($pi_group->getRequests());
break;
@@ -304,12 +310,12 @@ public function validateUser(string $nickname)
break;
case "DisabledOwnerOfDisabledPIGroup":
$this->assertTrue($USER->getFlag(UserFlag::DISABLED));
- $this->assertTrue($USER->getPIGroup()->exists());
- $this->assertTrue($USER->getPIGroup()->getIsDisabled());
+ $this->assertTrue($USER->getNamesakePIGroup()->exists());
+ $this->assertTrue($USER->getNamesakePIGroup()->getIsDisabled());
break;
case "DisabledNotPI":
$this->assertTrue($USER->getFlag(UserFlag::DISABLED));
- $this->assertFalse($USER->getPIGroup()->exists());
+ $this->assertFalse($USER->getNamesakePIGroup()->exists());
break;
case "DisabledPIGroup_user9_org3_test_Manager":
$pi_group_entry = $LDAP->getPIGroupEntry("pi_user9_org3_test");
@@ -320,8 +326,8 @@ public function validateUser(string $nickname)
$this->assertTrue($USER->exists());
$this->assertFalse($USER->getFlag(UserFlag::DISABLED));
$this->assertFalse($USER->isPI());
- $this->assertTrue($USER->getPIGroup()->exists());
- $this->assertTrue($USER->getPIGroup()->getIsDisabled());
+ $this->assertTrue($USER->getNamesakePIGroup()->exists());
+ $this->assertTrue($USER->getNamesakePIGroup()->getIsDisabled());
break;
case "HasNoSshKeys":
$this->assertEmpty($USER->getSSHKeys());
@@ -333,7 +339,7 @@ public function validateUser(string $nickname)
break;
case "ImmortalNotPI":
$this->assertTrue($USER->getFlag(UserFlag::IMMORTAL));
- $this->assertFalse($USER->getPIGroup()->exists());
+ $this->assertFalse($USER->getNamesakePIGroup()->exists());
break;
case "Locked":
$this->assertTrue($USER->getFlag(UserFlag::LOCKED));
@@ -358,7 +364,10 @@ public function validateUser(string $nickname)
break;
case "NormalPI":
$this->assertTrue($USER->isPI());
- $this->assertGreaterThanOrEqual(2, count($USER->getPIGroup()->getMemberUIDs()));
+ $this->assertGreaterThanOrEqual(
+ 2,
+ count($USER->getNamesakePIGroup()->getMemberUIDs()),
+ );
break;
case "HasOneSshKey":
$this->assertEquals(1, count($USER->getSSHKeys()));
@@ -429,22 +438,25 @@ public function assertRequestedMembership(bool $expected, string $gid)
public function assertRequestedPIGroup(bool $expected)
{
global $USER, $SQL;
+ $gid = UnityGroup::ownerUID2NamesakeGID($USER->uid);
+ $request = "$USER->uid:$gid";
$this->assertEquals(
$expected,
- $SQL->requestExists($USER->uid, UnitySQL::REQUEST_BECOME_PI),
+ $SQL->requestExists($request, UnitySQL::REQUEST_CREATE_PI_GROUP),
);
}
public function getNumberPiBecomeRequests()
{
global $USER, $SQL;
- // FIXME table name, "admin" are public constants in UnitySQL
- // FIXME "admin" should be something else
+ $gid = UnityGroup::ownerUID2NamesakeGID($USER->uid);
+ $request = "$USER->uid:$gid";
+ $table = accessPrivateConst($SQL, "TABLE_REQS");
+ $request_for = accessPrivateConst($SQL, "REQUEST_CREATE_PI_GROUP");
$stmt = $SQL
->getConn()
- ->prepare("SELECT * FROM requests WHERE uid=:uid and request_for='admin'");
- $uid = $USER->uid;
- $stmt->bindParam(":uid", $uid);
+ ->prepare("SELECT * FROM $table WHERE uid=:request and request_for='$request_for'");
+ $stmt->bindParam(":request", $request);
$stmt->execute();
return count($stmt->fetchAll());
}
@@ -452,10 +464,12 @@ public function getNumberPiBecomeRequests()
public function assertNumberPiBecomeRequests(int $x)
{
global $USER, $SQL;
+ $gid = UnityGroup::ownerUID2NamesakeGID($USER->uid);
+ $request = "$USER->uid:$gid";
if ($x == 0) {
- $this->assertFalse($SQL->requestExists($USER->uid, UnitySQL::REQUEST_BECOME_PI));
+ $this->assertFalse($SQL->requestExists($request, UnitySQL::REQUEST_CREATE_PI_GROUP));
} elseif ($x > 0) {
- $this->assertTrue($SQL->requestExists($USER->uid, UnitySQL::REQUEST_BECOME_PI));
+ $this->assertTrue($SQL->requestExists($request, UnitySQL::REQUEST_CREATE_PI_GROUP));
} else {
throw new RuntimeException("x must not be negative");
}
diff --git a/tools/docker-dev/identity/account-portal-schema.ldif b/tools/docker-dev/identity/account-portal-schema.ldif
index 2603ce996..9f5a86e09 100644
--- a/tools/docker-dev/identity/account-portal-schema.ldif
+++ b/tools/docker-dev/identity/account-portal-schema.ldif
@@ -12,7 +12,17 @@ olcAttributeTypes: ( 1.1.3 NAME 'managerUid'
EQUALITY caseExactIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
)
+olcAttributeTypes: ( 1.1.4 NAME 'ownerUid'
+ DESC 'group owner'
+ EQUALITY caseIgnoreMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
+ SINGLE-VALUE
+ )
olcObjectClasses: ( 1.1.2 NAME 'piGroup' SUP top AUXILIARY
- DESC 'PI Group'
+ DESC 'DEPRECATED, DO NOT USE'
MAY ( isDisabled $ managerUid )
)
+olcObjectClasses: ( 1.1.5 NAME 'unityGroup' SUP top AUXILIARY
+ DESC 'general-purpose group in the Unity HPC Platform'
+ MAY ( isDisabled $ managerUid $ ownerUid )
+ )
diff --git a/tools/docker-dev/identity/bootstrap.ldif b/tools/docker-dev/identity/bootstrap.ldif
index da84e0043..c8671b510 100644
--- a/tools/docker-dev/identity/bootstrap.ldif
+++ b/tools/docker-dev/identity/bootstrap.ldif
@@ -1206,7 +1206,6 @@ memberuid: user1299_org1_test
memberuid: user1300_org1_test
memberuid: user1301_org1_test
memberuid: user1304_org1_test
-memberuid: cs123_org1_test
dn: cn=user15_org3_test,ou=user_groups,dc=unityhpc,dc=test
cn: user15_org3_test
@@ -10429,15 +10428,17 @@ objectclass: top
dn: cn=pi_user36_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user36_org2_test
+owneruid: user36_org2_test
gidnumber: 10206
memberuid: user36_org2_test
memberuid: user912_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user42_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user42_org1_test
+owneruid: user42_org1_test
gidnumber: 10264
memberuid: user42_org1_test
memberuid: user1052_org1_test
@@ -10505,29 +10506,32 @@ memberuid: user1095_org1_test
memberuid: user414_org1_test
memberuid: user1020_org1_test
memberuid: user1177_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user45_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user45_org1_test
+owneruid: user45_org1_test
gidnumber: 10243
memberuid: user45_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user51_org3_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user51_org3_test
+owneruid: user51_org3_test
gidnumber: 10222
memberuid: user51_org3_test
memberuid: user934_org3_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user52_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user52_org1_test
+owneruid: user52_org1_test
gidnumber: 10151
memberuid: user52_org1_test
memberuid: user1178_org1_test
@@ -10541,29 +10545,32 @@ memberuid: user477_org1_test
memberuid: user1265_org1_test
memberuid: user1021_org1_test
memberuid: user348_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user57_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user57_org2_test
+owneruid: user57_org2_test
gidnumber: 10132
memberuid: user57_org2_test
memberuid: user67_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user66_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user66_org2_test
+owneruid: user66_org2_test
gidnumber: 10199
memberuid: user66_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user70_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user70_org1_test
+owneruid: user70_org1_test
gidnumber: 10082
memberuid: user70_org1_test
memberuid: user1287_org1_test
@@ -10573,38 +10580,42 @@ memberuid: user1073_org1_test
memberuid: user1257_org1_test
memberuid: user85_org1_test
memberuid: user41_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user72_org3_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user72_org3_test
+owneruid: user72_org3_test
gidnumber: 10223
memberuid: user72_org3_test
memberuid: user1223_org3_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user78_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user78_org1_test
+owneruid: user78_org1_test
gidnumber: 10157
memberuid: user78_org1_test
memberuid: user526_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user93_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user93_org1_test
+owneruid: user93_org1_test
gidnumber: 10101
memberuid: user93_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user94_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user94_org1_test
+owneruid: user94_org1_test
gidnumber: 10088
memberuid: user94_org1_test
memberuid: user836_org1_test
@@ -10615,21 +10626,23 @@ memberuid: user747_org1_test
memberuid: user516_org1_test
memberuid: user821_org1_test
memberuid: user1196_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user113_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user113_org1_test
+owneruid: user113_org1_test
gidnumber: 10099
memberuid: user113_org1_test
memberuid: user272_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user126_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user126_org2_test
+owneruid: user126_org2_test
gidnumber: 10077
memberuid: user126_org2_test
memberuid: user321_org2_test
@@ -10637,12 +10650,13 @@ memberuid: user791_org2_test
memberuid: user987_org2_test
memberuid: user904_org2_test
memberuid: user839_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user130_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user130_org1_test
+owneruid: user130_org1_test
gidnumber: 10008
memberuid: user130_org1_test
memberuid: user427_org1_test
@@ -10650,155 +10664,171 @@ memberuid: user60_org1_test
memberuid: user29_org1_test
memberuid: user46_org1_test
memberuid: user734_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user135_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user135_org1_test
+owneruid: user135_org1_test
gidnumber: 10063
memberuid: user135_org1_test
memberuid: user860_org1_test
memberuid: user574_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user138_org3_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user138_org3_test
+owneruid: user138_org3_test
gidnumber: 10116
memberuid: user138_org3_test
memberuid: user512_org3_test
memberuid: user406_org3_test
memberuid: user1054_org3_test
memberuid: user850_org3_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user149_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user149_org1_test
+owneruid: user149_org1_test
gidnumber: 10071
memberuid: user149_org1_test
memberuid: user263_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user150_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user150_org1_test
+owneruid: user150_org1_test
gidnumber: 10254
memberuid: user150_org1_test
memberuid: user1250_org1_test
memberuid: user208_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user162_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user162_org1_test
+owneruid: user162_org1_test
gidnumber: 10228
memberuid: user162_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user163_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user163_org1_test
+owneruid: user163_org1_test
gidnumber: 10179
memberuid: user163_org1_test
memberuid: user300_org1_test
memberuid: user749_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user166_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user166_org2_test
+owneruid: user166_org2_test
gidnumber: 10165
memberuid: user166_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user167_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user167_org1_test
+owneruid: user167_org1_test
gidnumber: 10009
memberuid: user167_org1_test
memberuid: user1097_org1_test
memberuid: user690_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user176_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user176_org2_test
+owneruid: user176_org2_test
gidnumber: 10216
memberuid: user176_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user181_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user181_org1_test
+owneruid: user181_org1_test
gidnumber: 10245
memberuid: user181_org1_test
memberuid: user909_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user182_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user182_org1_test
+owneruid: user182_org1_test
gidnumber: 10150
memberuid: user182_org1_test
memberuid: user752_org1_test
memberuid: user529_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user187_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user187_org1_test
+owneruid: user187_org1_test
gidnumber: 10103
memberuid: user187_org1_test
memberuid: user99_org1_test
memberuid: user1141_org1_test
memberuid: user236_org1_test
memberuid: user757_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user188_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user188_org1_test
+owneruid: user188_org1_test
gidnumber: 10143
memberuid: user188_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user190_org000000007_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user190_org000000007_test
+owneruid: user190_org000000007_test
gidnumber: 10260
memberuid: user190_org000000007_test
memberuid: user211_org000000007_test
memberuid: user1164_org000000007_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user191_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user191_org2_test
+owneruid: user191_org2_test
gidnumber: 10181
memberuid: user191_org2_test
memberuid: user1113_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user194_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user194_org1_test
+owneruid: user194_org1_test
gidnumber: 10079
memberuid: user194_org1_test
memberuid: user360_org1_test
@@ -10812,30 +10842,33 @@ memberuid: user1032_org13_test
memberuid: user851_org1_test
memberuid: user576_org1_test
memberuid: user508_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user5_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user5_org2_test
+owneruid: user5_org2_test
gidnumber: 10135
memberuid: user5_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user197_org3_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user197_org3_test
+owneruid: user197_org3_test
gidnumber: 10230
memberuid: user197_org3_test
memberuid: user639_org3_test
memberuid: user748_org3_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user198_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user198_org1_test
+owneruid: user198_org1_test
gidnumber: 10154
memberuid: user198_org1_test
memberuid: user1199_org1_test
@@ -10843,37 +10876,41 @@ memberuid: user269_org1_test
memberuid: user1007_org1_test
memberuid: user1258_org1_test
memberuid: user317_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user200_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user200_org2_test
+owneruid: user200_org2_test
gidnumber: 10275
memberuid: user200_org2_test
memberuid: user662_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user201_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user201_org1_test
+owneruid: user201_org1_test
gidnumber: 10010
memberuid: user201_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user205_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user205_org1_test
+owneruid: user205_org1_test
gidnumber: 10274
memberuid: user205_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user206_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user206_org1_test
+owneruid: user206_org1_test
gidnumber: 10048
memberuid: user206_org1_test
memberuid: user769_org1_test
@@ -10881,20 +10918,22 @@ memberuid: user588_org1_test
memberuid: user384_org1_test
memberuid: user1081_org1_test
memberuid: user772_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user207_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user207_org1_test
+owneruid: user207_org1_test
gidnumber: 10220
memberuid: user207_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user212_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user212_org1_test
+owneruid: user212_org1_test
gidnumber: 10074
memberuid: user212_org1_test
memberuid: user793_org1_test
@@ -10904,20 +10943,22 @@ memberuid: user566_org1_test
memberuid: user511_org1_test
memberuid: user950_org1_test
memberuid: user894_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user214_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user214_org1_test
+owneruid: user214_org1_test
gidnumber: 10145
memberuid: user214_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user216_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user216_org1_test
+owneruid: user216_org1_test
gidnumber: 10005
memberuid: user216_org1_test
memberuid: user340_org1_test
@@ -10928,34 +10969,37 @@ memberuid: user1016_org1_test
memberuid: user776_org1_test
memberuid: user1285_org1_test
memberuid: user472_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user219_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user219_org1_test
+owneruid: user219_org1_test
gidnumber: 10012
memberuid: user219_org1_test
memberuid: user645_org1_test
memberuid: user745_org1_test
memberuid: user230_org1_test
memberuid: user364_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user226_org3_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user226_org3_test
+owneruid: user226_org3_test
gidnumber: 10164
memberuid: user226_org3_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user9_org3_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user9_org3_test
+owneruid: user9_org3_test
gidnumber: 10094
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
isDisabled: TRUE
@@ -10963,51 +11007,57 @@ manageruid: user12_org1_test
dn: cn=pi_user10_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user10_org1_test
+owneruid: user10_org1_test
gidnumber: 2257
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
isDisabled: TRUE
dn: cn=pi_user242_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user242_org1_test
+owneruid: user242_org1_test
gidnumber: 10052
memberuid: user242_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user247_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user247_org1_test
+owneruid: user247_org1_test
gidnumber: 10126
memberuid: user247_org1_test
memberuid: user178_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user252_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user252_org1_test
+owneruid: user252_org1_test
gidnumber: 10261
memberuid: user252_org1_test
memberuid: user482_org1_test
memberuid: user254_org1_test
memberuid: user1239_org1_test
memberuid: user918_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user253_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user253_org1_test
+owneruid: user253_org1_test
gidnumber: 10013
memberuid: user253_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user256_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user256_org1_test
+owneruid: user256_org1_test
gidnumber: 10006
memberuid: user256_org1_test
memberuid: user1247_org1_test
@@ -11027,197 +11077,218 @@ memberuid: user767_org1_test
memberuid: user56_org1_test
memberuid: user1200_org1_test
memberuid: user280_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user264_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user264_org1_test
+owneruid: user264_org1_test
gidnumber: 10073
memberuid: user264_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user266_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user266_org1_test
+owneruid: user266_org1_test
gidnumber: 10162
memberuid: user266_org1_test
memberuid: user111_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user268_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user268_org1_test
+owneruid: user268_org1_test
gidnumber: 10239
memberuid: user268_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user274_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user274_org2_test
+owneruid: user274_org2_test
gidnumber: 10283
memberuid: user274_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user277_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user277_org1_test
+owneruid: user277_org1_test
gidnumber: 10014
memberuid: user277_org1_test
memberuid: user978_org1_test
memberuid: user155_org1_test
memberuid: user629_org1_test
memberuid: user217_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user278_org3_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user278_org3_test
+owneruid: user278_org3_test
gidnumber: 10180
memberuid: user278_org3_test
memberuid: user20_org3_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user288_org000000007_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user288_org000000007_test
+owneruid: user288_org000000007_test
gidnumber: 10234
memberuid: user288_org000000007_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user291_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user291_org1_test
+owneruid: user291_org1_test
gidnumber: 10201
memberuid: user291_org1_test
memberuid: user473_org1_test
memberuid: user110_org1_test
memberuid: user441_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user292_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user292_org2_test
+owneruid: user292_org2_test
gidnumber: 10229
memberuid: user292_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user295_org3_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user295_org3_test
+owneruid: user295_org3_test
gidnumber: 10277
memberuid: user295_org3_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user303_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user303_org1_test
+owneruid: user303_org1_test
gidnumber: 10209
memberuid: user303_org1_test
memberuid: user365_org1_test
memberuid: user389_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user304_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user304_org1_test
+owneruid: user304_org1_test
gidnumber: 10248
memberuid: user304_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user309_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user309_org1_test
+owneruid: user309_org1_test
gidnumber: 10015
memberuid: user309_org1_test
memberuid: user58_org1_test
memberuid: user824_org1_test
memberuid: user21_org1_test
memberuid: user447_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user312_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user312_org1_test
+owneruid: user312_org1_test
gidnumber: 10155
memberuid: user312_org1_test
memberuid: user794_org1_test
memberuid: user1031_org1_test
memberuid: user556_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user315_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user315_org2_test
+owneruid: user315_org2_test
gidnumber: 10112
memberuid: user315_org2_test
memberuid: user392_org2_test
memberuid: user866_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user326_org3_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user326_org3_test
+owneruid: user326_org3_test
gidnumber: 10173
memberuid: user326_org3_test
memberuid: user883_org3_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user329_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user329_org1_test
+owneruid: user329_org1_test
gidnumber: 10136
memberuid: user329_org1_test
memberuid: user46_org1_test
memberuid: user148_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user331_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user331_org1_test
+owneruid: user331_org1_test
gidnumber: 10227
memberuid: user331_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user336_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user336_org1_test
+owneruid: user336_org1_test
gidnumber: 10137
memberuid: user336_org1_test
memberuid: user478_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user338_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user338_org1_test
+owneruid: user338_org1_test
gidnumber: 10267
memberuid: user338_org1_test
memberuid: user1149_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user342_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user342_org1_test
+owneruid: user342_org1_test
gidnumber: 10090
memberuid: user342_org1_test
memberuid: user1188_org1_test
@@ -11227,46 +11298,51 @@ memberuid: user570_org1_test
memberuid: user888_org1_test
memberuid: user343_org1_test
memberuid: user535_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user345_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user345_org1_test
+owneruid: user345_org1_test
gidnumber: 10186
memberuid: user345_org1_test
memberuid: user1084_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user346_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user346_org2_test
+owneruid: user346_org2_test
gidnumber: 10246
memberuid: user346_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user347_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user347_org2_test
+owneruid: user347_org2_test
gidnumber: 10081
memberuid: user347_org2_test
memberuid: user24_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user354_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user354_org1_test
+owneruid: user354_org1_test
gidnumber: 10016
memberuid: user354_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user371_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user371_org1_test
+owneruid: user371_org1_test
gidnumber: 10066
memberuid: user371_org1_test
memberuid: user332_org1_test
@@ -11276,20 +11352,22 @@ memberuid: user908_org1_test
memberuid: user434_org1_test
memberuid: user1180_org1_test
memberuid: user1024_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user372_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user372_org1_test
+owneruid: user372_org1_test
gidnumber: 10053
memberuid: user372_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user373_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user373_org1_test
+owneruid: user373_org1_test
gidnumber: 10065
memberuid: user373_org1_test
memberuid: user128_org1_test
@@ -11298,131 +11376,145 @@ memberuid: user301_org1_test
memberuid: user401_org1_test
memberuid: user306_org1_test
memberuid: user1286_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user382_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user382_org1_test
+owneruid: user382_org1_test
gidnumber: 10219
memberuid: user382_org1_test
memberuid: user590_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user386_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user386_org1_test
+owneruid: user386_org1_test
gidnumber: 10197
memberuid: user386_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user391_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user391_org1_test
+owneruid: user391_org1_test
gidnumber: 10098
memberuid: user391_org1_test
memberuid: user63_org1_test
memberuid: user874_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user393_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user393_org1_test
+owneruid: user393_org1_test
gidnumber: 10017
memberuid: user393_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user395_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user395_org1_test
+owneruid: user395_org1_test
gidnumber: 10122
memberuid: user395_org1_test
memberuid: user993_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user398_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user398_org1_test
+owneruid: user398_org1_test
gidnumber: 10169
memberuid: user398_org1_test
memberuid: user394_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user400_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user400_org1_test
+owneruid: user400_org1_test
gidnumber: 10170
memberuid: user400_org1_test
memberuid: user712_org1_test
memberuid: user91_org1_test
memberuid: user653_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user404_org3_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user404_org3_test
+owneruid: user404_org3_test
gidnumber: 10152
memberuid: user404_org3_test
memberuid: user145_org3_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user407_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user407_org1_test
+owneruid: user407_org1_test
gidnumber: 10238
memberuid: user407_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user415_org3_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user415_org3_test
+owneruid: user415_org3_test
gidnumber: 10002
memberuid: user415_org3_test
memberuid: user261_org3_test
memberuid: user14_org3_test
memberuid: user333_org3_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user416_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user416_org1_test
+owneruid: user416_org1_test
gidnumber: 10279
memberuid: user416_org1_test
memberuid: user952_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user420_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user420_org1_test
+owneruid: user420_org1_test
gidnumber: 10147
memberuid: user420_org1_test
memberuid: user977_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user423_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user423_org1_test
+owneruid: user423_org1_test
gidnumber: 10252
memberuid: user423_org1_test
memberuid: user1211_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user424_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user424_org2_test
+owneruid: user424_org2_test
gidnumber: 10040
memberuid: user424_org2_test
memberuid: user1108_org2_test
@@ -11433,49 +11525,54 @@ memberuid: user972_org10_test
memberuid: user251_org2_test
memberuid: user170_org2_test
memberuid: user1002_org3_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user426_org3_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user426_org3_test
+owneruid: user426_org3_test
gidnumber: 10177
memberuid: user426_org3_test
memberuid: user112_org3_test
memberuid: user944_org3_test
memberuid: user202_org3_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user432_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user432_org2_test
+owneruid: user432_org2_test
gidnumber: 10212
memberuid: user432_org2_test
memberuid: user595_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user433_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user433_org1_test
+owneruid: user433_org1_test
gidnumber: 10156
memberuid: user433_org1_test
memberuid: user209_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user436_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user436_org2_test
+owneruid: user436_org2_test
gidnumber: 10236
memberuid: user436_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user438_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user438_org1_test
+owneruid: user438_org1_test
gidnumber: 10001
memberuid: user341_org1_test
memberuid: user438_org1_test
@@ -11486,44 +11583,48 @@ memberuid: user422_org1_test
memberuid: user168_org1_test
memberuid: user759_org1_test
memberuid: user661_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user439_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user439_org2_test
+owneruid: user439_org2_test
gidnumber: 10205
memberuid: user439_org2_test
memberuid: user412_org2_test
memberuid: user780_org2_test
memberuid: user1133_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user440_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user440_org1_test
+owneruid: user440_org1_test
gidnumber: 10060
memberuid: user440_org1_test
memberuid: user89_org1_test
memberuid: user1080_org1_test
memberuid: user146_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user442_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user442_org1_test
+owneruid: user442_org1_test
gidnumber: 10263
memberuid: user442_org1_test
memberuid: user700_org1_test
memberuid: user1053_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user446_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user446_org1_test
+owneruid: user446_org1_test
gidnumber: 10047
memberuid: user446_org1_test
memberuid: user1079_org1_test
@@ -11540,32 +11641,35 @@ memberuid: user1155_org1_test
memberuid: user1008_org1_test
memberuid: user468_org1_test
memberuid: user240_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user452_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user452_org1_test
+owneruid: user452_org1_test
gidnumber: 10003
memberuid: user452_org1_test
memberuid: user316_org1_test
memberuid: user746_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user453_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user453_org1_test
+owneruid: user453_org1_test
gidnumber: 10118
memberuid: user453_org1_test
memberuid: user1210_org1_test
memberuid: user555_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user458_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user458_org1_test
+owneruid: user458_org1_test
gidnumber: 10089
memberuid: user458_org1_test
memberuid: user310_org1_test
@@ -11576,48 +11680,53 @@ memberuid: user874_org1_test
memberuid: user963_org1_test
memberuid: user397_org1_test
memberuid: user910_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user460_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user460_org1_test
+owneruid: user460_org1_test
gidnumber: 10172
memberuid: user460_org1_test
memberuid: user172_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user466_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user466_org2_test
+owneruid: user466_org2_test
gidnumber: 10166
memberuid: user466_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user467_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user467_org2_test
+owneruid: user467_org2_test
gidnumber: 10129
memberuid: user467_org2_test
memberuid: user723_org2_test
memberuid: user259_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user480_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user480_org1_test
+owneruid: user480_org1_test
gidnumber: 10168
memberuid: user480_org1_test
memberuid: user900_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user483_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user483_org1_test
+owneruid: user483_org1_test
gidnumber: 10141
memberuid: user483_org1_test
memberuid: user762_org1_test
@@ -11651,12 +11760,13 @@ memberuid: user899_org1_test
memberuid: user924_org1_test
memberuid: user1295_org1_test
memberuid: user1061_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user487_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user487_org2_test
+owneruid: user487_org2_test
gidnumber: 10194
memberuid: user487_org2_test
memberuid: user479_org2_test
@@ -11668,12 +11778,13 @@ memberuid: user553_org2_test
memberuid: user129_org2_test
memberuid: user669_org2_test
memberuid: user648_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user496_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user496_org1_test
+owneruid: user496_org1_test
gidnumber: 10087
memberuid: user496_org1_test
memberuid: user682_org1_test
@@ -11700,12 +11811,13 @@ memberuid: user982_org1_test
memberuid: user75_org1_test
memberuid: user151_org1_test
memberuid: user557_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user500_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user500_org1_test
+owneruid: user500_org1_test
gidnumber: 10093
memberuid: user500_org1_test
memberuid: user563_org1_test
@@ -11724,23 +11836,25 @@ memberuid: user895_org1_test
memberuid: user623_org1_test
memberuid: user97_org1_test
memberuid: user953_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user502_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user502_org1_test
+owneruid: user502_org1_test
gidnumber: 10203
memberuid: user502_org1_test
memberuid: user1072_org1_test
memberuid: user1194_org1_test
memberuid: user82_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user507_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user507_org2_test
+owneruid: user507_org2_test
gidnumber: 10110
memberuid: user507_org2_test
memberuid: user104_org2_test
@@ -11749,67 +11863,74 @@ memberuid: user716_org2_test
memberuid: user584_org2_test
memberuid: user788_org2_test
memberuid: user170_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user513_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user513_org1_test
+owneruid: user513_org1_test
gidnumber: 10108
memberuid: user513_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user517_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user517_org1_test
+owneruid: user517_org1_test
gidnumber: 10251
memberuid: user517_org1_test
memberuid: user1253_org1_test
memberuid: user616_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user519_org000000007_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user519_org000000007_test
+owneruid: user519_org000000007_test
gidnumber: 10259
memberuid: user519_org000000007_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user528_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user528_org1_test
+owneruid: user528_org1_test
gidnumber: 10104
memberuid: user528_org1_test
memberuid: user799_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user530_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user530_org1_test
+owneruid: user530_org1_test
gidnumber: 10095
memberuid: user530_org1_test
memberuid: user1222_org1_test
memberuid: user16_org1_test
memberuid: user1131_org1_test
memberuid: user402_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user532_org000000007_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user532_org000000007_test
+owneruid: user532_org000000007_test
gidnumber: 10174
memberuid: user532_org000000007_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user534_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user534_org1_test
+owneruid: user534_org1_test
gidnumber: 10085
memberuid: user534_org1_test
memberuid: user619_org1_test
@@ -11817,12 +11938,13 @@ memberuid: user353_org1_test
memberuid: user869_org1_test
memberuid: user1116_org1_test
memberuid: user896_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user543_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user543_org1_test
+owneruid: user543_org1_test
gidnumber: 10111
memberuid: user543_org1_test
memberuid: user621_org1_test
@@ -11879,12 +12001,13 @@ memberuid: user1218_org1_test
memberuid: user1202_org1_test
memberuid: user1217_org1_test
memberuid: user960_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1_org1_test
+owneruid: user1_org1_test
gidnumber: 10000
memberuid: user4_org1_test
memberuid: user1_org1_test
@@ -11899,30 +12022,33 @@ memberuid: user491_org4_test
memberuid: user689_org1_test
memberuid: user12_org1_test
memberuid: user697_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user546_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user546_org1_test
+owneruid: user546_org1_test
gidnumber: 10193
memberuid: user546_org1_test
memberuid: user103_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user550_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user550_org1_test
+owneruid: user550_org1_test
gidnumber: 10187
memberuid: user550_org1_test
memberuid: user1107_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user551_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user551_org1_test
+owneruid: user551_org1_test
gidnumber: 10019
memberuid: user551_org1_test
memberuid: user1267_org1_test
@@ -11931,57 +12057,63 @@ memberuid: user385_org1_test
memberuid: user1219_org1_test
memberuid: user992_org1_test
memberuid: user1023_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user554_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user554_org2_test
+owneruid: user554_org2_test
gidnumber: 10241
memberuid: user554_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user559_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user559_org1_test
+owneruid: user559_org1_test
gidnumber: 10004
memberuid: user559_org1_test
memberuid: user509_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user560_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user560_org1_test
+owneruid: user560_org1_test
gidnumber: 10057
memberuid: user560_org1_test
memberuid: user875_org1_test
memberuid: user589_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user561_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user561_org1_test
+owneruid: user561_org1_test
gidnumber: 10054
memberuid: user561_org1_test
memberuid: user932_org1_test
memberuid: user25_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user564_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user564_org1_test
+owneruid: user564_org1_test
gidnumber: 10123
memberuid: user564_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user565_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user565_org1_test
+owneruid: user565_org1_test
gidnumber: 10018
memberuid: user565_org1_test
memberuid: user215_org1_test
@@ -12010,12 +12142,13 @@ memberuid: user544_org1_test
memberuid: user61_org1_test
memberuid: user846_org1_test
memberuid: user1167_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user569_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user569_org1_test
+owneruid: user569_org1_test
gidnumber: 10106
memberuid: user569_org1_test
memberuid: user875_org1_test
@@ -12027,66 +12160,73 @@ memberuid: user611_org1_test
memberuid: user1132_org1_test
memberuid: user378_org1_test
memberuid: user143_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user575_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user575_org1_test
+owneruid: user575_org1_test
gidnumber: 10092
memberuid: user575_org1_test
memberuid: user863_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user580_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user580_org1_test
+owneruid: user580_org1_test
gidnumber: 10119
memberuid: user580_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user582_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user582_org1_test
+owneruid: user582_org1_test
gidnumber: 10051
memberuid: user582_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user586_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user586_org1_test
+owneruid: user586_org1_test
gidnumber: 10020
memberuid: user586_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user591_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user591_org1_test
+owneruid: user591_org1_test
gidnumber: 10139
memberuid: user591_org1_test
memberuid: user1104_org1_test
memberuid: user357_org1_test
memberuid: user39_org1_test
memberuid: user281_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user592_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user592_org2_test
+owneruid: user592_org2_test
gidnumber: 10235
memberuid: user592_org2_test
memberuid: user410_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user601_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user601_org1_test
+owneruid: user601_org1_test
gidnumber: 10080
memberuid: user601_org1_test
memberuid: user86_org1_test
@@ -12104,20 +12244,22 @@ memberuid: user234_org9_test
memberuid: user258_org1_test
memberuid: user728_org9_test
memberuid: user1147_org9_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user608_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user608_org1_test
+owneruid: user608_org1_test
gidnumber: 10070
memberuid: user608_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user615_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user615_org1_test
+owneruid: user615_org1_test
gidnumber: 10021
memberuid: user615_org1_test
memberuid: user660_org1_test
@@ -12125,114 +12267,126 @@ memberuid: user37_org1_test
memberuid: user1216_org1_test
memberuid: user583_org1_test
memberuid: user838_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user626_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user626_org1_test
+owneruid: user626_org1_test
gidnumber: 10107
memberuid: user626_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user635_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user635_org1_test
+owneruid: user635_org1_test
gidnumber: 10175
memberuid: user635_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user636_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user636_org2_test
+owneruid: user636_org2_test
gidnumber: 10195
memberuid: user636_org2_test
memberuid: user694_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user641_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user641_org1_test
+owneruid: user641_org1_test
gidnumber: 10084
memberuid: user641_org1_test
memberuid: user239_org1_test
memberuid: user1017_org1_test
memberuid: user409_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user647_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user647_org1_test
+owneruid: user647_org1_test
gidnumber: 10115
memberuid: user647_org1_test
memberuid: user739_org1_test
memberuid: user800_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user656_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user656_org1_test
+owneruid: user656_org1_test
gidnumber: 10064
memberuid: user656_org1_test
memberuid: user80_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user659_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user659_org1_test
+owneruid: user659_org1_test
gidnumber: 10144
memberuid: user659_org1_test
memberuid: user265_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user663_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user663_org2_test
+owneruid: user663_org2_test
gidnumber: 10202
memberuid: user663_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user666_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user666_org1_test
+owneruid: user666_org1_test
gidnumber: 10125
memberuid: user666_org1_test
memberuid: user495_org1_test
memberuid: user319_org1_test
memberuid: user678_org1_test
memberuid: user379_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user670_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user670_org1_test
+owneruid: user670_org1_test
gidnumber: 10062
memberuid: user670_org1_test
memberuid: user195_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user674_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user674_org1_test
+owneruid: user674_org1_test
gidnumber: 10217
memberuid: user674_org1_test
memberuid: user680_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user676_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user676_org1_test
+owneruid: user676_org1_test
gidnumber: 10058
memberuid: user676_org1_test
memberuid: user137_org1_test
@@ -12240,23 +12394,25 @@ memberuid: user62_org1_test
memberuid: user649_org1_test
memberuid: user381_org1_test
memberuid: user1085_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user677_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user677_org1_test
+owneruid: user677_org1_test
gidnumber: 10127
memberuid: user677_org1_test
memberuid: user1294_org1_test
memberuid: user1161_org1_test
memberuid: user484_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user681_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user681_org1_test
+owneruid: user681_org1_test
gidnumber: 10042
memberuid: user681_org1_test
memberuid: user1066_org1_test
@@ -12277,12 +12433,13 @@ memberuid: user533_org1_test
memberuid: user524_org1_test
memberuid: user596_org1_test
memberuid: user267_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user688_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user688_org1_test
+owneruid: user688_org1_test
gidnumber: 10113
memberuid: user688_org1_test
memberuid: user374_org1_test
@@ -12293,109 +12450,120 @@ memberuid: user352_org1_test
memberuid: user825_org1_test
memberuid: user598_org1_test
memberuid: user618_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user695_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user695_org2_test
+owneruid: user695_org2_test
gidnumber: 10211
memberuid: user695_org2_test
memberuid: user705_org2_test
memberuid: user541_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user699_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user699_org1_test
+owneruid: user699_org1_test
gidnumber: 10075
memberuid: user699_org1_test
memberuid: user665_org1_test
memberuid: user44_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user703_org11_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user703_org11_test
+owneruid: user703_org11_test
gidnumber: 10207
memberuid: user703_org11_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user714_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user714_org2_test
+owneruid: user714_org2_test
gidnumber: 10044
memberuid: user714_org2_test
memberuid: user760_org2_test
memberuid: user538_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user717_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user717_org2_test
+owneruid: user717_org2_test
gidnumber: 10200
memberuid: user717_org2_test
memberuid: user189_org2_test
memberuid: user929_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user720_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user720_org1_test
+owneruid: user720_org1_test
gidnumber: 10161
memberuid: user720_org1_test
memberuid: user171_org1_test
memberuid: user470_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user722_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user722_org1_test
+owneruid: user722_org1_test
gidnumber: 10091
memberuid: user722_org1_test
memberuid: user276_org1_test
memberuid: user497_org1_test
memberuid: user811_org1_test
memberuid: user88_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user724_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user724_org1_test
+owneruid: user724_org1_test
gidnumber: 10045
memberuid: user724_org1_test
memberuid: user864_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user725_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user725_org2_test
+owneruid: user725_org2_test
gidnumber: 10198
memberuid: user725_org2_test
memberuid: user876_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user727_org000000007_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user727_org000000007_test
+owneruid: user727_org000000007_test
gidnumber: 10266
memberuid: user727_org000000007_test
memberuid: user1192_org000000007_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user730_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user730_org1_test
+owneruid: user730_org1_test
gidnumber: 10072
memberuid: user730_org1_test
memberuid: user1120_org1_test
@@ -12404,24 +12572,26 @@ memberuid: user38_org1_test
memberuid: user377_org1_test
memberuid: user224_org1_test
memberuid: user451_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user733_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user733_org1_test
+owneruid: user733_org1_test
gidnumber: 10036
memberuid: user733_org1_test
memberuid: user852_org1_test
memberuid: user971_org1_test
memberuid: user1139_org1_test
memberuid: user951_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user736_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user736_org1_test
+owneruid: user736_org1_test
gidnumber: 10083
memberuid: user736_org1_test
memberuid: user116_org1_test
@@ -12470,40 +12640,44 @@ memberuid: user597_org1_test
memberuid: user139_org1_test
memberuid: user1026_org1_test
memberuid: user109_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user737_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user737_org1_test
+owneruid: user737_org1_test
gidnumber: 10039
memberuid: user737_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user743_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user743_org1_test
+owneruid: user743_org1_test
gidnumber: 10069
memberuid: user743_org1_test
memberuid: user1263_org1_test
memberuid: user1098_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user744_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user744_org1_test
+owneruid: user744_org1_test
gidnumber: 10022
memberuid: user744_org1_test
memberuid: user704_org1_test
memberuid: user787_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user751_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user751_org1_test
+owneruid: user751_org1_test
gidnumber: 10130
memberuid: user751_org1_test
memberuid: user1093_org1_test
@@ -12517,28 +12691,31 @@ memberuid: user627_org1_test
memberuid: user552_org1_test
memberuid: user891_org1_test
memberuid: user1034_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user758_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user758_org1_test
+owneruid: user758_org1_test
gidnumber: 10278
memberuid: user758_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user764_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user764_org1_test
+owneruid: user764_org1_test
gidnumber: 10237
memberuid: user764_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user765_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user765_org1_test
+owneruid: user765_org1_test
gidnumber: 10067
memberuid: user765_org1_test
memberuid: user42_org1_test
@@ -12555,12 +12732,13 @@ memberuid: user1248_org1_test
memberuid: user854_org1_test
memberuid: user984_org1_test
memberuid: user1157_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user777_org3_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user777_org3_test
+owneruid: user777_org3_test
gidnumber: 10102
memberuid: user777_org3_test
memberuid: user204_org3_test
@@ -12568,40 +12746,44 @@ memberuid: user729_org3_test
memberuid: user15_org3_test
memberuid: user417_org3_test
memberuid: user766_org3_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user782_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user782_org1_test
+owneruid: user782_org1_test
gidnumber: 10059
memberuid: user782_org1_test
memberuid: user1162_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user783_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user783_org1_test
+owneruid: user783_org1_test
gidnumber: 10167
memberuid: user783_org1_test
memberuid: user1057_org1_test
memberuid: user991_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user784_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user784_org1_test
+owneruid: user784_org1_test
gidnumber: 10281
memberuid: user784_org1_test
memberuid: user228_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user785_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user785_org1_test
+owneruid: user785_org1_test
gidnumber: 10023
memberuid: user785_org1_test
memberuid: user244_org1_test
@@ -12609,31 +12791,34 @@ memberuid: user1160_org1_test
memberuid: user650_org1_test
memberuid: user492_org1_test
memberuid: user1256_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user786_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user786_org1_test
+owneruid: user786_org1_test
gidnumber: 10024
memberuid: user786_org1_test
memberuid: user1146_org1_test
memberuid: user301_org1_test
memberuid: user942_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user788_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user788_org2_test
+owneruid: user788_org2_test
gidnumber: 10191
memberuid: user788_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user789_org3_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user789_org3_test
+owneruid: user789_org3_test
gidnumber: 10000007
memberuid: user789_org3_test
memberuid: user105_org3_test
@@ -12642,74 +12827,82 @@ memberuid: user74_org3_test
memberuid: user644_org3_test
memberuid: user231_org3_test
memberuid: user630_org3_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user795_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user795_org1_test
+owneruid: user795_org1_test
gidnumber: 10178
memberuid: user795_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user796_org11_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user796_org11_test
+owneruid: user796_org11_test
gidnumber: 10133
memberuid: user796_org11_test
memberuid: user710_org11_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user798_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user798_org1_test
+owneruid: user798_org1_test
gidnumber: 10035
memberuid: user798_org1_test
memberuid: user756_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user801_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user801_org1_test
+owneruid: user801_org1_test
gidnumber: 10271
memberuid: user801_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user803_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user803_org1_test
+owneruid: user803_org1_test
gidnumber: 10025
memberuid: user803_org1_test
memberuid: user1058_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user805_org3_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user805_org3_test
+owneruid: user805_org3_test
gidnumber: 10242
memberuid: user805_org3_test
memberuid: user154_org3_test
memberuid: user672_org3_test
memberuid: user673_org3_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user809_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user809_org2_test
+owneruid: user809_org2_test
gidnumber: 10190
memberuid: user809_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user817_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user817_org1_test
+owneruid: user817_org1_test
gidnumber: 10026
memberuid: user817_org1_test
memberuid: user1146_org1_test
@@ -12717,132 +12910,147 @@ memberuid: user998_org1_test
memberuid: user581_org1_test
memberuid: user1142_org1_test
memberuid: user504_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user830_org11_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user830_org11_test
+owneruid: user830_org11_test
gidnumber: 10100
memberuid: user830_org11_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user832_org14_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user832_org14_test
+owneruid: user832_org14_test
gidnumber: 10268
memberuid: user832_org14_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user833_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user833_org1_test
+owneruid: user833_org1_test
gidnumber: 10218
memberuid: user833_org1_test
memberuid: user379_org1_test
memberuid: user335_org1_test
memberuid: user701_org1_test
memberuid: user763_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user834_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user834_org2_test
+owneruid: user834_org2_test
gidnumber: 10224
memberuid: user834_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user848_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user848_org1_test
+owneruid: user848_org1_test
gidnumber: 10225
memberuid: user848_org1_test
memberuid: user284_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user849_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user849_org1_test
+owneruid: user849_org1_test
gidnumber: 10160
memberuid: user849_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user857_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user857_org1_test
+owneruid: user857_org1_test
gidnumber: 10027
memberuid: user857_org1_test
memberuid: user1036_org1_test
memberuid: user708_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user859_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user859_org1_test
+owneruid: user859_org1_test
gidnumber: 10158
memberuid: user859_org1_test
memberuid: user96_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user865_org000000007_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user865_org000000007_test
+owneruid: user865_org000000007_test
gidnumber: 10221
memberuid: user865_org000000007_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user868_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user868_org1_test
+owneruid: user868_org1_test
gidnumber: 10076
memberuid: user868_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user870_org3_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user870_org3_test
+owneruid: user870_org3_test
gidnumber: 10233
memberuid: user870_org3_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user872_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user872_org1_test
+owneruid: user872_org1_test
gidnumber: 10038
memberuid: user872_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user873_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user873_org2_test
+owneruid: user873_org2_test
gidnumber: 10142
memberuid: user873_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user875_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user875_org1_test
+owneruid: user875_org1_test
gidnumber: 10185
memberuid: user875_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user877_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user877_org1_test
+owneruid: user877_org1_test
gidnumber: 10028
memberuid: user877_org1_test
memberuid: user147_org1_test
@@ -12858,229 +13066,253 @@ memberuid: user457_org1_test
memberuid: user286_org1_test
memberuid: user884_org1_test
memberuid: user562_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user878_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user878_org2_test
+owneruid: user878_org2_test
gidnumber: 10214
memberuid: user878_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user879_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user879_org1_test
+owneruid: user879_org1_test
gidnumber: 10037
memberuid: user879_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user881_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user881_org1_test
+owneruid: user881_org1_test
gidnumber: 10086
memberuid: user881_org1_test
memberuid: user1203_org1_test
memberuid: user220_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user882_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user882_org1_test
+owneruid: user882_org1_test
gidnumber: 10215
memberuid: user882_org1_test
memberuid: user941_org1_test
memberuid: user238_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user885_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user885_org1_test
+owneruid: user885_org1_test
gidnumber: 10029
memberuid: user885_org1_test
memberuid: user742_org1_test
memberuid: user490_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user886_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user886_org1_test
+owneruid: user886_org1_test
gidnumber: 10121
memberuid: user886_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user890_org3_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user890_org3_test
+owneruid: user890_org3_test
gidnumber: 10182
memberuid: user890_org3_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user905_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user905_org1_test
+owneruid: user905_org1_test
gidnumber: 10272
memberuid: user905_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user915_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user915_org1_test
+owneruid: user915_org1_test
gidnumber: 10184
memberuid: user915_org1_test
memberuid: user431_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user917_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user917_org1_test
+owneruid: user917_org1_test
gidnumber: 10280
memberuid: user917_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user928_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user928_org1_test
+owneruid: user928_org1_test
gidnumber: 10050
memberuid: user928_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user931_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user931_org1_test
+owneruid: user931_org1_test
gidnumber: 10253
memberuid: user931_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user933_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user933_org2_test
+owneruid: user933_org2_test
gidnumber: 10153
memberuid: user933_org2_test
memberuid: user122_org2_test
memberuid: user617_org2_test
memberuid: user1050_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user935_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user935_org1_test
+owneruid: user935_org1_test
gidnumber: 10114
memberuid: user935_org1_test
memberuid: user106_org1_test
memberuid: user115_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user936_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user936_org1_test
+owneruid: user936_org1_test
gidnumber: 10061
memberuid: user936_org1_test
memberuid: user831_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user937_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user937_org1_test
+owneruid: user937_org1_test
gidnumber: 10171
memberuid: user937_org1_test
memberuid: user1195_org1_test
memberuid: user356_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user938_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user938_org1_test
+owneruid: user938_org1_test
gidnumber: 10068
memberuid: user938_org1_test
memberuid: user907_org1_test
memberuid: user1153_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user940_org3_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user940_org3_test
+owneruid: user940_org3_test
gidnumber: 10183
memberuid: user940_org3_test
memberuid: user299_org3_test
memberuid: user945_org3_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user955_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user955_org2_test
+owneruid: user955_org2_test
gidnumber: 10105
memberuid: user955_org2_test
memberuid: user802_org2_test
memberuid: user726_org2_test
memberuid: user140_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user957_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user957_org1_test
+owneruid: user957_org1_test
gidnumber: 10247
memberuid: user957_org1_test
memberuid: user31_org1_test
memberuid: user454_org1_test
memberuid: user390_org1_test
memberuid: user1174_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user962_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user962_org1_test
+owneruid: user962_org1_test
gidnumber: 10204
memberuid: user962_org1_test
memberuid: user696_org1_test
memberuid: user350_org1_test
memberuid: user624_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user967_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user967_org1_test
+owneruid: user967_org1_test
gidnumber: 10096
memberuid: user967_org1_test
memberuid: user683_org1_test
memberuid: user118_org1_test
memberuid: user981_org1_test
memberuid: user1159_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user968_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user968_org2_test
+owneruid: user968_org2_test
gidnumber: 10120
memberuid: user968_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user975_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user975_org1_test
+owneruid: user975_org1_test
gidnumber: 10176
memberuid: user975_org1_test
memberuid: user65_org1_test
@@ -13088,12 +13320,13 @@ memberuid: user567_org1_test
memberuid: user455_org1_test
memberuid: user399_org1_test
memberuid: user218_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user979_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user979_org2_test
+owneruid: user979_org2_test
gidnumber: 10232
memberuid: user979_org2_test
memberuid: user170_org2_test
@@ -13101,125 +13334,138 @@ memberuid: user408_org2_test
memberuid: user322_org2_test
memberuid: user375_org2_test
memberuid: user985_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1005_org3_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1005_org3_test
+owneruid: user1005_org3_test
gidnumber: 10262
memberuid: user1005_org3_test
memberuid: user203_org3_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1009_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1009_org1_test
+owneruid: user1009_org1_test
gidnumber: 10034
memberuid: user1009_org1_test
memberuid: user474_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1018_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1018_org2_test
+owneruid: user1018_org2_test
gidnumber: 10255
memberuid: user1018_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1019_org3_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1019_org3_test
+owneruid: user1019_org3_test
gidnumber: 10149
memberuid: user1019_org3_test
memberuid: user1138_org3_test
memberuid: user812_org3_test
memberuid: user646_org3_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1022_org3_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1022_org3_test
+owneruid: user1022_org3_test
gidnumber: 10163
memberuid: user1022_org3_test
memberuid: user159_org3_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1028_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1028_org1_test
+owneruid: user1028_org1_test
gidnumber: 10134
memberuid: user1028_org1_test
memberuid: user21_org1_test
memberuid: user161_org1_test
memberuid: user824_org1_test
memberuid: user447_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1029_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1029_org1_test
+owneruid: user1029_org1_test
gidnumber: 10148
memberuid: user1029_org1_test
memberuid: user903_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1033_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1033_org1_test
+owneruid: user1033_org1_test
gidnumber: 10196
memberuid: user1033_org1_test
memberuid: user1061_org1_test
memberuid: user26_org1_test
memberuid: user1069_org1_test
memberuid: user79_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1039_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1039_org1_test
+owneruid: user1039_org1_test
gidnumber: 10256
memberuid: user1039_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1045_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1045_org1_test
+owneruid: user1045_org1_test
gidnumber: 10030
memberuid: user1045_org1_test
memberuid: user740_org1_test
memberuid: user1154_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1053_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1053_org1_test
+owneruid: user1053_org1_test
gidnumber: 10258
memberuid: user1053_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1056_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1056_org2_test
+owneruid: user1056_org2_test
gidnumber: 10270
memberuid: user1056_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1062_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1062_org1_test
+owneruid: user1062_org1_test
gidnumber: 10097
memberuid: user1062_org1_test
memberuid: user435_org1_test
@@ -13230,85 +13476,94 @@ memberuid: user939_org1_test
memberuid: user19_org1_test
memberuid: user573_org1_test
memberuid: user1090_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1076_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1076_org1_test
+owneruid: user1076_org1_test
gidnumber: 10276
memberuid: user1076_org1_test
memberuid: user227_org8_test
memberuid: user1237_org1_test
memberuid: user494_org8_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1077_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1077_org2_test
+owneruid: user1077_org2_test
gidnumber: 10131
memberuid: user1077_org2_test
memberuid: user709_org2_test
memberuid: user593_org2_test
memberuid: user610_org2_test
memberuid: user525_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1079_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1079_org1_test
+owneruid: user1079_org1_test
gidnumber: 10159
memberuid: user1079_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1082_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1082_org1_test
+owneruid: user1082_org1_test
gidnumber: 10056
memberuid: user1082_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1101_org14_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1101_org14_test
+owneruid: user1101_org14_test
gidnumber: 10269
memberuid: user1101_org14_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1103_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1103_org2_test
+owneruid: user1103_org2_test
gidnumber: 10240
memberuid: user1103_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1109_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1109_org2_test
+owneruid: user1109_org2_test
gidnumber: 10192
memberuid: user1109_org2_test
memberuid: user520_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1110_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1110_org2_test
+owneruid: user1110_org2_test
gidnumber: 10257
memberuid: user1110_org2_test
memberuid: user183_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1111_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1111_org1_test
+owneruid: user1111_org1_test
gidnumber: 10138
memberuid: user1111_org1_test
memberuid: user184_org1_test
@@ -13316,20 +13571,22 @@ memberuid: user605_org1_test
memberuid: user1268_org1_test
memberuid: user506_org1_test
memberuid: user671_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1118_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1118_org1_test
+owneruid: user1118_org1_test
gidnumber: 10033
memberuid: user1118_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1123_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1123_org1_test
+owneruid: user1123_org1_test
gidnumber: 10140
memberuid: user1123_org1_test
memberuid: user169_org1_test
@@ -13339,12 +13596,13 @@ memberuid: user131_org1_test
memberuid: user1290_org1_test
memberuid: user1197_org1_test
memberuid: user806_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user11_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user11_org1_test
+owneruid: user11_org1_test
gidnumber: 10031
memberuid: user11_org1_test
memberuid: user156_org6_test
@@ -13353,167 +13611,185 @@ memberuid: user1126_org12_test
memberuid: user1068_org12_test
memberuid: user686_org12_test
memberuid: user804_org12_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1128_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1128_org1_test
+owneruid: user1128_org1_test
gidnumber: 10284
memberuid: user1128_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1129_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1129_org1_test
+owneruid: user1129_org1_test
gidnumber: 10189
memberuid: user1129_org1_test
memberuid: user861_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1130_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1130_org1_test
+owneruid: user1130_org1_test
gidnumber: 10117
memberuid: user1130_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1140_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1140_org1_test
+owneruid: user1140_org1_test
gidnumber: 10078
memberuid: user1140_org1_test
memberuid: user1193_org5_test
memberuid: user1121_org5_test
memberuid: user855_org5_test
memberuid: user76_org5_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1165_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1165_org1_test
+owneruid: user1165_org1_test
gidnumber: 10055
memberuid: user1165_org1_test
memberuid: user1074_org1_test
memberuid: user1299_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1171_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1171_org1_test
+owneruid: user1171_org1_test
gidnumber: 10250
memberuid: user1171_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1175_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1175_org1_test
+owneruid: user1175_org1_test
gidnumber: 10046
memberuid: user1175_org1_test
memberuid: user127_org1_test
memberuid: user1289_org1_test
memberuid: user1163_org1_test
memberuid: user956_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1176_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1176_org1_test
+owneruid: user1176_org1_test
gidnumber: 10188
memberuid: user1176_org1_test
memberuid: user845_org1_test
memberuid: user314_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1182_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1182_org2_test
+owneruid: user1182_org2_test
gidnumber: 10128
memberuid: user1182_org2_test
memberuid: user1189_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1185_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1185_org1_test
+owneruid: user1185_org1_test
gidnumber: 10213
memberuid: user1185_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1187_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1187_org1_test
+owneruid: user1187_org1_test
gidnumber: 10208
memberuid: user1187_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1191_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1191_org2_test
+owneruid: user1191_org2_test
gidnumber: 10231
memberuid: user1191_org2_test
memberuid: user594_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1201_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1201_org1_test
+owneruid: user1201_org1_test
gidnumber: 10249
memberuid: user1201_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1227_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1227_org1_test
+owneruid: user1227_org1_test
gidnumber: 10244
memberuid: user1227_org1_test
memberuid: user260_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1233_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1233_org1_test
+owneruid: user1233_org1_test
gidnumber: 10273
memberuid: user1233_org1_test
memberuid: user465_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1234_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1234_org1_test
+owneruid: user1234_org1_test
gidnumber: 10282
memberuid: user1234_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1235_org3_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1235_org3_test
+owneruid: user1235_org3_test
gidnumber: 10041
memberuid: user1235_org3_test
memberuid: user961_org3_test
memberuid: user313_org3_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1246_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1246_org2_test
+owneruid: user1246_org2_test
gidnumber: 10049
memberuid: user1246_org2_test
memberuid: user298_org2_test
@@ -13526,40 +13802,44 @@ memberuid: user77_org2_test
memberuid: user210_org2_test
memberuid: user657_org2_test
memberuid: user69_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1255_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1255_org1_test
+owneruid: user1255_org1_test
gidnumber: 10146
memberuid: user1255_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1260_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1260_org2_test
+owneruid: user1260_org2_test
gidnumber: 10043
memberuid: user1260_org2_test
memberuid: user1215_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1280_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1280_org1_test
+owneruid: user1280_org1_test
gidnumber: 10109
memberuid: user1280_org1_test
memberuid: user1183_org1_test
memberuid: user1224_org1_test
memberuid: user1012_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1292_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1292_org1_test
+owneruid: user1292_org1_test
gidnumber: 10032
memberuid: user1292_org1_test
memberuid: user428_org1_test
@@ -13580,24 +13860,26 @@ memberuid: user47_org1_test
memberuid: user443_org1_test
memberuid: user1044_org1_test
memberuid: user255_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1293_org2_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1293_org2_test
+owneruid: user1293_org2_test
gidnumber: 10265
memberuid: user1293_org2_test
memberuid: user537_org2_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
dn: cn=pi_user1298_org1_test,ou=pi_groups,dc=unityhpc,dc=test
cn: pi_user1298_org1_test
+owneruid: user1298_org1_test
gidnumber: 10210
memberuid: user1298_org1_test
-objectclass: piGroup
+objectclass: unityGroup
objectclass: posixGroup
objectclass: top
@@ -37304,35 +37586,13 @@ gecos: Melissa Price
uid: user2005_org1_test
uidnumber: 33130
-dn: cn=cs123_org1_test,ou=user_groups,dc=unityhpc,dc=test
-objectClass: posixGroup
-objectClass: top
-gidNumber: 20005
-cn: cs123_org1_test
-
-dn: cn=cs123_org1_test,ou=users,dc=unityhpc,dc=test
-objectClass: inetOrgPerson
-objectClass: posixAccount
-objectClass: top
-objectClass: ldapPublicKey
-uid: cs123_org1_test
-givenName: cs123
-sn: Fall 2025
-gecos: cs123 Fall 2025
-mail: user1+cs123@org1.test
-o: org1_test
-homeDirectory: /home/cs123_org1_test
-loginShell: /bin/bash
-uidNumber: 20005
-gidNumber: 20005
-cn: cs123_org1_test
-
dn: cn=pi_cs123_org1_test,ou=pi_groups,dc=unityhpc,dc=test
-objectclass: piGroup
+objectclass: unityGroup
objectClass: posixGroup
objectClass: top
gidNumber: 20007
cn: pi_cs123_org1_test
-manageruid: user1_org1_test
-memberuid: cs123_org1_test
+owneruid: user1_org1_test
+manageruid: user3_org1_test
memberuid: user1_org1_test
+memberuid: user3_org1_test
diff --git a/webroot/admin/pi-mgmt.php b/webroot/admin/pi-mgmt.php
index 18b1fb479..487d7d7e4 100644
--- a/webroot/admin/pi-mgmt.php
+++ b/webroot/admin/pi-mgmt.php
@@ -18,22 +18,26 @@
return new UnityUser(UnityHTTPD::getPostData("uid"), $LDAP, $SQL, $MAILER);
};
+$getGroupFromPost = function () {
+ global $LDAP, $SQL, $MAILER;
+ return new UnityGroup(UnityHTTPD::getPostData("pi"), $LDAP, $SQL, $MAILER);
+};
+
if ($_SERVER["REQUEST_METHOD"] == "POST") {
UnityHTTPD::validatePostCSRFToken();
switch ($_POST["form_type"]) {
case "req":
- $form_user = $getUserFromPost();
+ $owner = $getUserFromPost();
+ $group = $getGroupFromPost();
if ($_POST["action"] == "Approve") {
- $group = $form_user->getPIGroup();
- $group->approveGroup();
+ $group->approveGroup($owner->uid);
} elseif ($_POST["action"] == "Deny") {
- $group = $form_user->getPIGroup();
- $group->denyGroup();
+ $group->denyGroup($owner->uid);
}
break;
case "reqChild":
$form_user = $getUserFromPost();
- $parent_group = new UnityGroup($_POST["pi"], $LDAP, $SQL, $MAILER);
+ $parent_group = $getGroupFromPost();
if ($_POST["action"] == "Approve") {
$parent_group->approveUser($form_user);
} elseif ($_POST["action"] == "Deny") {
@@ -42,11 +46,11 @@
break;
case "remUserChild":
$form_user = $getUserFromPost();
- $parent = new UnityGroup($_POST["pi"], $LDAP, $SQL, $MAILER);
+ $parent = $getGroupFromPost();
$parent->removeUser($form_user, UnityGroupUserRemovedReason::RemovedByAdmin);
break;
case "disable":
- $group = new UnityGroup(UnityHTTPD::getPostData("pi"), $LDAP, $SQL, $MAILER);
+ $group = $getGroupFromPost();
if ($group->getIsDisabled()) {
UnityHTTPD::messageError("Cannot Disable PI Group", "Group is already disabled");
UnityHTTPD::redirect();
@@ -79,7 +83,7 @@
getRequests(UnitySQL::REQUEST_BECOME_PI);
+ $requests = $SQL->getRequests(UnitySQL::REQUEST_CREATE_PI_GROUP);
foreach ($requests as $request) {
$uid = $request["uid"];
@@ -132,7 +136,7 @@
usort($owner_attributes, fn($a, $b) => strcmp($a["uid"][0], $b["uid"][0]));
foreach ($owner_attributes as $attributes) {
$gecos = $attributes["gecos"][0];
- $gid = UnityGroup::OwnerUID2GID($attributes["uid"][0]);
+ $gid = UnityGroup::ownerUID2NamesakeGID($attributes["uid"][0]);
$mail = $attributes["mail"][0];
echo "
diff --git a/webroot/panel/account.php b/webroot/panel/account.php
index 9dc6f4808..7a09494d2 100644
--- a/webroot/panel/account.php
+++ b/webroot/panel/account.php
@@ -105,23 +105,27 @@
UnityHTTPD::messageError("Cannot Submit PI Request", "Already a PI");
UnityHTTPD::redirect();
}
- if ($SQL->requestExists($USER->uid, UnitySQL::REQUEST_BECOME_PI)) {
+ $group = $USER->getNamesakePIGroup();
+ $request = "$USER->uid:$group->gid";
+ if ($SQL->requestExists($request, UnitySQL::REQUEST_CREATE_PI_GROUP)) {
UnityHTTPD::messageError("Cannot Submit PI Request", "This request already exists");
UnityHTTPD::redirect();
}
if ($_POST["tos"] != "agree") {
UnityHTTPD::badRequest("user did not agree to terms of service");
}
- $USER->getPIGroup()->requestGroup();
+ $group->requestGroup($USER->uid);
UnityHTTPD::messageSuccess("PI Group Requested", "");
UnityHTTPD::redirect();
break; /** @phpstan-ignore deadCode.unreachable */
case "cancel_pi_request":
- if (!$SQL->requestExists($USER->uid, UnitySQL::REQUEST_BECOME_PI)) {
+ $group = $USER->getNamesakePIGroup();
+ $request = "$USER->uid:$group->gid";
+ if (!$SQL->requestExists($request, UnitySQL::REQUEST_CREATE_PI_GROUP)) {
UnityHTTPD::messageError("Cannot Cancel PI Request", "No PI request found");
UnityHTTPD::redirect();
}
- $USER->getPIGroup()->cancelGroupRequest();
+ $group->cancelGroupRequest($USER->uid);
UnityHTTPD::messageSuccess("PI Request Cancelled", "");
UnityHTTPD::redirect();
break; /** @phpstan-ignore deadCode.unreachable */
@@ -178,7 +182,7 @@
You are currently a principal investigator on the Unity HPC Platform.
";
} else {
- if ($USER->getPIGroup()->exists() && $USER->getPIGroup()->getIsDisabled()) {
+ if ($USER->getNamesakePIGroup()->exists() && $USER->getNamesakePIGroup()->getIsDisabled()) {
echo "You are no longer a PI because your PI group is disabled.
";
}
if ($USER->getFlag(UserFlag::QUALIFIED)) {
@@ -217,7 +221,7 @@
>
";
echo $CSRFTokenHiddenFormInput;
- if ($SQL->requestExists($USER->uid, UnitySQL::REQUEST_BECOME_PI)) {
+ if ($SQL->requestExists($USER->uid, UnitySQL::REQUEST_CREATE_PI_GROUP)) {
$onclick = "return confirm(\"Are you sure you want to cancel this request?\")";
echo "";
echo "
@@ -227,7 +231,7 @@
";
} else {
- if ($USER->getPIGroup()->exists() && $USER->getPIGroup()->getIsDisabled()) {
+ if ($USER->getNamesakePIGroup()->exists() && $USER->getNamesakePIGroup()->getIsDisabled()) {
$button_msg = "Request to Re-Enable PI Group";
$onclick = "return confirm(\"Are you sure you want to re-enable your old PI group?\")";
} else {
diff --git a/webroot/panel/modal/new_pi.php b/webroot/panel/modal/new_pi.php
index 14c78bc89..c2578cedd 100644
--- a/webroot/panel/modal/new_pi.php
+++ b/webroot/panel/modal/new_pi.php
@@ -15,7 +15,7 @@
);
$pi_group_gid_to_owner_gecos_and_mail = [];
foreach ($owner_attributes as $attributes) {
- $gid = UnityGroup::ownerUID2GID($attributes["uid"][0]);
+ $gid = UnityGroup::ownerUID2NamesakeGID($attributes["uid"][0]);
$pi_group_gid_to_owner_gecos_and_mail[$gid] = [$attributes["gecos"][0], $attributes["mail"][0]];
}
$_SESSION["pi_group_gid_to_owner_gecos_and_mail"] = $pi_group_gid_to_owner_gecos_and_mail;
diff --git a/webroot/panel/pi.php b/webroot/panel/pi.php
index 7043b71da..204248454 100644
--- a/webroot/panel/pi.php
+++ b/webroot/panel/pi.php
@@ -17,7 +17,7 @@
UnityHTTPD::forbidden("not a manager of group '$gid'", "You cannot manage this group.");
}
} else {
- $group = $USER->getPIGroup();
+ $group = $USER->getNamesakePIGroup();
$user_is_owner = true;
if (!$group->exists()) {
UnityHTTPD::badRequest("not a PI", "You are not a PI.");
diff --git a/workers/setup-pi-group-owners.php b/workers/setup-pi-group-owners.php
new file mode 100755
index 000000000..7d0f431fc
--- /dev/null
+++ b/workers/setup-pi-group-owners.php
@@ -0,0 +1,13 @@
+#!/usr/bin/env php
+getPIGroupsAttributes(["cn"], filter: UnityLDAP::INCLUDE_DISABLED) as $attributes) {
+ $gid = $attributes["cn"][0];
+ $entry = $LDAP->getPIGroupEntry($gid);
+ $entry->setAttribute("ownerUid", UnityGroup::NamesakeGID2OwnerUID($gid));
+}
+
diff --git a/workers/unity-course.php b/workers/unity-course.php
index 889f6d00e..175dc5628 100755
--- a/workers/unity-course.php
+++ b/workers/unity-course.php
@@ -3,74 +3,49 @@
$_SERVER["HTTP_HOST"] = "course-creator"; // see deployment/overrides/course-creator
include __DIR__ . "/init.php";
use UnityWebPortal\lib\UnityUser;
-use UnityWebPortal\lib\UnityOrg;
-use UnityWebPortal\lib\UserFlag;
+use UnityWebPortal\lib\UnityGroup;
-function cn2org($cn)
-{
- $matches = [];
- _preg_match("/.*_([^_]+_[^_]+)$/", $cn, $matches);
- assert(count($matches) == 2, "failed to extract org from cn: '$cn'");
- return $matches[1];
-}
-
-// if array is length 1 then replace it with its one element
-function flatten_attributes(array $attributes): array
-{
- return array_map(fn($v) => count($v) === 1 ? $v[0] : $v, $attributes);
-}
-
-$givenName = trim(readline("Enter the course ID (example: CS123): "));
-$sn = trim(readline("Enter the year and semester of the course (example: Fall 2025): "));
-$cn = strtolower(
+$course_id = trim(readline("Enter the course ID (example: CS123): "));
+$course_notes = trim(readline("Enter the year and semester of the course (example: Fall 2025): "));
+$gid = strtolower(
trim(readline("Please enter the cn to be used for the course (example: cs123_umass_edu): ")),
);
+$owner_uid = trim(
+ readline(
+ "Enter the UID of the Unity admin responsible for the group (example: simonleary_umass_edu): ",
+ ),
+);
$manager_uid = trim(
- readline("Enter the UID of the group manager (example: simonleary_umass_edu): "),
+ readline(
+ "Enter the UID of the faculty member responsible for the group (example: simonleary_umass_edu): ",
+ ),
);
-$org_gid = cn2org($cn);
+
+$owner = new UnityUser($owner_uid, $LDAP, $SQL, $MAILER);
+if (!$owner->exists()) {
+ _die("no such user: '$owner_uid'", 1);
+}
$manager = new UnityUser($manager_uid, $LDAP, $SQL, $MAILER);
if (!$manager->exists()) {
_die("no such user: '$manager_uid'", 1);
}
-$course_user = new UnityUser($cn, $LDAP, $SQL, $MAILER);
-if ($course_user->exists()) {
- $course_user_dn = $LDAP->getUserEntry($cn)->getDN();
- _die("course user already exists: '$course_user_dn'", 1);
-}
-$org = new UnityOrg($org_gid, $LDAP);
-if (!$org->exists()) {
- print "WARNING: creating new org '$org_gid'...\n";
-}
-$mail = ""; // temporary empty mail
-$course_user->init($givenName, $sn, $mail, $org_gid);
-$course_user->setFlag(UserFlag::IMMORTAL, true, false, true);
-
-$course_pi_group = $course_user->getPIGroup();
-$course_user->setMail($course_pi_group->addPlusAddressToMail($manager->getMail()));
-
+$course_pi_group = new UnityGroup($gid, $LDAP, $SQL, $MAILER);
if ($course_pi_group->exists()) {
$course_pi_group_dn = $LDAP->getPIGroupEntry($course_pi_group->gid)->getDN();
_die("course PI group already exists: '$course_pi_group_dn'", 1);
}
-$course_pi_group->requestGroup(false, false);
-$course_pi_group->approveGroup();
-$course_pi_group->newUserRequest($manager, false);
-$course_pi_group->approveUser($manager);
+$course_pi_group->requestGroup($owner_uid, send_mail: false, send_mail_to_admins: false);
+$course_pi_group->approveGroup($owner_uid, send_mail: true);
+$course_pi_group->newUserRequest($manager, send_mail: false);
+$course_pi_group->approveUser($manager, send_mail: true);
$course_pi_group->addManagerUID($manager_uid);
-print "LDAP entries created:\n";
-print _json_encode(
- [
- "course user" => flatten_attributes($LDAP->getUserEntry($cn)->getAttributes()),
- "course user group" => flatten_attributes($LDAP->getUserGroupEntry($cn)->getAttributes()),
- "course PI group" => flatten_attributes(
- $LDAP->getPIGroupEntry($course_pi_group->gid)->getAttributes(),
- ),
- ],
- JSON_PRETTY_PRINT,
-);
+$entry = $LDAP->getPIGroupEntry($course_pi_group->gid);
+$entry->setAttribute("description", "$course_id $course_notes");
+
+print "PI group created:\n";
+print _json_encode($entry->getAttributes(), JSON_PRETTY_PRINT);
diff --git a/workers/user-expiry.php b/workers/user-expiry.php
index 39a2500dc..d250f993f 100755
--- a/workers/user-expiry.php
+++ b/workers/user-expiry.php
@@ -46,7 +46,7 @@
foreach ($LDAP->getPIGroupsAttributes(["cn", "memberuid"], ["memberuid" => []]) as $attributes) {
$pi_group_members[$attributes["cn"][0]] = $attributes["memberuid"];
}
-$pi_group_owners = array_map(UnityGroup::GID2OwnerUID(...), array_keys($pi_group_members));
+$pi_group_owners = array_map(UnityGroup::NamesakeGID2OwnerUID(...), array_keys($pi_group_members));
$initially_idlelocked_users = $LDAP->userFlagGroups["idlelocked"]->getMemberUIDs();
$initially_disabled_users = $LDAP->userFlagGroups["disabled"]->getMemberUIDs();
@@ -135,7 +135,7 @@ function disableWarnUser(UnityUser $user, int $day)
$idle_days = $uid_to_idle_days[$user->uid];
$expiration_date = date("Y/m/d", $last_login + $disable_day * 24 * 60 * 60);
$is_final_warning = $day === $final_disable_warning_day;
- $pi_group_gid = UnityGroup::ownerUID2GID($user->uid);
+ $pi_group_gid = UnityGroup::ownerUID2NamesakeGID($user->uid);
$pi_group_member_uids = $pi_group_members[$pi_group_gid] ?? [];
$mail_template_data = [
"user" => $user->uid,