User Sync Tool - Step 1 - read and write custom schema, and initiate scanning
Step 1
This is just adding this functionality to the existing sync tool:
- read the custom attributes from Google when getting users
- set an action to initiate a scan if appropriate [1]
- clearing custom attributes when reactivating (unsuspending) users
[1] For each user suspended for more than 6 months (suspended
in Google, cancelled
in Lookup and Lookup cancelledDate
is 6+ months ago) and both mydrive-shared-action
and mydrive-shared-result
are unset/empty (i.e. no current/pending action nor a result of previous action, already scanned), update mydrive-shared-action
to “scan”. See !33 (closed) for example code on retrieving cancelledDates from Lookup.
Reading Schema
In order to retrieve the customSchema
property of a user when using the directory_service.users().get()
or .list()
actions the call needs to be made with projection='custom'
and `customFieldMask='UCam'.
The user object(s) will then contain a structure, like this yaml:
...
id: '111123444555666778888'
emails:
- address: abc123@cam.ac.uk
primary: true
...
customSchemas:
UCam:
mydrive-shared-action: scan
...
suspended: true
...
Don't assume any of the customSchemas branch exists, e.g. use user.get('customSchemas', {}).get('UCam', {}).get('mydrive-shared-action')
Custom schema updating
Performing a ds.users().update()
with a body like the following will update just that key/value pair.
Setting to None will remove the key.
'customSchemas': {
'UCam': {
'mydrive-shared-action': 'scan',
}
}