quantum plugin floating_ip api error

Asked by sudhakar

I am using devstack single node installation with quantum enabled for my openstack learning and quantum plugin development.
For the start, I am just trying to create a plugin that calls back openvswitch plugin.
Created new plugin folder under stack/quantum/quantum/plugins and added __init__.py and TestPlugin.py files.
Created new plugin folder under stack/quantum/etc/quantum/plugins/ and then copied ovs_quantum_plugin.ini and renamed to TestPlugin.ini.
Created new file under devstack/lib/quantum_plugins and copied contents of openvswitch file and made changes in it to point my plugin and ini.
Changed localtrc to use my plugin.

UnStacked and restacked. But when I try to login it is failing in floating_ips rest call! If I just commentout my plugin in localrc(switching to ovs) then everything works fine.

Pasted my plugin and locarc contents at the bottom.
Here is the error:

Environment:
Request Method: GET
Request URL: http://172.16.4.190/project/

Django Version: 1.4.5
Python Version: 2.7.3
Installed Applications:
['openstack_dashboard',
 'django.contrib.contenttypes',
 'django.contrib.auth',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.humanize',
 'compressor',
 'horizon',
 'openstack_dashboard.dashboards.project',
 'openstack_dashboard.dashboards.admin',
 'openstack_dashboard.dashboards.settings',
 'openstack_auth']
Installed Middleware:
('django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'horizon.middleware.HorizonMiddleware',
 'django.middleware.doc.XViewMiddleware',
 'django.middleware.locale.LocaleMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware')

Traceback:
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response
  111. response = callback(request, *callback_args, **callback_kwargs)
File "/opt/stack/horizon/openstack_dashboard/wsgi/../../horizon/decorators.py" in dec
  38. return view_func(request, *args, **kwargs)
File "/opt/stack/horizon/openstack_dashboard/wsgi/../../horizon/decorators.py" in dec
  54. return view_func(request, *args, **kwargs)
File "/opt/stack/horizon/openstack_dashboard/wsgi/../../horizon/decorators.py" in dec
  38. return view_func(request, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/views/generic/base.py" in view
  48. return self.dispatch(request, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/views/generic/base.py" in dispatch
  69. return handler(request, *args, **kwargs)
File "/opt/stack/horizon/openstack_dashboard/wsgi/../../horizon/tables/views.py" in get
  155. handled = self.construct_tables()
File "/opt/stack/horizon/openstack_dashboard/wsgi/../../horizon/tables/views.py" in construct_tables
  146. handled = self.handle_table(table)
File "/opt/stack/horizon/openstack_dashboard/wsgi/../../horizon/tables/views.py" in handle_table
  118. data = self._get_data_dict()
File "/opt/stack/horizon/openstack_dashboard/wsgi/../../horizon/tables/views.py" in _get_data_dict
  182. self._data = {self.table_class._meta.name: self.get_data()}
File "/opt/stack/horizon/openstack_dashboard/wsgi/../../openstack_dashboard/dashboards/project/overview/views.py" in get_data
  32. super(ProjectOverview, self).get_data()
File "/opt/stack/horizon/openstack_dashboard/wsgi/../../openstack_dashboard/usage/views.py" in get_data
  34. self.usage.get_quotas()
File "/opt/stack/horizon/openstack_dashboard/wsgi/../../openstack_dashboard/usage/base.py" in get_quotas
  115. _("Unable to retrieve quota information."))
File "/opt/stack/horizon/openstack_dashboard/wsgi/../../openstack_dashboard/usage/base.py" in get_quotas
  112. self.quotas = quotas.tenant_quota_usages(self.request)
File "/opt/stack/horizon/openstack_dashboard/wsgi/../../horizon/utils/memoized.py" in __call__
  33. value = self.func(*args)
File "/opt/stack/horizon/openstack_dashboard/wsgi/../../openstack_dashboard/usage/quotas.py" in tenant_quota_usages
  88. floating_ips = network.tenant_floating_ip_list(request)
File "/opt/stack/horizon/openstack_dashboard/wsgi/../../openstack_dashboard/api/network.py" in tenant_floating_ip_list
  141. return NetworkClient(request).floating_ips.list()
File "/opt/stack/horizon/openstack_dashboard/wsgi/../../openstack_dashboard/api/quantum.py" in list
  125. fips = self.client.list_floatingips().get('floatingips')
File "/opt/stack/python-quantumclient/quantumclient/v2_0/client.py" in with_params
  107. ret = self.function(instance, *args, **kwargs)
File "/opt/stack/python-quantumclient/quantumclient/v2_0/client.py" in list_floatingips
  434. **_params)
