Thank you so much Steve!
I need some assistance understanding your iRule.
1) I need to create a 'data group list' called snatpool_example which will contain all the available IPs to choose from for doing the SNAT.
In addition I need to create a 'snatpool' called mysnatpool which will contain the exact same members as snatpool_example data group list?
2) snatpool_class and snatpool_example are the same? (so its a typo and I need to change them to be same?)
3) snat_table and snattable are the same? (so its a typo and I need to change them to be same?)
4) wouldn't it be more efficent to use different tables. one for uname as key and snatpool_member as value and the other table with snatpool_member as key and uname as value?
5) wouldn't the while go over the entire snatpool even if an available IP is found to be used (since there is no 'exit' or 'return')? can it be changed?