Maxlo
Maxlo is a hybrid local/cloud storage and syncing service.
Slingshot integrates fully with its backend API, so the Maxlo client does not need to be installed on the Slingshot worker.
Maxlo mounts its storage as a local volume on computers running the client. In order for Slingshot to know and use the correct paths in Shotgrid, we map the local mount directory to the internal Maxlo volume id
in the Maxlo configuration.
You can get the volume id
from the url of the Maxlo web app, 631
in this example:
Maxlo Volumes
Service Configuration¶
services:
maxlo:
session_key: your_session_key # (1)!
mount_points: # (2)!
/Volumes/slingshotdev: 631 # (3)!
- The API Session key. Currently, this must be obatined manually from the API, but in the future you'll probably be able to generate this from within the organization's Maxlo dashboard.
- A mapping of local mount points to Maxlo
volume_ids
- This tells Slingshot to assume any file path that starts with the path
/Volumes/slingshotdev
actually belongs to the Maxlo volume_id631
Ingest Pipelines¶
Even though Maxlo paths look like local paths (e.g. /Volumes/slingshotdev/SHOTS), they're actually remote cloud paths. As such, to copy to and from Maxlo storage you'll use the remote copy module.
To get files into Maxlo in the first place, you'll need download them to a temp directory, then remote copy them from local to a configured Maxlo volume:
pipelines:
default:
actions:
- module: download # (1)!
description: Download files to temp
operation: download
overwrite_existing_files: true
set_local_path: true # (2)!
paths:
ALL: TEMP # (3)!
- module: remote_copy # (4)!
description: Copy from temp to Maxlo
service: maxlo # (5)!
copy_from: local # (6)!
set_remote_path: true # (7)!
paths:
shot: /Volumes/slingshotdev/SHOTS/$episode/$name
frame: /Volumes/slingshotdev/SHOTS/$episode/$name/$parent_folders
asset: /Volumes/slingshotdev/ASSETS/$asset_type/$name
overwrite_existing_files: true
- module: remote_copy
description: copy from maxlo to maxlo
service: maxlo
copy_from: remote # (8)!
set_remote_path: false # (9)!
paths:
shot: /Volumes/slingshotdev/to_editorial/$package_name
overwrite_existing_files: true
- module: add_to_shotgrid
file_types:
shot:
set_path_to_movie: remote # (10)!
sg_link_to_movie_field: remote
...
- First, download the files (from Aspera, etc).
- Set the item's
local_path
so we know where it resides. - These can be either paths to local storage, or the TEMP directory.
- Then we can remote_copy items to a Maxlo volume, which will upload them via the Maxlo API.
- Setting the service tells Slingshot that the destination path is on Maxlo.
- We want to copy from the saved
local_path
we set above, which is the TEMP directory in this case. - Set the item's
remote_path
to the path on Maxlo. - Since the files are already in Maxlo now, this time we copy from the saved
remote_path
we set above. - In this case, we don't want to overwrite the previous
remote_path
since the to_editorial folder is not the path we want to save and add to Shotgrid. - Use the saved
remote_path
to store in Shotgridpath_to_movie
orpath_to_frames
. Thelocal_path
is still pointing to our TEMP directory in this case which is not what we want.