This has come up for me as well in adding support for targetHttpProxies. I like option 1 as well. Option 2 would mean adding a third None-defaulted parameter for targethttpproxy. Option 3 seems crufty. On Wed Nov 19 2014 at 6:39:48 AM Eric Johnson <[email protected]> wrote:
> Hi folks, > > I'm working on the GCE driver and since this was first added to libcloud, > Google has made a change to the load-balancing 'forwarding rule'. When > first introduced the only option for traffic forwarding was to a > 'targetpool'. However, there is now an option to send traffic to a > 'targetinstance' as well. > > The current signature[1] expects a non-default argument of 'targetpool'. > Ideally, this argument would've been called 'target' to match the current > form of the GCE API and could take either a 'targetpool' or > 'targetinstance'. > > Could I get some input on the best way to proceed? > > Option 1) replace the ex_create_forwarding_rule()'s 'targetpool' positional > argument position with 'target' and move 'targetpool' to a None-default > argument. I think this would allow backwards compatibility if the new > 'target' is smart enough to check for either a GCETargetPool or > GCETargetInstance object. Anyone with code using the named argument of > 'targetpool' would continue to work fine. > > Option 2) Keep 'targetpool' as a value-required positional argument but > allow None. Also introduce a None-defaulted 'targetinstance' argument. > Users wanting to specify a GCETargetInstance, would then need to pass in > None for the 'targetpool' positional argument and use the new > 'targetinstance' argument. > > Option 3) Allow 'targetpool' to take either a GCETargetPool or > GCETargetInstance object and just document that the argument name should > really be called 'target'. > > I'm leaning toward #1, but am not confident that it's the best approach. > Any input or other ideas? > > [1] > https://github.com/apache/libcloud/blob/trunk/libcloud/ > compute/drivers/gce.py#L1102 > > Thank you, > Eric >
