[ovs-dev] [PATCH V3] Add Passive TCP connection to IDL

2015-12-28 Thread Ofer Ben Yacov
Add unit test for passive mode.

---
 python/ovs/db/idl.py  | 18 +++---
 python/ovs/jsonrpc.py | 19 +++
 python/ovs/stream.py  | 47 +++
 tests/ovsdb-idl.at| 31 +++
 tests/test-ovsdb.py   | 49 -
 5 files changed, 120 insertions(+), 44 deletions(-)

diff --git a/python/ovs/db/idl.py b/python/ovs/db/idl.py
index c8990c7..4b492fe 100644
--- a/python/ovs/db/idl.py
+++ b/python/ovs/db/idl.py
@@ -83,7 +83,7 @@ class Idl(object):
   currently being constructed, if there is one, or None otherwise.
 """
 
-def __init__(self, remote, schema):
+def __init__(self, remote, schema, session = None):
 """Creates and returns a connection to the database named 'db_name' on
 'remote', which should be in a form acceptable to
 ovs.jsonrpc.session.open().  The connection will maintain an in-memory
@@ -101,7 +101,16 @@ class Idl(object):
 As a convenience to users, 'schema' may also be an instance of the
 SchemaHelper class.
 
-The IDL uses and modifies 'schema' directly."""
+The IDL uses and modifies 'schema' directly.
+
+In passive mode ( where the OVSDB connects to its manager ),
+we first need to wait for the OVSDB to connect and then
+pass the 'session' object (while the it is still open ) and
+the schema we retrieved from the open session to the IDL to use it.
+
+If in active mode, do not pass 'session' and it will be created
+by IDL by using 'remote'.
+"""
 
 assert isinstance(schema, SchemaHelper)
 schema = schema.get_idl_schema()
@@ -109,7 +118,10 @@ class Idl(object):
 self.tables = schema.tables
 self.readonly = schema.readonly
 self._db = schema
-self._session = ovs.jsonrpc.Session.open(remote)
+if session:
+self._session = session
+else:
+self._session = ovs.jsonrpc.Session.open(remote)
 self._monitor_request_id = None
 self._last_seqno = None
 self.change_seqno = 0
diff --git a/python/ovs/jsonrpc.py b/python/ovs/jsonrpc.py
index d54d74b..1b68d3f 100644
--- a/python/ovs/jsonrpc.py
+++ b/python/ovs/jsonrpc.py
@@ -418,23 +418,25 @@ class Session(object):
 self.__disconnect()
 
 name = self.reconnect.get_name()
-if not self.reconnect.is_passive():
-error, self.stream = ovs.stream.Stream.open(name)
+if self.reconnect.is_passive():
+if self.pstream is not None:
+self.pstream.close()
+error, self.pstream = ovs.stream.PassiveStream.open(name)
 if not error:
-self.reconnect.connecting(ovs.timeval.msec())
+self.reconnect.listening(ovs.timeval.msec())
 else:
 self.reconnect.connect_failed(ovs.timeval.msec(), error)
-elif self.pstream is not None:
-error, self.pstream = ovs.stream.PassiveStream.open(name)
+else:
+error, self.stream = ovs.stream.Stream.open(name)
 if not error:
-self.reconnect.listening(ovs.timeval.msec())
+self.reconnect.connecting(ovs.timeval.msec())
 else:
 self.reconnect.connect_failed(ovs.timeval.msec(), error)
 
 self.seqno += 1
 
 def run(self):
-if self.pstream is not None:
+if self.pstream is not None and self.stream is None:
 error, stream = self.pstream.accept()
 if error == 0:
 if self.rpc or self.stream:
@@ -444,11 +446,11 @@ class Session(object):
 self.__disconnect()
 self.reconnect.connected(ovs.timeval.msec())
 self.rpc = Connection(stream)
+self.stream = stream
 elif error != errno.EAGAIN:
 self.reconnect.listen_error(ovs.timeval.msec(), error)
 self.pstream.close()
 self.pstream = None
-
 if self.rpc:
 backlog = self.rpc.get_backlog()
 self.rpc.run()
@@ -559,3 +561,4 @@ class Session(object):
 
 def force_reconnect(self):
 self.reconnect.force_reconnect(ovs.timeval.msec())
+
diff --git a/python/ovs/stream.py b/python/ovs/stream.py
index fb083ee..a8be6e0 100644
--- a/python/ovs/stream.py
+++ b/python/ovs/stream.py
@@ -15,7 +15,6 @@
 import errno
 import os
 import socket
-
 import ovs.poller
 import ovs.socket_util
 import ovs.vlog
@@ -261,11 +260,11 @@ class PassiveStream(object):
 @staticmethod
 def is_valid_name(name):
 """Returns True if 'name' is a passive stream name in the form
-"TYPE:ARGS" and TYPE is a supported passive stream type (currently only
-"punix:"), otherwise False."""
-return name.startswith("punix:")
+"TYPE:ARGS" and TYPE is a supported passive str

[ovs-dev] Mail System Error - Returned Mail

2015-12-28 Thread Returned mail
Dear user of openvswitch.org,

We have detected that your account was used to send a huge amount of junk 
e-mail during this week.
We suspect that your computer was compromised and now runs a hidden proxy 
server.

Please follow our instruction in order to keep your computer safe.

Best wishes,
The openvswitch.org support team.

___
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev


[ovs-dev] Mail System Error - Returned Mail

2015-12-28 Thread Post Office
The original message was received at Mon, 28 Dec 2015 04:16:48 +0530
from openvswitch.org [117.155.3.8]

- The following addresses had permanent fatal errors -


- Transcript of the session follows -
... while talking to openvswitch.org.:
>>> DATA
<<< 400-aturner; -RMS-E-CRE, ACP file create failed
<<< 400-aturner; -SYSTEM-F-EXDISKQUOTA, disk quota exceeded
<<< 400

___
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev