aboutsummaryrefslogtreecommitdiffstats
path: root/domino_cli.py
diff options
context:
space:
mode:
authorCédric Ollivier <cedric.ollivier@orange.com>2017-08-18 16:20:33 +0200
committerCédric Ollivier <cedric.ollivier@orange.com>2017-09-02 14:32:49 +0200
commitb5ac0a412e1958cdff581d14b818bf042293267f (patch)
tree6b261838744963cceb60235bef39bf35cc8e86c0 /domino_cli.py
parent21f973902ee4428462564d27719f366b41ce04c5 (diff)
Add domino package
It's required by Functest to ease integrating all OPNFV projects and their requirements. It also synchronizes requirements with stable/ocata and renames domino-cli to domino_cli to conform with common module names. It defines scripts and console_scripts to rely on $PATH. run_multimode.sh is adapted to correctly call client, cli and server. It should be noted that run.sh can raise conflicts if it's already provided by another OPNFV package and that run_on_remote_nodes.sh is not fully updated. Otherwise it obliges all OPNFV installers to be updated as well. run.sh is unchanged and it's called by releng from local directory. It may rise runtime issues if several files are not loaded via pkg_resources. Change-Id: Ibd9dd56f316609180aa432c6b7ee5a375d9af674 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com>
Diffstat (limited to 'domino_cli.py')
-rwxr-xr-xdomino_cli.py62
1 files changed, 62 insertions, 0 deletions
diff --git a/domino_cli.py b/domino_cli.py
new file mode 100755
index 0000000..5cb0b1c
--- /dev/null
+++ b/domino_cli.py
@@ -0,0 +1,62 @@
+#!/usr/bin/env python
+
+#Copyright 2016 Open Platform for NFV Project, Inc. and its contributors
+# Licensed under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0
+# 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.
+
+import sys, glob, getopt
+import getopt
+
+sys.path.insert(0, glob.glob('./lib')[0])
+
+from dominoCLI import DominoClientCLI
+from dominoCLI.ttypes import *
+from dominoCLI.constants import *
+
+from thrift import Thrift
+from thrift.transport import TSocket
+from thrift.transport import TTransport
+from thrift.protocol import TBinaryProtocol
+
+#Load configuration parameters
+from domino_conf import *
+
+def main():
+ #cli_port = DOMINO_CLI_PORT
+ if len(sys.argv) >= 2:
+ cli_port = sys.argv[1]
+ else:
+ print 'domino-cli.py <cliport> ...'
+ return 2
+ try:
+ # Make socket
+ # NOTE that domino-cli.py and DominoClient.py are assumed to be run in the same machine
+ transport = TSocket.TSocket('localhost', int(cli_port))
+ # Buffering is critical. Raw sockets are very slow
+ transport = TTransport.TBufferedTransport(transport)
+ # Wrap in a protocol
+ protocol = TBinaryProtocol.TBinaryProtocol(transport)
+
+ # Create a client to use the protocol encoder
+ client = DominoClientCLI.Client(protocol)
+
+ # Connect!
+ transport.open()
+
+ CLImsg = CLIMessage()
+ CLImsg.CLI_input = sys.argv[2:]
+ CLIrespmsg = client.d_CLI(CLImsg)
+ if CLIrespmsg.CLI_response is not None:
+ print CLIrespmsg.CLI_response
+ except Thrift.TException, tx:
+ print '%s' % (tx.message)
+
+if __name__ == "__main__":
+ sys.exit(main())