File "/opt/stack/python-quantumclient/quantumclient/v2_0/client.py" in list
  996. for r in self._pagination(collection, path, **params):
File "/opt/stack/python-quantumclient/quantumclient/v2_0/client.py" in _pagination
  1009. res = self.get(path, params=params)
File "/opt/stack/python-quantumclient/quantumclient/v2_0/client.py" in get
  982. headers=headers, params=params)
File "/opt/stack/python-quantumclient/quantumclient/v2_0/client.py" in retry_request
  967. headers=headers, params=params)
File "/opt/stack/python-quantumclient/quantumclient/v2_0/client.py" in do_request
  912. self._handle_fault_response(status_code, replybody)
File "/opt/stack/python-quantumclient/quantumclient/v2_0/client.py" in _handle_fault_response
  893. exception_handler_v20(status_code, des_error_body)
File "/opt/stack/python-quantumclient/quantumclient/v2_0/client.py" in exception_handler_v20
  87. message=message)

Exception Type: QuantumClientException at /project/
Exception Value: 404 Not Found

The resource could not be found.

......
My plugin:

import logging
#import ConfigParser
from quantum.db import db_base_plugin_v2
from quantum.db import l3_db
from quantum.db import api as db
from quantum.db import models_v2
from quantum.api.v2 import attributes
from quantum.common.utils import find_config_file
from quantum.common import exceptions as q_exc
from quantum.openstack.common import cfg

from quantum.plugins.openvswitch.ovs_quantum_plugin import OVSQuantumPluginV2 as OVS_plugin
LOG = logging.getLogger(__name__)

class TestPlugin(db_base_plugin_v2.QuantumDbPluginV2,
                      l3_db.L3_NAT_db_mixin):

    def __init__(self):
        self.ovsint = OVS_plugin()

    def create_network(self, context, network):
        return self.ovsint.create_network(context, network)

    def update_network(self, context, id, network):
        return self.ovsint.update_network(context, id, network)

    def get_network(self, context, id, fields=None):
        return self.ovsint.get_network(context, id, fields)

    def get_networks(self, context, filters=None, fields=None):
        return self.ovsint.get_networks(context, filters,fields)

    def delete_network(self, context, id):
        self.ovsint.delete_network(context, id)

    def create_port(self, context, port):
        return self.ovsint.create_port(context, port)

    def update_port(self, context, id, port):
        return self.ovsint.update_port(context,id, port)

    def get_port(self, context, id, fields=None):
        return self.ovsint.get_port(context,id,fields)

    def get_ports(self, context, filters=None, fields=None):
        return self.ovsint.get_ports(context, filters, fields)

    def delete_port(self, context, id, l3_port_check=True):
        return self.ovsint.delete_port(context, id, l3_port_check)

 .......
My localrc:

disable_service n-net
enable_service q-svc
enable_service q-agt
enable_service q-dhcp
enable_service q-l3
enable_service q-meta
enable_service quantum

Q_PLUGIN=TestPlugin

Question information

Language:
English Edit question
Status:
Answered
For:
neutron Edit question
Assignee:
No assignee Edit question
Last query:
Last reply:
Revision history for this message
dan wendlandt (danwent) said :
#1

this is a 404 error, as the url "/project/" is not something exposed via the quantum API.

Revision history for this message
sudhakar (sudhakaroq) said :
#2

Thanks Dan for reply.
So why is it looking for this "/project/" resource with my plugin. I didn't do any special in my plugin except redirecting the calls to openvswitch plugin. Theoritically, it should work just like openvswitch plugin. Am I missing something basic here?

Revision history for this message
yong sheng gong (gongysh) said :
#3

can u use quantum floatingip-list -v to show us your http message trace?

