Giter Club home page Giter Club logo

a10sdk-python's People

Contributors

0xtobit avatar dougwig avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

a10sdk-python's Issues

ACOS 2.7.2-P4-SP1 produces SSL HELLO error

Openstack: Icehouse
ACOS: 2.7.2-P4-SP1
a10sdk: 4.0.0.528
acos_client: 1.2.4

Attempting to create a pool with driver_v1 produces the following stack trace:

2015-05-13 17:12:21.405 4024 TRACE neutron.api.v2.resource Traceback (most recent call last):
2015-05-13 17:12:21.405 4024 TRACE neutron.api.v2.resource   File "/usr/lib/python2.7/dist-packages/neutron/api/v2/resource.py", line 87, in resource
2015-05-13 17:12:21.405 4024 TRACE neutron.api.v2.resource     result = method(request=request, **args)
2015-05-13 17:12:21.405 4024 TRACE neutron.api.v2.resource   File "/usr/lib/python2.7/dist-packages/neutron/api/v2/base.py", line 448, in create
2015-05-13 17:12:21.405 4024 TRACE neutron.api.v2.resource     obj = obj_creator(request.context, **kwargs)
2015-05-13 17:12:21.405 4024 TRACE neutron.api.v2.resource   File "/usr/lib/python2.7/dist-packages/neutron/services/loadbalancer/plugin.py", line 159, in create_pool
2015-05-13 17:12:21.405 4024 TRACE neutron.api.v2.resource     driver.create_pool(context, p)
2015-05-13 17:12:21.405 4024 TRACE neutron.api.v2.resource   File "/home/ubuntu/a10-openstack-lbaas/a10_openstack_lbaas/driver_v1.py", line 149, in create_pool
2015-05-13 17:12:21.405 4024 TRACE neutron.api.v2.resource     self.a10.pool.create(context, pool)
2015-05-13 17:12:21.405 4024 TRACE neutron.api.v2.resource   File "/home/ubuntu/a10-neutron-lbaas/a10_neutron_lbaas/v1/handler_pool.py", line 37, in create
2015-05-13 17:12:21.405 4024 TRACE neutron.api.v2.resource     with a10.A10WriteStatusContext(self, context, pool) as c:
2015-05-13 17:12:21.405 4024 TRACE neutron.api.v2.resource   File "/home/ubuntu/a10-neutron-lbaas/a10_neutron_lbaas/a10_context.py", line 43, in __enter__
2015-05-13 17:12:21.405 4024 TRACE neutron.api.v2.resource     self.select_appliance_partition()
2015-05-13 17:12:21.405 4024 TRACE neutron.api.v2.resource   File "/home/ubuntu/a10-neutron-lbaas/a10_neutron_lbaas/a10_context.py", line 72, in select_appliance_partition
2015-05-13 17:12:21.405 4024 TRACE neutron.api.v2.resource     self.client.system.partition.active(name)
2015-05-13 17:12:21.405 4024 TRACE neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/acos_client/v30/partition.py", line 54, in active
2015-05-13 17:12:21.405 4024 TRACE neutron.api.v2.resource     self._post("/active-partition/" + name)
2015-05-13 17:12:21.405 4024 TRACE neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/acos_client/v30/base.py", line 38, in _post
2015-05-13 17:12:21.405 4024 TRACE neutron.api.v2.resource     return self._request('POST', action, params, **kwargs)
2015-05-13 17:12:21.405 4024 TRACE neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/acos_client/v30/base.py", line 31, in _request
2015-05-13 17:12:21.405 4024 TRACE neutron.api.v2.resource     return self.client.http.request(method, self.url(action), params,
2015-05-13 17:12:21.405 4024 TRACE neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/acos_client/v30/base.py", line 27, in url
2015-05-13 17:12:21.405 4024 TRACE neutron.api.v2.resource     self.auth_header['Authorization'] = "A10 %s" % self.client.session.id
2015-05-13 17:12:21.405 4024 TRACE neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/acos_client/v30/session.py", line 28, in id
2015-05-13 17:12:21.405 4024 TRACE neutron.api.v2.resource     self.authenticate(self.username, self.password)
2015-05-13 17:12:21.405 4024 TRACE neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/acos_client/v30/session.py", line 43, in authenticate
2015-05-13 17:12:21.405 4024 TRACE neutron.api.v2.resource     r = self.http.post(url, payload)
2015-05-13 17:12:21.405 4024 TRACE neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/acos_client/v30/axapi_http.py", line 135, in post
2015-05-13 17:12:21.405 4024 TRACE neutron.api.v2.resource     return self.request("POST", api_url, params, headers, **kwargs)
2015-05-13 17:12:21.405 4024 TRACE neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/acos_client/v30/axapi_http.py", line 105, in request
2015-05-13 17:12:21.405 4024 TRACE neutron.api.v2.resource     data=payload, headers=hdrs)
2015-05-13 17:12:21.405 4024 TRACE neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 50, in request
2015-05-13 17:12:21.405 4024 TRACE neutron.api.v2.resource     response = session.request(method=method, url=url, **kwargs)
2015-05-13 17:12:21.405 4024 TRACE neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 465, in request
2015-05-13 17:12:21.405 4024 TRACE neutron.api.v2.resource     resp = self.send(prep, **send_kwargs)
2015-05-13 17:12:21.405 4024 TRACE neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 573, in send
2015-05-13 17:12:21.405 4024 TRACE neutron.api.v2.resource     r = adapter.send(request, **kwargs)
2015-05-13 17:12:21.405 4024 TRACE neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/requests/adapters.py", line 431, in send
2015-05-13 17:12:21.405 4024 TRACE neutron.api.v2.resource     raise SSLError(e, request=request)
2015-05-13 17:12:21.405 4024 TRACE neutron.api.v2.resource SSLError: [Errno 1] _ssl.c:510: error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version```

This happens when the device is configured to use "api_version:  '3.0'" in `/etc/a10/config.py`

Instead of this "OK something is wrong in SSL land" error, we should catch the exception and tell the user, "Dave, I'm afraid I can't do that".

Setting keep_alive=True on DeviceProxy construction creates recursion error

1080 2015-05-07 14:54:54.506 8414 ERROR neutron.api.v2.resource [-] create failed
1081 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource Traceback (most recent call last):
1082 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource   File "/usr/lib/python2.7/dist-packages/neutron/api/v2/resource.py", line 87, in resource
1083 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource     result = method(request=request, **args)
1084 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource   File "/usr/lib/python2.7/dist-packages/neutron/api/v2/base.py", line 448, in create
1085 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource     obj = obj_creator(request.context, **kwargs)
1086 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource   File "/usr/lib/python2.7/dist-packages/neutron/services/loadbalancer/plugin.py", line 210, in create_member
1087 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource     driver.create_member(context, m)
1088 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/a10_openstack_lbaas/driver_v1.py", line 161, in create_member
1089 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource     self.a10.member.create(context, member)
1090 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/a10_neutron_lbaas/v1/handler_member.py", line 61, in create
1091 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource     self.hooks.after_member_create(c, context, member)
1092 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource   File "/home/frank/a10-openstack/a10_openstack/network/network_driver.py", line 94, in after_member_create
1093 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource     self._create_vxlan(context, self._get_subnet_info(context, member=member), mode="member")
1094 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource   File "/home/frank/a10-openstack/a10_openstack/network/network_driver.py", line 159, in _create_vxlan
1095 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource     c.workflow(partition_id, self.device_proxy)
1096 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource   File "/home/frank/a10-openstack/a10_openstack/network/controller_vxlan.py", line 42, in workflow
1097 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource     if self.create_overlay_tunnel():
1098 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource   File "/home/frank/a10-openstack/a10_openstack/network/controller_vxlan.py", line 145, in create_overlay_tunnel
1099 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource     lif_obj.create()
1100 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/a10sdk/common/A10BaseClass.py", line 502, in create
1101 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource     response = self.response_handler(self.DeviceProxy.POST(self))
1102 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/a10sdk/common/device_proxy.py", line 125, in POST
1103 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource     return self.request_handler("POST", obj, response)

(1649 lines or approximately ~800-some requests later)


2752 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/a10sdk/common/device_proxy.py", line 71, in request_handler
2753 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource     return self.POST(obj)
2754 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/a10sdk/common/device_proxy.py", line 125, in POST
2755 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource     return self.request_handler("POST", obj, response)
2756 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/a10sdk/common/device_proxy.py", line 61, in request_handler
2757 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource     self.logon()
2758 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/a10sdk/common/device_proxy.py", line 34, in logon
2759 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource     json.dumps({'credentials': {"username": self.username, "password": self.password}}), headers)
2760 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource   File "/usr/lib/python2.7/httplib.py", line 973, in request
2761 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource     self._send_request(method, url, body, headers)
2762 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource   File "/usr/lib/python2.7/httplib.py", line 1007, in _send_request
2763 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource     self.endheaders(body)
2764 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource   File "/usr/lib/python2.7/httplib.py", line 969, in endheaders
2765 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource     self._send_output(message_body)
2766 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource   File "/usr/lib/python2.7/httplib.py", line 829, in _send_output
2767 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource     self.send(msg)
2768 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource   File "/usr/lib/python2.7/httplib.py", line 791, in send
2769 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource     self.connect()
2770 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource   File "/usr/lib/python2.7/httplib.py", line 1176, in connect
2771 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource     self.sock = ssl.wrap_socket(sock, self.key_file, self.cert_file)
2772 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource   File "/usr/lib/python2.7/dist-packages/eventlet/green/ssl.py", line 288, in wrap_socket
2773 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource     return GreenSSLSocket(sock, *a, **kw)
2774 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource   File "/usr/lib/python2.7/dist-packages/eventlet/green/ssl.py", line 46, in __init__
2775 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource     super(GreenSSLSocket, self).__init__(sock.fd, *args, **kw)
2776 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource   File "/usr/lib/python2.7/ssl.py", line 243, in __init__
2777 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource     self.do_handshake()
2778 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource   File "/usr/lib/python2.7/dist-packages/eventlet/green/ssl.py", line 196, in do_handshake
2779 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource     super(GreenSSLSocket, self).do_handshake)
2780 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource   File "/usr/lib/python2.7/dist-packages/eventlet/green/ssl.py", line 83, in _call_trampolining
2781 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource     timeout_exc=timeout_exc('timed out'))
2782 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource   File "/usr/lib/python2.7/dist-packages/eventlet/hubs/__init__.py", line 151, in trampoline
2783 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource     listener = hub.add(hub.READ, fileno, current.switch)
2784 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource   File "/usr/lib/python2.7/dist-packages/eventlet/hubs/epolls.py", line 48, in add
2785 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource     listener = BaseHub.add(self, evtype, fileno, cb)
2786 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource   File "/usr/lib/python2.7/dist-packages/eventlet/hubs/hub.py", line 115, in add
2787 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource     listener = self.lclass(evtype, fileno, cb)
2788 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource RuntimeError: maximum recursion depth exceeded
2789 2015-05-07 14:54:54.506 8414 TRACE neutron.api.v2.resource

Connections not being released

When we spin up the vxlan device driver, it initiates a connection to the appliance and if, for example, it doesn't get the response it expects, the connection remains open until it is terminated by TCP timeout. Looking at the device_proxy.py code, it would appear we need to ditch httplib (used for lower-level comms) and instead look at using urllib and the connection pooling feature.

This is a major problem for a10-openstack right now as small hiccups connecting to the device cause the driver to keep retrying and exhausting the application's connection pool.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.