Actually, it's surprised to me that Python does not support function 
overloading. Otherwise, we can keep both
create_network(self, tenant_id, net_name)
and 
create_network(self, tenant_id, net_name, **kwargs)

Problem will be easier.

Ying
> -----Original Message-----
> From: Brad Hall [mailto:b...@nicira.com]
> Sent: Tuesday, October 11, 2011 10:58 AM
> To: Salvatore Orlando
> Cc: Ying Liu (yinliu2); Dan Wendlandt; netstack@lists.launchpad.net
> Subject: Re: [Netstack] Data extensions in quantum
> 
> Replies inline..
> 
> On Tue, Oct 11, 2011 at 7:54 AM, Salvatore Orlando
> <salvatore.orla...@eu.citrix.com> wrote:
> > I don't have yet performed a complete review.
> > Anyway, I was wondering whether we can avoid breaking existing
> plugins by using **kwargs,  and not removing existing parameters
> >
> > Example: create_network(self, tenant_id, net_name, **kwargs)
> 
> Yeah, I had thought about doing it that way but figured if we were
> going to break plugins now would be a better time to do it then
> possibly later.  I'm OK either way -- using kwargs makes for a much
> cleaner diff.  I posted a new review here:
> https://review.openstack.org/#change,835
> 
> > I also think Ying had another important point on how the API layer
> should parse information for extended data.
> > Parse_request_params only deal with 'core' structure of resources,
> and this is something else that needs to be addressed.
> 
> Hopefully she'll chime in.  As it is parse_request_params does only
> look at any core items and just builds a dict with the rest of them.
> I think it should be up to the plugin to parse anything extra since
> parse_request_params is unlikely to know what it is.  (Or, maybe,
> there could be a way for a plugin to register any extra params it
> would like to take..)
> 
> > Salvatore
> 
> Thanks for taking a look!
> 
> -Brad
> 
> >> -----Original Message-----
> >> From: netstack-
> >> bounces+salvatore.orlando=eu.citrix....@lists.launchpad.net
> >> [mailto:netstack-
> >> bounces+salvatore.orlando=eu.citrix....@lists.launchpad.net] On
> Behalf Of
> >> Brad Hall
> >> Sent: 10 October 2011 23:06
> >> To: Ying Liu (yinliu2); Dan Wendlandt
> >> Cc: netstack@lists.launchpad.net
> >> Subject: Re: [Netstack] Data extensions in quantum
> >>
> >> Ping :)  Reviews/comments appreciated.
> >>
> >> Thanks,
> >> Brad
> >>
> >> On Tue, Sep 27, 2011 at 9:29 AM, Brad Hall <b...@nicira.com> wrote:
> >> > I've created a branch to address this here:
> >> > https://review.openstack.org/#change,665
> >> >
> >> > Currently I've only add param dicts to the create calls but maybe
> it
> >> > makes sense to do it for the update calls as well.  I'm not
> terribly
> >> > happy about changing the plugin interface as this will break any
> >> > plugins that aren't in the tree .. if anyone has other ideas that
> >> > would be appreciated.  Comments/suggestions/etc appreciated.
> >> >
> >> > Thanks,
> >> > Brad
> >> >
> >> > On Fri, Sep 23, 2011 at 12:04 AM, Ying Liu (yinliu2)
> <yinl...@cisco.com>
> >> wrote:
> >> >> Hi Brad,
> >> >>
> >> >> I agree with you.
> >> >>
> >> >> For extension framework, its functionality only provides us
> mechanism
> >> >> to get extended attributes into request data, which is done as
> the
> >> >> example illustrated. However, to pass the data to the plugin for
> >> >> further processing, we need either modify existing action's
> >> >> parse_request_param or having flexible param structure, eg. (key,
> >> >> value) pair. We actually proposed this earlier as it makes
> extension much
> >> easier.
> >> >>
> >> >> Just my 2 cents.
> >> >>
> >> >> Best,
> >> >> Ying
> >> >>
> >> >>
> >> >>
> >> >>
> >> >>> -----Original Message-----
> >> >>> From: netstack-bounces+yinliu2=cisco....@lists.launchpad.net
> >> >>> [mailto:netstack-bounces+yinliu2=cisco....@lists.launchpad.net]
> On
> >> >>> Behalf Of Brad Hall
> >> >>> Sent: Thursday, September 22, 2011 3:20 PM
> >> >>> To: netstack@lists.launchpad.net
> >> >>> Subject: [Netstack] Data extensions in quantum
> >> >>>
> >> >>> Hello Netstackers,
> >> >>>
> >> >>> I've been working with the extensions framework lately and
> wanted to
> >> >>> know how data extensions are supposed to work.  What I want to
> do is
> >> >>> something like this:
> >> >>>
> >> >>> A hypothetical device that I'm writing a plugin for has a
> property
> >> >>> on the port called "foo" and I want to be able to create a port
> >> >>> giving "foo" a value.  So based on the examples in
> >> >>> tests/test_extensions.py I made an extension that contains the
> >> following:
> >> >>>
> >> >>>     @classmethod
> >> >>>     def get_request_extensions(self):
> >> >>>         def _foo_handler(req, res):
> >> >>>             data = json.loads(res.body)
> >> >>>             data[foo] = req.GET.get('foo')
> >> >>>             res.body = json.dumps(data)
> >> >>>             return res
> >> >>>
> >> >>>         req_ext = extensions.RequestExtension('POST',
> >> >>>             '/tenants/:(tenant_id)/networks/:(network_id)/ports',
> >> >>>             _foo_handler)
> >> >>>         return [req_ext]
> >> >>>
> >> >>> Then I can use:
> >> >>>
> >> >>> POST /v1.0/tenants/<tid>/networks/<nid>/ports (body = {'foo':
> >> >>> 'bar'})
> >> >>>
> >> >>> The problem is that there is no way (currently) to propagate
> 'foo'
> >> >>> to the create_port call.  The port ops_param_list only has
> >> >>> port-state so parse_request_params won't allow my 'foo' .. and
> even
> >> >>> if it did the create_port call only picks out the params it
> knows
> >> >>> about (port-state) and sends those directly to
> plugin::create_port().
> >> >>>
> >> >>> What it seems like we need:
> >> >>>
> >> >>> 1) For parse_request_params we should add any extra params to
> the
> >> >>> result dictionary.
> >> >>> 2) {create,update}_{port,network}() calls should just send a
> params
> >> >>> dict as an argument to the plugin create/update function instead
> of
> >> >>> sending the params like port-state as explicit arguments.
> >> >>>
> >> >>> Does this make sense?  Please let me know if I'm thinking about
> this
> >> >>> all wrong or if there is a different way this is supposed to be
> used.
> >> >>>
> >> >>> Thanks,
> >> >>> Brad
> >> >>>
> >> >>> --
> >> >>> Mailing list: https://launchpad.net/~netstack Post to     :
> >> >>> netstack@lists.launchpad.net Unsubscribe :
> >> >>> https://launchpad.net/~netstack More help   :
> >> >>> https://help.launchpad.net/ListHelp
> >> >>
> >> >
> >>
> >> --
> >> Mailing list: https://launchpad.net/~netstack
> >> Post to     : netstack@lists.launchpad.net
> >> Unsubscribe : https://launchpad.net/~netstack
> >> More help   : https://help.launchpad.net/ListHelp
> >

-- 
Mailing list: https://launchpad.net/~netstack
Post to     : netstack@lists.launchpad.net
Unsubscribe : https://launchpad.net/~netstack
More help   : https://help.launchpad.net/ListHelp

Reply via email to