Revision history for this message
dan wendlandt (danwent) said :
#4

to be honest, i'm not sure. I'd suggest using the 'quantum' client utility along with the --debug flag, so you can see the exact request and response. I'm not very familiar with horizon + quantum.

Revision history for this message
sudhakar (sudhakaroq) said :
#5

Yong,
Here is the console output when I ran your command.

stack@ubuntu:/opt/stack/devstack$ quantum --os-username admin --os-password password --os-tenant-name admin floatingip-list -v
DEBUG: quantumclient.quantum.v2_0.floatingip.ListFloatingIP get_data(Namespace(columns=[], fields=[], filter_specs=[], formatter='table', page_size=None, quote_mode='nonnumeric', request_format='json', show_details=False, sort_dir=[], sort_key=[]))
DEBUG: quantumclient.client
REQ: curl -i http://127.0.0.1:5000/v2.0/tokens -X POST -H "Content-Type: application/json" -H "Accept: application/json" -H "User-Agent: python-quantumclient" -d '{"auth": {"tenantName": "admin", "passwordCredentials": {"username": "admin", "password": "password"}}}'

DEBUG: quantumclient.client RESP:{'date': 'Mon, 04 Mar 2013 04:48:40 GMT', 'vary': 'X-Auth-Token', 'content-length': '6494', 'status': '200', 'content-type': 'application/json'} {"access": {"token": {"issued_at": "2013-03-04T04:48:40.153655", "expires": "2013-03-05T04:48:40Z", "id": "MIILZwYJKoZIhvcNAQcCoIILWDCCC1QCAQExCTAHBgUrDgMCGjCCCkAGCSqGSIb3DQEHAaCCCjEEggoteyJhY2Nlc3MiOiB7InRva2VuIjogeyJpc3N1ZWRfYXQiOiAiMjAxMy0wMy0wNFQwNDo0ODo0MC4xNTM2NTUiLCAiZXhwaXJlcyI6ICIyMDEzLTAzLTA1VDA0OjQ4OjQwWiIsICJpZCI6ICJwbGFjZWhvbGRlciIsICJ0ZW5hbnQiOiB7ImVuYWJsZWQiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiBudWxsLCAibmFtZSI6ICJhZG1pbiIsICJpZCI6ICJmMGMzYzIwZjBkNzg0MzEwOWE4ZDZkNDAyNjljZDRkNSJ9fSwgInNlcnZpY2VDYXRhbG9nIjogW3siZW5kcG9pbnRzIjogW3siYWRtaW5VUkwiOiAiaHR0cDovLzE3Mi4xNi40LjE5MDo4Nzc0L3YyL2YwYzNjMjBmMGQ3ODQzMTA5YThkNmQ0MDI2OWNkNGQ1IiwgInJlZ2lvbiI6ICJSZWdpb25PbmUiLCAiaW50ZXJuYWxVUkwiOiAiaHR0cDovLzE3Mi4xNi40LjE5MDo4Nzc0L3YyL2YwYzNjMjBmMGQ3ODQzMTA5YThkNmQ0MDI2OWNkNGQ1IiwgImlkIjogImM0M2QxNDY5MTgyZjQyNDU5OTM5OWI5ZWIzNjIzZDc5IiwgInB1YmxpY1VSTCI6ICJodHRwOi8vMTcyLjE2LjQuMTkwOjg3NzQvdjIvZjBjM2MyMGYwZDc4NDMxMDlhOGQ2ZDQwMjY5Y2Q0ZDUifV0sICJlbmRwb2ludHNfbGlua3MiOiBbXSwgInR5cGUiOiAiY29tcHV0ZSIsICJuYW1lIjogIm5vdmEifSwgeyJlbmRwb2ludHMiOiBbeyJhZG1pblVSTCI6ICJodHRwOi8vMTcyLjE2LjQuMTkwOjk2OTYvIiwgInJlZ2lvbiI6ICJSZWdpb25PbmUiLCAiaW50ZXJuYWxVUkwiOiAiaHR0cDovLzE3Mi4xNi40LjE5MDo5Njk2LyIsICJpZCI6ICIwMDRkY2IxMjNhYTc0MWIzOTI3ZmU1OTZiMTBlOTIwZSIsICJwdWJsaWNVUkwiOiAiaHR0cDovLzE3Mi4xNi40LjE5MDo5Njk2LyJ9XSwgImVuZHBvaW50c19saW5rcyI6IFtdLCAidHlwZSI6ICJuZXR3b3JrIiwgIm5hbWUiOiAicXVhbnR1bSJ9LCB7ImVuZHBvaW50cyI6IFt7ImFkbWluVVJMIjogImh0dHA6Ly8xNzIuMTYuNC4xOTA6MzMzMyIsICJyZWdpb24iOiAiUmVnaW9uT25lIiwgImludGVybmFsVVJMIjogImh0dHA6Ly8xNzIuMTYuNC4xOTA6MzMzMyIsICJpZCI6ICI1MjQxMWFkZWM4Njc0N2M3YWY0OTRjYmE0MDMwMWIwOCIsICJwdWJsaWNVUkwiOiAiaHR0cDovLzE3Mi4xNi40LjE5MDozMzMzIn1dLCAiZW5kcG9pbnRzX2xpbmtzIjogW10sICJ0eXBlIjogInMzIiwgIm5hbWUiOiAiczMifSwgeyJlbmRwb2ludHMiOiBbeyJhZG1pblVSTCI6ICJodHRwOi8vMTcyLjE2LjQuMTkwOjkyOTIiLCAicmVnaW9uIjogIlJlZ2lvbk9uZSIsICJpbnRlcm5hbFVSTCI6ICJodHRwOi8vMTcyLjE2LjQuMTkwOjkyOTIiLCAiaWQiOiAiMTc0MmM4NmJkMDU3NDE3ZWJhNmUzZTNlY2ZlYjc3ZjEiLCAicHVibGljVVJMIjogImh0dHA6Ly8xNzIuMTYuNC4xOTA6OTI5MiJ9XSwgImVuZHBvaW50c19saW5rcyI6IFtdLCAidHlwZSI6ICJpbWFnZSIsICJuYW1lIjogImdsYW5jZSJ9LCB7ImVuZHBvaW50cyI6IFt7ImFkbWluVVJMIjogImh0dHA6Ly8xNzIuMTYuNC4xOTA6ODc3Ni92MS9mMGMzYzIwZjBkNzg0MzEwOWE4ZDZkNDAyNjljZDRkNSIsICJyZWdpb24iOiAiUmVnaW9uT25lIiwgImludGVybmFsVVJMIjogImh0dHA6Ly8xNzIuMTYuNC4xOTA6ODc3Ni92MS9mMGMzYzIwZjBkNzg0MzEwOWE4ZDZkNDAyNjljZDRkNSIsICJpZCI6ICIxMGQyOTYyMWI5OGU0Y2FlYmY4OTRmYWEzMGQ4YjViNyIsICJwdWJsaWNVUkwiOiAiaHR0cDovLzE3Mi4xNi40LjE5MDo4Nzc2L3YxL2YwYzNjMjBmMGQ3ODQzMTA5YThkNmQ0MDI2OWNkNGQ1In1dLCAiZW5kcG9pbnRzX2xpbmtzIjogW10sICJ0eXBlIjogInZvbHVtZSIsICJuYW1lIjogImNpbmRlciJ9LCB7ImVuZHBvaW50cyI6IFt7ImFkbWluVVJMIjogImh0dHA6Ly8xNzIuMTYuNC4xOTA6ODc3My9zZXJ2aWNlcy9BZG1pbiIsICJyZWdpb24iOiAiUmVnaW9uT25lIiwgImludGVybmFsVVJMIjogImh0dHA6Ly8xNzIuMTYuNC4xOTA6ODc3My9zZXJ2aWNlcy9DbG91ZCIsICJpZCI6ICIzNDQ1NDc3MjZjMzI0OWQzODIyMWNjM2YyYjllNjc2MyIsICJwdWJsaWNVUkwiOiAiaHR0cDovLzE3Mi4xNi40LjE5MDo4NzczL3NlcnZpY2VzL0Nsb3VkIn1dLCAiZW5kcG9pbnRzX2xpbmtzIjogW10sICJ0eXBlIjogImVjMiIsICJuYW1lIjogImVjMiJ9LCB7ImVuZHBvaW50cyI6IFt7ImFkbWluVVJMIjogImh0dHA6Ly8xNzIuMTYuNC4xOTA6MzUzNTcvdjIuMCIsICJyZWdpb24iOiAiUmVnaW9uT25lIiwgImludGVybmFsVVJMIjogImh0dHA6Ly8xNzIuMTYuNC4xOTA6NTAwMC92Mi4wIiwgImlkIjogIjIzMmFlMjQyNTEyMzRhMTFiNjBjODc0Mzc0MTc2Yzk0IiwgInB1YmxpY1VSTCI6ICJodHRwOi8vMTcyLjE2LjQuMTkwOjUwMDAvdjIuMCJ9XSwgImVuZHBvaW50c19saW5rcyI6IFtdLCAidHlwZSI6ICJpZGVudGl0eSIsICJuYW1lIjogImtleXN0b25lIn1dLCAidXNlciI6IHsidXNlcm5hbWUiOiAiYWRtaW4iLCAicm9sZXNfbGlua3MiOiBbXSwgImlkIjogIjc2NzA4YTUwNzU5YzQzNzFhM2QxZTYwNmQ3NzQxYjM4IiwgInJvbGVzIjogW3sibmFtZSI6ICJhZG1pbiJ9XSwgIm5hbWUiOiAiYWRtaW4ifSwgIm1ldGFkYXRhIjogeyJpc19hZG1pbiI6IDAsICJyb2xlcyI6IFsiMDA2NjAxZDdjMDBiNDFlMThmMTE5MmFiYjlmOTM2YzQiXX19fTGB-zCB-AIBATBcMFcxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIEwVVbnNldDEOMAwGA1UEBxMFVW5zZXQxDjAMBgNVBAoTBVVuc2V0MRgwFgYDVQQDEw93d3cuZXhhbXBsZS5jb20CAQEwBwYFKw4DAhowDQYJKoZIhvcNAQEBBQAEgYCeWoMmTSgIGXY0bFbzCIa3X4pp8Zgh3KLL0bya1+RbbQG+a7JBeq7boNK3aSk37mwsJRRtKmxznJPD4ZMXMfDXABhhshzJQ1Hffefgq4B2c69B595cMMVJk3H3pCmlDrNRb6pte4sxrr8EVHP3kXDyIZD2-4PqEGKuH3Sq6aDwqQ==", "tenant": {"enabled": true, "description": null, "name": "admin", "id": "f0c3c20f0d7843109a8d6d40269cd4d5"}}, "serviceCatalog": [{"endpoints": [{"adminURL": "http://172.16.4.190:8774/v2/f0c3c20f0d7843109a8d6d40269cd4d5", "region": "RegionOne", "internalURL": "http://172.16.4.190:8774/v2/f0c3c20f0d7843109a8d6d40269cd4d5", "id": "c43d1469182f424599399b9eb3623d79", "publicURL": "http://172.16.4.190:8774/v2/f0c3c20f0d7843109a8d6d40269cd4d5"}], "endpoints_links": [], "type": "compute", "name": "nova"}, {"endpoints": [{"adminURL": "http://172.16.4.190:9696/", "region": "RegionOne", "internalURL": "http://172.16.4.190:9696/", "id": "004dcb123aa741b3927fe596b10e920e", "publicURL": "http://172.16.4.190:9696/"}], "endpoints_links": [], "type": "network", "name": "quantum"}, {"endpoints": [{"adminURL": "http://172.16.4.190:3333", "region": "RegionOne", "internalURL": "http://172.16.4.190:3333", "id": "52411adec86747c7af494cba40301b08", "publicURL": "http://172.16.4.190:3333"}], "endpoints_links": [], "type": "s3", "name": "s3"}, {"endpoints": [{"adminURL": "http://172.16.4.190:9292", "region": "RegionOne", "internalURL": "http://172.16.4.190:9292", "id": "1742c86bd057417eba6e3e3ecfeb77f1", "publicURL": "http://172.16.4.190:9292"}], "endpoints_links": [], "type": "image", "name": "glance"}, {"endpoints": [{"adminURL": "http://172.16.4.190:8776/v1/f0c3c20f0d7843109a8d6d40269cd4d5", "region": "RegionOne", "internalURL": "http://172.16.4.190:8776/v1/f0c3c20f0d7843109a8d6d40269cd4d5", "id": "10d29621b98e4caebf894faa30d8b5b7", "publicURL": "http://172.16.4.190:8776/v1/f0c3c20f0d7843109a8d6d40269cd4d5"}], "endpoints_links": [], "type": "volume", "name": "cinder"}, {"endpoints": [{"adminURL": "http://172.16.4.190:8773/services/Admin", "region": "RegionOne", "internalURL": "http://172.16.4.190:8773/services/Cloud", "id": "344547726c3249d38221cc3f2b9e6763", "publicURL": "http://172.16.4.190:8773/services/Cloud"}], "endpoints_links": [], "type": "ec2", "name": "ec2"}, {"endpoints": [{"adminURL": "http://172.16.4.190:35357/v2.0", "region": "RegionOne", "internalURL": "http://172.16.4.190:5000/v2.0", "id": "232ae24251234a11b60c874374176c94", "publicURL": "http://172.16.4.190:5000/v2.0"}], "endpoints_links": [], "type": "identity", "name": "keystone"}], "user": {"username": "admin", "roles_links": [], "id": "76708a50759c4371a3d1e606d7741b38", "roles": [{"name": "admin"}], "name": "admin"}, "metadata": {"is_admin": 0, "roles": ["006601d7c00b41e18f1192abb9f936c4"]}}}

