So I think params should include:

-client-rb
-validation-key
-runlist
-server-url
-server-url-generic
-organization

If you specify -server-url, you aren't allowed to specify -server-url-generic or -organization. -server-url is identical to --server-url with knife-azure. If you specify -server-url-generic, you specify the server url without the organization. Then -organization *must* be specified.

If -client-rb is specified, you don't have to specify serverurl, organization, or validation client. But if you do, the values of serverurl / organization and validation client will override whatever is in client.rb.

This lets people just specify a client-rb if they want, but also lets them fully automate using the cli args if they know what they are doing. And if they really want to, they can do both.