Automating one-time commands with GSH and SQL
Task
There are two existing groups for schools and centers, make a third. And make that group able to manage the other two groups
The two groups (there are more than this, this is an example:
This is what the third will look like (add LocalAdmins)
SQL to generate GSH
Get the script with Sql (postgres)
select 'new GroupSave().assignName("' || prefix_name || 'LocalAdmins").assignDescription("' || name || ' admins in zoom who cannot change account settings").save();' || chr(10)
|| 'new PrivilegeGroupSave().assignField(AccessPrivilege.UPDATE.getField()).assignGroupName("' || prefix_name || 'LocalAdmins").assignSubjectIdentifier("' || prefix_name || 'LocalAdmins").save();' || chr(10)
|| 'new PrivilegeGroupSave().assignField(AccessPrivilege.READ.getField()).assignGroupName("' || prefix_name || 'LocalAdmins").assignSubjectIdentifier("' || prefix_name || 'LocalAdmins").save();' || chr(10)
|| 'new PrivilegeGroupSave().assignField(AccessPrivilege.UPDATE.getField()).assignGroupName("' || prefix_name || 'Admins").assignSubjectIdentifier("' || prefix_name || 'LocalAdmins").save();' || chr(10)
|| 'new PrivilegeGroupSave().assignField(AccessPrivilege.READ.getField()).assignGroupName("' || prefix_name || 'Admins").assignSubjectIdentifier("' || prefix_name || 'LocalAdmins").save();' || chr(10)
|| 'new PrivilegeGroupSave().assignField(AccessPrivilege.UPDATE.getField()).assignGroupName("' || prefix_name || 'Lsps").assignSubjectIdentifier("' || prefix_name || 'LocalAdmins").save();' || chr(10)
|| 'new PrivilegeGroupSave().assignField(AccessPrivilege.READ.getField()).assignGroupName("' || prefix_name || 'Lsps").assignSubjectIdentifier("' || prefix_name || 'LocalAdmins").save();' || chr(10)
|| 'new AttributeAssignSave(GrouperSession.staticGrouperSession()).assignOwnerGroupName("' || prefix_name || 'LocalAdmins").assignNameOfAttributeDefName("penn:etc:attribute:membershipRequirement:membershipRequirementEmployee").save();' || chr(10)
|| 'new AttributeAssignSave(GrouperSession.staticGrouperSession()).assignOwnerGroupName("' || prefix_name || 'Admins").assignNameOfAttributeDefName("penn:etc:attribute:membershipRequirement:membershipRequirementEmployee").save();' || chr(10)
|| 'new AttributeAssignSave(GrouperSession.staticGrouperSession()).assignOwnerGroupName("' || prefix_name || 'Lsps").assignNameOfAttributeDefName("penn:etc:attribute:membershipRequirement:membershipRequirementEmployee").save();'
as script
from (select substring(substring(name, 1, LENGTH(name) - 6),
length('penn:isc:ait:apps:zoom:security:schoolCenterAdminsAndLsps:zoom')+1, length(name) - 6 )
as name, substring(name, 1, length(name)-6) as prefix_name, 'penn:isc:ait:apps:zoom:security:schoolCenterAdminsAndLsps:zoom' as prefix from grouper_groups gg
where name like 'penn:isc:ait:apps:zoom:security:schoolCenterAdminsAndLsps:zoom%Admins'
and name not like '%Local%'
order by 1) as name_prefixes;Result (clean it up if there are double quotes after newlines)
new GroupSave().assignName("penn:isc:ait:apps:zoom:security:schoolCenterAdminsAndLsps:zoomAscLocalAdmins").assignDescription("Asc admins in zoom who cannot change account settings").save();
new PrivilegeGroupSave().assignField(AccessPrivilege.UPDATE.getField()).assignGroupName("penn:isc:ait:apps:zoom:security:schoolCenterAdminsAndLsps:zoomAscLocalAdmins").assignSubjectIdentifier("penn:isc:ait:apps:zoom:security:schoolCenterAdminsAndLsps:zoomAscLocalAdmins").save();
new PrivilegeGroupSave().assignField(AccessPrivilege.READ.getField()).assignGroupName("penn:isc:ait:apps:zoom:security:schoolCenterAdminsAndLsps:zoomAscLocalAdmins").assignSubjectIdentifier("penn:isc:ait:apps:zoom:security:schoolCenterAdminsAndLsps:zoomAscLocalAdmins").save();
new PrivilegeGroupSave().assignField(AccessPrivilege.UPDATE.getField()).assignGroupName("penn:isc:ait:apps:zoom:security:schoolCenterAdminsAndLsps:zoomAscAdmins").assignSubjectIdentifier("penn:isc:ait:apps:zoom:security:schoolCenterAdminsAndLsps:zoomAscLocalAdmins").save();
new PrivilegeGroupSave().assignField(AccessPrivilege.READ.getField()).assignGroupName("penn:isc:ait:apps:zoom:security:schoolCenterAdminsAndLsps:zoomAscAdmins").assignSubjectIdentifier("penn:isc:ait:apps:zoom:security:schoolCenterAdminsAndLsps:zoomAscLocalAdmins").save();
new PrivilegeGroupSave().assignField(AccessPrivilege.UPDATE.getField()).assignGroupName("penn:isc:ait:apps:zoom:security:schoolCenterAdminsAndLsps:zoomAscLsps").assignSubjectIdentifier("penn:isc:ait:apps:zoom:security:schoolCenterAdminsAndLsps:zoomAscLocalAdmins").save();
new PrivilegeGroupSave().assignField(AccessPrivilege.READ.getField()).assignGroupName("penn:isc:ait:apps:zoom:security:schoolCenterAdminsAndLsps:zoomAscLsps").assignSubjectIdentifier("penn:isc:ait:apps:zoom:security:schoolCenterAdminsAndLsps:zoomAscLocalAdmins").save();
new AttributeAssignSave(GrouperSession.staticGrouperSession()).assignOwnerGroupName("penn:isc:ait:apps:zoom:security:schoolCenterAdminsAndLsps:zoomAscLocalAdmins").assignNameOfAttributeDefName("penn:etc:attribute:membershipRequirement:membershipRequirementEmployee").save();
new AttributeAssignSave(GrouperSession.staticGrouperSession()).assignOwnerGroupName("penn:isc:ait:apps:zoom:security:schoolCenterAdminsAndLsps:zoomAscAdmins").assignNameOfAttributeDefName("penn:etc:attribute:membershipRequirement:membershipRequirementEmployee").save();
new AttributeAssignSave(GrouperSession.staticGrouperSession()).assignOwnerGroupName("penn:isc:ait:apps:zoom:security:schoolCenterAdminsAndLsps:zoomAscLsps").assignNameOfAttributeDefName("penn:etc:attribute:membershipRequirement:membershipRequirementEmployee").save();
new GroupSave().assignName("penn:isc:ait:apps:zoom:security:schoolCenterAdminsAndLsps:zoomBusinessServicesLocalAdmins").assignDescription("BusinessServices admins in zoom who cannot change account settings").save();
new PrivilegeGroupSave().assignField(AccessPrivilege.UPDATE.getField()).assignGroupName("penn:isc:ait:apps:zoom:security:schoolCenterAdminsAndLsps:zoomBusinessServicesLocalAdmins").assignSubjectIdentifier("penn:isc:ait:apps:zoom:security:schoolCenterAdminsAndLsps:zoomBusinessServicesLocalAdmins").save();
new PrivilegeGroupSave().assignField(AccessPrivilege.READ.getField()).assignGroupName("penn:isc:ait:apps:zoom:security:schoolCenterAdminsAndLsps:zoomBusinessServicesLocalAdmins").assignSubjectIdentifier("penn:isc:ait:apps:zoom:security:schoolCenterAdminsAndLsps:zoomBusinessServicesLocalAdmins").save();
new PrivilegeGroupSave().assignField(AccessPrivilege.UPDATE.getField()).assignGroupName("penn:isc:ait:apps:zoom:security:schoolCenterAdminsAndLsps:zoomBusinessServicesAdmins").assignSubjectIdentifier("penn:isc:ait:apps:zoom:security:schoolCenterAdminsAndLsps:zoomBusinessServicesLocalAdmins").save();
new PrivilegeGroupSave().assignField(AccessPrivilege.READ.getField()).assignGroupName("penn:isc:ait:apps:zoom:security:schoolCenterAdminsAndLsps:zoomBusinessServicesAdmins").assignSubjectIdentifier("penn:isc:ait:apps:zoom:security:schoolCenterAdminsAndLsps:zoomBusinessServicesLocalAdmins").save();
...Add "GrouperSession.startRootSession();" and run that script