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 : [email protected]
Unsubscribe : https://launchpad.net/~netstack
More help : https://help.launchpad.net/ListHelp