我们正在尝试使用新的Resource扩展来扩展nova计算API。 与此示例代码中的方式类似:
如示例所示,我们添加了自己的Controller类,并添加了一个新的" Resource类"继承自extensions.ExtensionDescriptor并具有get_resources方法。由于我们的资源只需要一个show方法,我们的资源类只包含这个:
name = "Foo"
alias = "os-foo"
namespace = "http://docs.openstack.org/compute/ext/foo/api/v1.1"
updated = "2015-08-11T00:00:00+00:00"
def get_resources(self):
resources = [extensions.ResourceExtension('os-foo',
FooController())]
return resources
能够拨打我们的新资源"从命令行我们在客户端建立了一个匹配的资源类。 我们可以看到从这个类发送的请求似乎是正确的,并且它被发送到这个URL:
http://192.168.255.194:8774/v2/16c4a399b6ad4c31b683984bd9188817/os-foo/id' 但是请求没有成功,当我们查看nova api的日志时,我们得到了这样的信息:
GET没有匹配的路由 / b36ac919aca34253aa1fb133044dbf82 / os-foo / ubuntu from(pid = 51315) 致电 /usr/local/lib/python2.7/dist-packages/routes/middleware.py:103
感谢我们如何解决这个问题。
我们怀疑我们必须将我们的扩展添加到路由器的一些方法,但我们无法找到这样做的地方。 但是当我们进行nova list-extensions
时,我们可以看到os-foo被列在其他扩展中