Nomralize component start()/stop()

Also fixed the /schema swagger/rest entry. It did not work
because the 3rdparty protobuf_to_dict library cannot handle
Map fields. Changed the two map fields to a single list
entry.

Change-Id: Ib25a528701b67d58d32451687724c8247da6efa5
diff --git a/ofagent/agent.py b/ofagent/agent.py
index ab1b868..cabcc6c 100644
--- a/ofagent/agent.py
+++ b/ofagent/agent.py
@@ -55,13 +55,22 @@
     def get_device_id(self):
         return self.device_id
 
-    def run(self):
+    def start(self):
+        log.debug('starting')
         if self.running:
             return
         self.running = True
         reactor.callLater(0, self.keep_connected)
+        log.info('started')
         return self
 
+    def stop(self):
+        log.debug('stopping')
+        self.connected = False
+        self.exiting = True
+        self.connector.disconnect()
+        log.info('stopped')
+
     def resolve_endpoint(self, endpoint):
         # TODO allow resolution via consul
         host, port = endpoint.split(':', 2)
@@ -79,24 +88,19 @@
             log.debug('reconnect', after_delay=self.retry_interval)
             yield asleep(self.retry_interval)
 
-    def stop(self):
-        self.connected = False
-        self.exiting = True
-        self.connector.disconnect()
-        log.info('stopped')
-
     def enter_disconnected(self, event, reason):
         """Internally signal entering disconnected state"""
-        log.error(event, reason=reason)
         self.connected = False
-        self.d_disconnected.callback(None)
+        if not self.exiting:
+            log.error(event, reason=reason)
+            self.d_disconnected.callback(None)
 
     def enter_connected(self):
         """Handle transitioning from disconnected to connected state"""
         log.info('connected')
         self.connected = True
         self.read_buffer = None
-        reactor.callLater(0, self.proto_handler.run)
+        reactor.callLater(0, self.proto_handler.start)
 
     # protocol.ClientFactory methods
 
@@ -110,8 +114,9 @@
         self.enter_disconnected('connection-failed', reason)
 
     def clientConnectionLost(self, connector, reason):
-        log.error('client-connection-lost',
-                  reason=reason, connector=connector)
+        if not self.exiting:
+            log.error('client-connection-lost',
+                      reason=reason, connector=connector)
 
     def forward_packet_in(self, ofp_packet_in):
         self.proto_handler.forward_packet_in(ofp_packet_in)
@@ -147,7 +152,7 @@
             return ports
 
     stub = MockRpc()
-    agents = [Agent('localhost:6633', 256 + i, stub).run() for i in range(n)]
+    agents = [Agent('localhost:6633', 256 + i, stub).start() for i in range(n)]
 
     def shutdown():
         [a.stop() for a in agents]