Adding ONOS Segment Routing CLI files to new repo
diff --git a/cli/error.py b/cli/error.py
new file mode 100755
index 0000000..3258057
--- /dev/null
+++ b/cli/error.py
@@ -0,0 +1,105 @@
+#
+# Copyright (c) 2013 Big Switch Networks, Inc.
+#
+# Licensed under the Eclipse Public License, Version 1.0 (the
+# "License"); you may not use this file except in compliance with the
+# License. You may obtain a copy of the License at
+#
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied. See the License for the specific language governing
+# permissions and limitations under the License.
+#
+
+class CommandError(Exception):
+ """
+ Base class for exceptions thrown by the CLI command module
+ """
+ def __init__(self, kind, message = None):
+ if kind:
+ message = kind + ': ' + message
+ super(CommandError, self).__init__(message)
+
+class ArgumentValidationError(CommandError):
+ def __init__(self, message=None, expected_tokens=None):
+ kind = "Invalid argument"
+ super(ArgumentValidationError, self).__init__(kind, message)
+ self.expected_tokens = expected_tokens
+
+
+class CommandSyntaxError(CommandError):
+ def __init__(self, message):
+ #kind = 'Error'
+ kind = None
+ super(CommandSyntaxError,self).__init__(kind, message)
+
+
+class RangeSyntaxError(CommandError):
+ def __init__(self, message):
+ kind = "Value outside length/range"
+ super(RangeSyntaxError,self).__init__(kind, message)
+
+
+class CommandDescriptionError(CommandError):
+ def __init__(self, message, command = None):
+ self.command = None
+ kind = "Bad command description"
+ if command:
+ self.command = command
+ message += ': ' + command['self']
+ super(CommandDescriptionError,self).__init__(kind, message)
+
+
+class CommandCompletionError(CommandError):
+ def __init__(self, message):
+ kind = "Command completion"
+ super(CommandCompletionError,self).__init__(kind, message)
+
+
+class CommandAmbiguousError(CommandError):
+ def __init__(self, message):
+ kind = "Ambiguous command"
+ super(CommandAmbiguousError,self).__init__(kind, message)
+
+
+class CommandMissingError(CommandError):
+ def __init__(self, message):
+ kind = "No such command"
+ super(CommandMissingError,self).__init__(kind, message)
+
+
+class CommandInvocationError(CommandError):
+ def __init__(self, message):
+ kind = "Invalid command invocation"
+ super(CommandInvocationError,self).__init__(kind, message)
+
+
+class CommandSemanticError(CommandError):
+ def __init__(self, message):
+ kind = "Invalid Use"
+ super(CommandSemanticError,self).__init__(kind, message)
+
+
+class CommandInternalError(CommandError):
+ def __init__(self, message):
+ kind = "Internal (bug)"
+ super(CommandInternalError,self).__init__(kind, message)
+
+
+class CommandRestError(CommandError):
+ def __init__(self, rest_info=None, message=None):
+ s = 'Error: REST API'
+ if rest_info:
+ error_type = rest_info.get('error_type')
+ if error_type:
+ s += '; type = ' + error_type
+ description = rest_info.get('description')
+ if description:
+ s += '; ' + description
+ if message:
+ s += ': ' + message
+ super(CommandRestError,self).__init__("REST", s)
+