DEBUG: quantumclient.client
REQ: curl -i http://172.16.4.190:9696/v2.0/floatingips.json -X GET -H "User-Agent: python-quantumclient" -H "Content-Type: application/json" -H "Accept: application/json" -H "X-Auth-Token: MIILZwYJKoZIhvcNAQcCoIILWDCCC1QCAQExCTAHBgUrDgMCGjCCCkAGCSqGSIb3DQEHAaCCCjEEggoteyJhY2Nlc3MiOiB7InRva2VuIjogeyJpc3N1ZWRfYXQiOiAiMjAxMy0wMy0wNFQwNDo0ODo0MC4xNTM2NTUiLCAiZXhwaXJlcyI6ICIyMDEzLTAzLTA1VDA0OjQ4OjQwWiIsICJpZCI6ICJwbGFjZWhvbGRlciIsICJ0ZW5hbnQiOiB7ImVuYWJsZWQiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiBudWxsLCAibmFtZSI6ICJhZG1pbiIsICJpZCI6ICJmMGMzYzIwZjBkNzg0MzEwOWE4ZDZkNDAyNjljZDRkNSJ9fSwgInNlcnZpY2VDYXRhbG9nIjogW3siZW5kcG9pbnRzIjogW3siYWRtaW5VUkwiOiAiaHR0cDovLzE3Mi4xNi40LjE5MDo4Nzc0L3YyL2YwYzNjMjBmMGQ3ODQzMTA5YThkNmQ0MDI2OWNkNGQ1IiwgInJlZ2lvbiI6ICJSZWdpb25PbmUiLCAiaW50ZXJuYWxVUkwiOiAiaHR0cDovLzE3Mi4xNi40LjE5MDo4Nzc0L3YyL2YwYzNjMjBmMGQ3ODQzMTA5YThkNmQ0MDI2OWNkNGQ1IiwgImlkIjogImM0M2QxNDY5MTgyZjQyNDU5OTM5OWI5ZWIzNjIzZDc5IiwgInB1YmxpY1VSTCI6ICJodHRwOi8vMTcyLjE2LjQuMTkwOjg3NzQvdjIvZjBjM2MyMGYwZDc4NDMxMDlhOGQ2ZDQwMjY5Y2Q0ZDUifV0sICJlbmRwb2ludHNfbGlua3MiOiBbXSwgInR5cGUiOiAiY29tcHV0ZSIsICJuYW1lIjogIm5vdmEifSwgeyJlbmRwb2ludHMiOiBbeyJhZG1pblVSTCI6ICJodHRwOi8vMTcyLjE2LjQuMTkwOjk2OTYvIiwgInJlZ2lvbiI6ICJSZWdpb25PbmUiLCAiaW50ZXJuYWxVUkwiOiAiaHR0cDovLzE3Mi4xNi40LjE5MDo5Njk2LyIsICJpZCI6ICIwMDRkY2IxMjNhYTc0MWIzOTI3ZmU1OTZiMTBlOTIwZSIsICJwdWJsaWNVUkwiOiAiaHR0cDovLzE3Mi4xNi40LjE5MDo5Njk2LyJ9XSwgImVuZHBvaW50c19saW5rcyI6IFtdLCAidHlwZSI6ICJuZXR3b3JrIiwgIm5hbWUiOiAicXVhbnR1bSJ9LCB7ImVuZHBvaW50cyI6IFt7ImFkbWluVVJMIjogImh0dHA6Ly8xNzIuMTYuNC4xOTA6MzMzMyIsICJyZWdpb24iOiAiUmVnaW9uT25lIiwgImludGVybmFsVVJMIjogImh0dHA6Ly8xNzIuMTYuNC4xOTA6MzMzMyIsICJpZCI6ICI1MjQxMWFkZWM4Njc0N2M3YWY0OTRjYmE0MDMwMWIwOCIsICJwdWJsaWNVUkwiOiAiaHR0cDovLzE3Mi4xNi40LjE5MDozMzMzIn1dLCAiZW5kcG9pbnRzX2xpbmtzIjogW10sICJ0eXBlIjogInMzIiwgIm5hbWUiOiAiczMifSwgeyJlbmRwb2ludHMiOiBbeyJhZG1pblVSTCI6ICJodHRwOi8vMTcyLjE2LjQuMTkwOjkyOTIiLCAicmVnaW9uIjogIlJlZ2lvbk9uZSIsICJpbnRlcm5hbFVSTCI6ICJodHRwOi8vMTcyLjE2LjQuMTkwOjkyOTIiLCAiaWQiOiAiMTc0MmM4NmJkMDU3NDE3ZWJhNmUzZTNlY2ZlYjc3ZjEiLCAicHVibGljVVJMIjogImh0dHA6Ly8xNzIuMTYuNC4xOTA6OTI5MiJ9XSwgImVuZHBvaW50c19saW5rcyI6IFtdLCAidHlwZSI6ICJpbWFnZSIsICJuYW1lIjogImdsYW5jZSJ9LCB7ImVuZHBvaW50cyI6IFt7ImFkbWluVVJMIjogImh0dHA6Ly8xNzIuMTYuNC4xOTA6ODc3Ni92MS9mMGMzYzIwZjBkNzg0MzEwOWE4ZDZkNDAyNjljZDRkNSIsICJyZWdpb24iOiAiUmVnaW9uT25lIiwgImludGVybmFsVVJMIjogImh0dHA6Ly8xNzIuMTYuNC4xOTA6ODc3Ni92MS9mMGMzYzIwZjBkNzg0MzEwOWE4ZDZkNDAyNjljZDRkNSIsICJpZCI6ICIxMGQyOTYyMWI5OGU0Y2FlYmY4OTRmYWEzMGQ4YjViNyIsICJwdWJsaWNVUkwiOiAiaHR0cDovLzE3Mi4xNi40LjE5MDo4Nzc2L3YxL2YwYzNjMjBmMGQ3ODQzMTA5YThkNmQ0MDI2OWNkNGQ1In1dLCAiZW5kcG9pbnRzX2xpbmtzIjogW10sICJ0eXBlIjogInZvbHVtZSIsICJuYW1lIjogImNpbmRlciJ9LCB7ImVuZHBvaW50cyI6IFt7ImFkbWluVVJMIjogImh0dHA6Ly8xNzIuMTYuNC4xOTA6ODc3My9zZXJ2aWNlcy9BZG1pbiIsICJyZWdpb24iOiAiUmVnaW9uT25lIiwgImludGVybmFsVVJMIjogImh0dHA6Ly8xNzIuMTYuNC4xOTA6ODc3My9zZXJ2aWNlcy9DbG91ZCIsICJpZCI6ICIzNDQ1NDc3MjZjMzI0OWQzODIyMWNjM2YyYjllNjc2MyIsICJwdWJsaWNVUkwiOiAiaHR0cDovLzE3Mi4xNi40LjE5MDo4NzczL3NlcnZpY2VzL0Nsb3VkIn1dLCAiZW5kcG9pbnRzX2xpbmtzIjogW10sICJ0eXBlIjogImVjMiIsICJuYW1lIjogImVjMiJ9LCB7ImVuZHBvaW50cyI6IFt7ImFkbWluVVJMIjogImh0dHA6Ly8xNzIuMTYuNC4xOTA6MzUzNTcvdjIuMCIsICJyZWdpb24iOiAiUmVnaW9uT25lIiwgImludGVybmFsVVJMIjogImh0dHA6Ly8xNzIuMTYuNC4xOTA6NTAwMC92Mi4wIiwgImlkIjogIjIzMmFlMjQyNTEyMzRhMTFiNjBjODc0Mzc0MTc2Yzk0IiwgInB1YmxpY1VSTCI6ICJodHRwOi8vMTcyLjE2LjQuMTkwOjUwMDAvdjIuMCJ9XSwgImVuZHBvaW50c19saW5rcyI6IFtdLCAidHlwZSI6ICJpZGVudGl0eSIsICJuYW1lIjogImtleXN0b25lIn1dLCAidXNlciI6IHsidXNlcm5hbWUiOiAiYWRtaW4iLCAicm9sZXNfbGlua3MiOiBbXSwgImlkIjogIjc2NzA4YTUwNzU5YzQzNzFhM2QxZTYwNmQ3NzQxYjM4IiwgInJvbGVzIjogW3sibmFtZSI6ICJhZG1pbiJ9XSwgIm5hbWUiOiAiYWRtaW4ifSwgIm1ldGFkYXRhIjogeyJpc19hZG1pbiI6IDAsICJyb2xlcyI6IFsiMDA2NjAxZDdjMDBiNDFlMThmMTE5MmFiYjlmOTM2YzQiXX19fTGB-zCB-AIBATBcMFcxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIEwVVbnNldDEOMAwGA1UEBxMFVW5zZXQxDjAMBgNVBAoTBVVuc2V0MRgwFgYDVQQDEw93d3cuZXhhbXBsZS5jb20CAQEwBwYFKw4DAhowDQYJKoZIhvcNAQEBBQAEgYCeWoMmTSgIGXY0bFbzCIa3X4pp8Zgh3KLL0bya1+RbbQG+a7JBeq7boNK3aSk37mwsJRRtKmxznJPD4ZMXMfDXABhhshzJQ1Hffefgq4B2c69B595cMMVJk3H3pCmlDrNRb6pte4sxrr8EVHP3kXDyIZD2-4PqEGKuH3Sq6aDwqQ=="

