← Back to team overview

openstack team mailing list archive

[openstack-dev] Writing Plug-ins to Quantum

 

Hi Stackers-

I'm testing a dummy plugin which does and RPC based communication with
Quantum.

I have done this following:

[1] I have written dummy agent like DHCP agent  - Present in HOST
[2] I have written dummy_rpc_base like the db/dhcp_rpc_base.py - Present in
Controller
[3] I have written an testing method to the  db/db_base_plugin_v2.py  -
Present in Controller

But when I restart the quantum-server, I get this error:

root@user-P2020Build:/usr/lib/python2.7/dist-packages/quantum/db# python
 /usr/bin/quantum-server -- --config-file /etc/quantum/quantum.conf
--log-file /var/log/quantum/server.log --config-file
/etc/quantum/plugins/openvswitch/ovs_quantum_plugin.ini
2012-10-31 14:20:30    DEBUG [quantum.service]
********************************************************************************
2012-10-31 14:20:30    DEBUG [quantum.service] Configuration options
gathered from config file:
2012-10-31 14:20:30    DEBUG [quantum.service]
================================================
2012-10-31 14:20:30    DEBUG [quantum.service] allow_bulk
  True
2012-10-31 14:20:30    DEBUG [quantum.service] allow_overlapping_ips
   False
2012-10-31 14:20:30    DEBUG [quantum.service] api_extensions_path

2012-10-31 14:20:30    DEBUG [quantum.service] api_paste_config
  /etc/quantum/api-paste.ini
2012-10-31 14:20:30    DEBUG [quantum.service] auth_strategy
   keystone
2012-10-31 14:20:30    DEBUG [quantum.service] base_mac
  fa:16:3e:00:00:00
2012-10-31 14:20:30    DEBUG [quantum.service] bind_host
   0.0.0.0
2012-10-31 14:20:30    DEBUG [quantum.service] bind_port
   9696
2012-10-31 14:20:30    DEBUG [quantum.service] config_dir
  None
2012-10-31 14:20:30    DEBUG [quantum.service] config_file
   ['/etc/quantum/quantum.conf']
2012-10-31 14:20:30    DEBUG [quantum.service] core_plugin
   quantum.plugins.openvswitch.ovs_quantum_plugin.OVSQuantumPluginV2
2012-10-31 14:20:30    DEBUG [quantum.service] debug
   True
2012-10-31 14:20:30    DEBUG [quantum.service] dhcp_lease_duration
   120
2012-10-31 14:20:30    DEBUG [quantum.service] log_config
  None
2012-10-31 14:20:30    DEBUG [quantum.service] log_date_format
   %Y-%m-%d %H:%M:%S
2012-10-31 14:20:30    DEBUG [quantum.service] log_dir
   None
2012-10-31 14:20:30    DEBUG [quantum.service] log_file
  None
2012-10-31 14:20:30    DEBUG [quantum.service] log_format
  %(asctime)s %(levelname)8s [%(name)s] %(message)s
2012-10-31 14:20:30    DEBUG [quantum.service] mac_generation_retries
  16
2012-10-31 14:20:30    DEBUG [quantum.service] max_dns_nameservers
   5
2012-10-31 14:20:30    DEBUG [quantum.service] max_subnet_host_routes
  20
2012-10-31 14:20:30    DEBUG [quantum.service] policy_file
   policy.json
2012-10-31 14:20:30    DEBUG [quantum.service] state_path
  .
2012-10-31 14:20:30    DEBUG [quantum.service] syslog_log_facility
   LOG_USER
2012-10-31 14:20:30    DEBUG [quantum.service] use_syslog
  False
2012-10-31 14:20:30    DEBUG [quantum.service] verbose
   True
2012-10-31 14:20:30    DEBUG [quantum.service]
********************************************************************************
2012-10-31 14:20:30     INFO [quantum.common.config] Config paste file:
/etc/quantum/api-paste.ini
2012-10-31 14:20:30    DEBUG [quantum.manager] Plugin
location:quantum.plugins.openvswitch.ovs_quantum_plugin.OVSQuantumPluginV2
2012-10-31 14:20:30     INFO [quantum.manager] Loading Plugin:
quantum.plugins.openvswitch.ovs_quantum_plugin.OVSQuantumPluginV2
Traceback (most recent call last):
  File "/usr/bin/quantum-server", line 26, in <module>
    server()
  File "/usr/lib/python2.7/dist-packages/quantum/server/__init__.py", line
40, in main
    quantum_service = service.serve_wsgi(service.QuantumApiService)
  File "/usr/lib/python2.7/dist-packages/quantum/service.py", line 83, in
