Workaround for "Only items of type project are allowed at the root level"?

I’m looking for a way to tweak my toolkit schema so as to have a project-less folder structure. This is typical for client-side production where the ShotGrid studio site has been created for a project as opposed to for a facility. Also, when productions hire a pipeline TD, typically the folder structure is already in place and can not be moved. Consider the following folders, mounted on macOS under /Volumes/PROD-VFX:

/Volumes/PROD-VFX/assets
/Volumes/PROD-VFX/assets/characters
/Volumes/PROD-VFX/assets/props

/Volumes/PROD-VFX/shottree
/Volumes/PROD-VFX/shottree/abc
/Volumes/PROD-VFX/shottree/abc/abc1000

All vendor deliveries and turnovers go here

/Volumes/PROD-VFX/postoffice

What I have done in this instance is set the “tank_name” of the project as “shottree”. In templates.yml, you can reference folders outside of that project directory by using a …/ in front of a Path template definition. However, this does not work for dynamic content.

I just tried creating a static “assets” folder along with an accompanying “assets.yml” file with type: static defined, and I got the error “Only items of type project are allowed at the root level”.

Do I:

Change the tank_name of the project to “.”? Will that actually work?

Or do I:

Change the primary storage root to be “/Volumes”, and set the tank_name of the project to PROD-VFX? This will completely break Windows users, but, there aren’t many of them, so maybe make the Mac users happy and then figure this out later?

It seems like I may have answered at least part of my own question. Apparently, you can actually use “.” as a value for the tank_name field in a project. Which doesn’t mean that you should! It breaks a lot of stuff, most notably - if you have published anything previously for any shot or asset. Since /Volumes/PROD-VFX/./shottree/abc/abc1000 will always resolve to /Volumes/PROD-VFX/shottree/abc/abc1000, but /Volumes/PROD-VFX/shottree/abc/abc1000 appears, to SGTK at least, to be a path outside of the project structure.

The temporary workaround here is to just make the Filesystem root /Volumes, and set the tank_name of the project to PROD-VFX. Unfortunately this kind of screws Windows users, but, that’s a problem for another day. Might be easiest to figure this out on the network share side of things.

ShotGrid folks, what is the proper way to do this?

1 Like

Heya Ned! If I recall from my SG days, there’s no well-supported way to configure Toolkit for a projectless directory structure – project and tank name are basic requirements. I don’t know much about Windows networking, but can you mount a network drive as drive+folder? ie, could you mount this drive on your Windows machines as N:\PROD-VFX or something to that effect?

Hi Tannaz!!! So nice to hear from you! I also don’t know a ton about Windows networking, but what you can do is something similar to what you suggested, but using UNC paths instead of mapped network drives. Let’s say that your fileserver has a fully-qualified domain name of nas01.domain.local. In the site preferences for your SG studio site, under file management, where your primary storage root is defined, you can use “\nas01.domain.local” for the Windows path. Mac Path would read “/Volumes” and Linux Path would also read “/Volumes”. I actually have my Linux boxes use the same mount points as the Macs, so there is zero path mapping necessary between them. Some folks would use “/mnt” here, however.