This commit consists of:
1) Improved error handling
2) Return correct XML message for unimplemented rpcs
3) Clean up

Change-Id: Ia59d203840efc2e238a50d4f05e56f854cca9fc7
diff --git a/netconf/nc_rpc/ext/get_schema.py b/netconf/nc_rpc/ext/get_schema.py
index ec473d3..569a3b0 100644
--- a/netconf/nc_rpc/ext/get_schema.py
+++ b/netconf/nc_rpc/ext/get_schema.py
@@ -19,7 +19,8 @@
 from netconf.nc_rpc.rpc import Rpc
 import netconf.nc_common.error as ncerror
 from netconf.constants import Constants as C
-from netconf.nc_common.utils import qmap, ns
+from netconf.nc_common.utils import qmap
+from twisted.internet.defer import inlineCallbacks, returnValue
 
 log = structlog.get_logger()
 
@@ -31,26 +32,28 @@
         self.parse_schema_request(request_xml)
         self._validate_parameters()
 
+    @inlineCallbacks
     def execute(self):
         if self.rpc_response.is_error:
-            return(self.rpc_response)
+            returnValue(self.rpc_response)
 
         log.info('get-schema-request', session=self.session.session_id,
                  request=self.request)
 
         # Get the yang schema content
         # TODO: Use version as well
-        content = self.capabilities.get_schema_content(self.request['identifier'])
+        content = yield self.capabilities.get_schema_content(self.request[
+                                                            'identifier'])
         if not content:
             self.rpc_response.is_error = True
-            self.rpc_response.node = ncerror.BadMsg('Server Error')
-            return
+            self.rpc_response.node = ncerror.BadMsg(self.request_xml)
+            returnValue(self.rpc_response)
 
-        self.rpc_response.node = self.create_xml_response(content)
+        self.rpc_response.node = yield self.create_xml_response(content)
 
         self.rpc_response.is_error = False
 
-        return(self.rpc_response)
+        returnValue(self.rpc_response)
 
     def _validate_parameters(self):
         log.info('validate-parameters', session=self.session.session_id)
@@ -62,16 +65,14 @@
                         not self.request.has_key('format') or \
                         not self.request.has_key('version'):
                     self.rpc_response.is_error = True
-                    self.rpc_response.node = ncerror.BadMsg('Improperly '
-                                                            'formatted get '
-                                                            'schemas request')
+                    self.rpc_response.node = ncerror.BadMsg(self.request_xml)
                     return
 
                 if self.request.has_key('filter'):
                     if not self.request.has_key('class'):
                         self.rpc_response.is_error = True
                         self.rpc_response.node = ncerror.BadMsg(
-                            'Missing filter sub-element')
+                            self.request_xml)
                         return
 
                 # Verify that the requested schema exists
@@ -79,8 +80,7 @@
                                                              'identifier']) \
                         or self.request['format'] != 'yang' :
                     self.rpc_response.is_error = True
-                    self.rpc_response.node = ncerror.BadMsg(
-                        'Unsupported request')
+                    self.rpc_response.node = ncerror.BadMsg(self.request_xml)
                     return
 
             except Exception as e:
diff --git a/netconf/nc_rpc/ext/get_schemas.py b/netconf/nc_rpc/ext/get_schemas.py
index 7ec4555..cc09ebb 100644
--- a/netconf/nc_rpc/ext/get_schemas.py
+++ b/netconf/nc_rpc/ext/get_schemas.py
@@ -18,6 +18,8 @@
 import structlog
 from netconf.nc_rpc.rpc import Rpc
 import netconf.nc_common.error as ncerror
+from twisted.internet.defer import inlineCallbacks, returnValue
+
 
 log = structlog.get_logger()
 
@@ -28,9 +30,10 @@
         self._validate_parameters()
         self.capabilities = capabilities
 
+    @inlineCallbacks
     def execute(self):
         if self.rpc_response.is_error:
-            return(self.rpc_response)
+            returnValue(self.rpc_response)
 
         log.info('get-schemas-request', session=self.session.session_id,
                  request=self.request)
@@ -55,12 +58,12 @@
             node.text = dict['location']
 
         # Build the yang response
-        self.rpc_response.node = self.rpc_response.build_xml_response(
+        self.rpc_response.node = yield self.rpc_response.build_xml_response(
             self.request, top)
 
         self.rpc_response.is_error = False
 
-        return(self.rpc_response)
+        returnValue(self.rpc_response)
 
 
     def _validate_parameters(self):
@@ -70,15 +73,14 @@
             try:
                 if self.request['command'] != 'get-schemas':
                     self.rpc_response.is_error = True
-                    self.rpc_response.node = ncerror.BadMsg('Improperly '
-                                                            'formatted get '
-                                                            'schemas request')
+                    self.rpc_response.node = ncerror.BadMsg(self.request_xml)
+                    return
 
                 if self.request.has_key('filter'):
                     if not self.request.has_key('class'):
                         self.rpc_response.is_error = True
-                        self.rpc_response.node = ncerror.BadMsg(
-                            'Missing filter sub-element')
+                        self.rpc_response.node = ncerror.BadMsg(self.request_xml)
+                        return
 
             except Exception as e:
                 self.rpc_response.is_error = True