serve_wsgi
    service.start()
  File "/usr/lib/python2.7/dist-packages/quantum/service.py", line 42, in
start
    self.wsgi_app = _run_wsgi(self.app_name)
  File "/usr/lib/python2.7/dist-packages/quantum/service.py", line 89, in
_run_wsgi
    app = config.load_paste_app(app_name)
  File "/usr/lib/python2.7/dist-packages/quantum/common/config.py", line
133, in load_paste_app
    app = deploy.loadapp("config:%s" % config_path, name=app_name)
  File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line
247, in loadapp
    return loadobj(APP, uri, name=name, **kw)
  File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line
272, in loadobj
    return context.create()
  File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line
710, in create
    return self.object_type.invoke(self)
  File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line
144, in invoke
    **context.local_conf)
  File "/usr/lib/python2.7/dist-packages/paste/deploy/util.py", line 59, in
fix_call
    reraise(*exc_info)
  File "/usr/lib/python2.7/dist-packages/paste/deploy/compat.py", line 22,
in reraise
    exec('raise t, e, tb', dict(t=t, e=e, tb=tb))
  File "/usr/lib/python2.7/dist-packages/paste/deploy/util.py", line 56, in
fix_call
    val = callable(*args, **kw)
  File "/usr/lib/python2.7/dist-packages/paste/urlmap.py", line 25, in
urlmap_factory
    app = loader.get_app(app_name, global_conf=global_conf)
  File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line
350, in get_app
    name=name, global_conf=global_conf).create()
  File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line
710, in create
    return self.object_type.invoke(self)
  File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line
144, in invoke
    **context.local_conf)
  File "/usr/lib/python2.7/dist-packages/paste/deploy/util.py", line 59, in
fix_call
    reraise(*exc_info)
  File "/usr/lib/python2.7/dist-packages/paste/deploy/compat.py", line 22,
in reraise
    exec('raise t, e, tb', dict(t=t, e=e, tb=tb))
  File "/usr/lib/python2.7/dist-packages/paste/deploy/util.py", line 56, in
fix_call
    val = callable(*args, **kw)
  File "/usr/lib/python2.7/dist-packages/quantum/auth.py", line 61, in
pipeline_factory
    app = loader.get_app(pipeline[-1])
  File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line
350, in get_app
    name=name, global_conf=global_conf).create()
  File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line
710, in create
    return self.object_type.invoke(self)
  File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line
146, in invoke
    return fix_call(context.object, context.global_conf,
**context.local_conf)
  File "/usr/lib/python2.7/dist-packages/paste/deploy/util.py", line 59, in
fix_call
    reraise(*exc_info)
  File "/usr/lib/python2.7/dist-packages/paste/deploy/compat.py", line 22,
in reraise
    exec('raise t, e, tb', dict(t=t, e=e, tb=tb))
  File "/usr/lib/python2.7/dist-packages/paste/deploy/util.py", line 56, in
fix_call
    val = callable(*args, **kw)
  File "/usr/lib/python2.7/dist-packages/quantum/api/v2/router.py", line
67, in factory
    return cls(**local_config)
  File "/usr/lib/python2.7/dist-packages/quantum/api/v2/router.py", line
71, in __init__
    plugin = manager.QuantumManager.get_plugin()
  File "/usr/lib/python2.7/dist-packages/quantum/manager.py", line 65, in
get_plugin
    cls._instance = cls()
  File "/usr/lib/python2.7/dist-packages/quantum/manager.py", line 54, in
__init__
    plugin_klass = importutils.import_class(plugin_provider)
  File
"/usr/lib/python2.7/dist-packages/quantum/openstack/common/importutils.py",
line 30, in import_class
    __import__(mod_str)
  File
"/usr/lib/python2.7/dist-packages/quantum/plugins/openvswitch/ovs_quantum_plugin.py",
line 33, in <module>
    from quantum.db import l3_db
  File "/usr/lib/python2.7/dist-packages/quantum/db/l3_db.py", line 86, in
<module>
    class L3_NAT_db_mixin(l3.RouterPluginBase):
  File "/usr/lib/python2.7/dist-packages/quantum/db/l3_db.py", line 111, in
L3_NAT_db_mixin
    _network_filter_hook)
TypeError: unbound method register_model_query_hook() must be called with
QuantumDbPluginV2 instance as first argument (got DeclarativeMeta instance
instead)

How to resolve this error?

How can I register a new plugin/agent with the quantum?

Please help me in this regard.


-- 
Regards,
----------------------------------------------
Trinath Somanchi,
+91 9866 235 130

Follow ups