Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
wallaby accounting group porcelain
This is porcelain for managing an AccountingGroups feature.
The AccountingGroups feature should be independently added to nodes
potentially running a condor_negotiator.
A group: Name (str), Static (int), Dynamic (float), Surplus (tri)
A name: may have multiple dots (.), e.g. A, A.B, B, C, C.D,
representing a Parent.Child relationship
Static and Dynamic are mutually exclusive
Surplus is Yes/No/Default
Invariants -
. If a group's name has a dot, a corresponding parent group exists
. Static and Dynamic are mutually exclusive
. Peer percentages sum to at most 1 (aka 100%)
Notes -
. Param GROUP_NAMES is a string-list of all group names
. GROUP_QUOTA_<Name> is static quota
. GROUP_QUOTA_DYNAMIC_<Name> is dynamic quota (1 = 100%)
. GROUP_ACCEPT_SURPLUS is global default
. GROUP_ACCEPT_SURPLUS_<Name> is group setting
Operations -
. show-accounting-groups
- Display accounting groups configuration
. add-accounting-group NAME <--static #|--dynamic %> [--surplus|--no-surplus]
- Add an accounting group to the configuration
. remove-accounting-group NAME
- Remove an accounting group from configuration
. modify-accounting-group NAME <--static #|--dynamic %> [--surplus|--no-surplus]
- Modify an accounting group's configuration (effectively remove + add)
. set-group-accept-surplus <Yes|No>
- Set the default surplus for all groups
Example usage -
wallaby set-group-accept-surplus yes
wallaby add-accounting-group Status --static 100
wallaby add-accounting-group Status.Reporting --dynamic 50 --surplus
wallaby add-accounting-group Research --dynamic 75.5 --no-surplus
wallaby add-accounting-group Development --dynamic 10
wallaby add-accounting-group Development.Systems --static 10 --no-surplus
wallaby show-accounting-groups
Name Static Dynamic Surplus
---- ------ ------- -------
Status 100 Yes
`Reporting 50% Yes
Research 75.5% No
Development 10% Yes
`Systems 10 No
GROUP_ACCEPT_SURPLUS = Yes
wallaby show-feature AccountingGroups
AccountingGroups
name: "AccountingGroups"
params: {"GROUP_ACCEPT_SURPLUS"=>"TRUE","GROUP_ACCEPT_SURPLUS_Research"=>"FALSE","GROUP_QUOTA_DYNAMIC_Status.Reporting"=>"0.5","GROUP_QUOTA_Status"=>"100","GROUP_QUOTA_DYNAMIC_Development"=>"0.1","GROUP_ACCEPT_SURPLUS_Status.Reporting"=>"TRUE","GROUP_QUOTA_DYNAMIC_Research"=>"0.755","GROUP_QUOTA_Development.Systems"=>"10","GROUP_NAMES"=>"Status,Research,Status.Reporting,Development.Systems,Development,Research"}
depends: []
conflicts: []
included_features: []
annotation: ""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment