How do I setup License Partitioning for my Houdini License Server (sesinetd) 19.5 and older?

As of Houdini 20.0, the partitioning feature has been completely re-written. The contents of this FAQ will not apply to license servers at version 20.0+. This FAQ requires that the license server (sesinetd) itself is at 18.5 minimum and less than 20.0.

License partitioning is a way to break up a set of licenses into different groups based on a wide range of conditions. This replaces the need to split up the licenses to multiple license servers and instead use the one server to break up the licenses virtually.

License partitioning is also a great way to control license access and restrict critical licenses to the artists that need them, and block unintended license acquisitions from other artists.

License Partitioning will need to be enabled by editing the sesinetd.ini file, located in the same directory as the licenses file.

Add the variable:

enablePartitioning=1

The license server sesinetd will need to be restarted.

Create the hidden file .partition.json and place this file also into the same directory as the licenses file. This .json file will contain your partitioning information.

For more information please refer to the online documentation.

Examples:

To allow only the user boogyman to use the single Houdini Engine License ID 5659b4fe:

{ "user_groups": [
{ 
"name": "Engine Group",
"if": "username == 'boogyman'"
}
],
"license_partitions": [
{
"if": "licenseid == '5659b4fe'",
"user_group": "Engine Group",
"quantity": 1
}
]
}

Houdini Engine License ID 5659b4fe has 10 tokens (licenses) to be split between projects A, B, C.

Project A = 3 tokens (licenses)

Project B = 5 tokens (licenses)

Project C = 2 tokens (licenses)

Project C may borrow from Project A or Project B.

{ "user_groups": [
{ 
"name": "Project A",
"if": "username in ['user1', 'user2', 'user3']"
},
"name": "Project B",
"if": "username in ['user4', 'user5', 'user6']"
},
"name": "Project C",
"if": "username == 'user7'"
}
],
"license_partitions": [
{
"if": "licenseid == '5659b4fe'",
"user_group": "Project A",
"quantity": 3,
"borrow": "Project C"
},
{
"if": "licenseid == '5659b4fe'",
"user_group": "Project B",
"quantity": 5,
"borrow": "Project C"
},
{
"if": "licenseid == '5659b4fe'",
"user_group": "Project C",
"quantity": 2,
}
]
}

The documentation will have more examples.