DEBUG: quantumclient.client RESP:{'date': 'Mon, 04 Mar 2013 04:48:40 GMT', 'status': '404', 'content-length': '52', 'content-type': 'text/plain; charset=UTF-8'} 404 Not Found

The resource could not be found.

DEBUG: quantumclient.v2_0.client Error message: 404 Not Found

The resource could not be found.

ERROR: quantumclient.shell 404 Not Found

The resource could not be found.

DEBUG: quantumclient.shell clean_up ListFloatingIP
DEBUG: quantumclient.shell got an error: 404 Not Found

The resource could not be found.

Revision history for this message
yong sheng gong (gongysh) said :
#6

you can use 'quantum ext-list' to show if the L3 extension is supported by your plugin.

Revision history for this message
yong sheng gong (gongysh) said :
#7

and enable debug on the server side to see the URL mapping
in /etc/quantum/quantum.conf:
debug=True

Revision history for this message
sudhakar (sudhakaroq) said :
#8

I didn't add any extension related stuff in my plugin. I thought underlying openvswitch plugin will take care of all those!
After adding 'supported_extension_aliases' in my plugin, this 'resource not found' problem is gone. Now CreateNetwork call is failing! I guess, simply passing the calls from my plugin to openvswitch plugin is not going to work.
Thank you Yong and Dan for your help.

Can you help with this problem?

Provide an answer of your own, or ask sudhakar for more information if necessary.

To post a message you must log in.