blob: 6dfa3b9b8a5eac504cf1f26e338517c9d38cbb8c [file] [log] [blame]
Padraigb21b6762016-09-21 14:59:02 +01001#!/usr/bin/python
2'''
3Copyright 2016 Intel Corporation
Ed Warnicke33007f52016-04-04 14:37:21 -07004
Padraigb21b6762016-09-21 14:59:02 +01005Licensed under the Apache License, Version 2.0 (the "License");
6you may not use this file except in compliance with the License.
7You may obtain a copy of the License at
8
9 http://www.apache.org/licenses/LICENSE-2.0
10
11Unless required by applicable law or agreed to in writing, software
12distributed under the License is distributed on an "AS IS" BASIS,
13WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14See the License for the specific language governing permissions and
15limitations under the License.
16'''
17
18from cmd import Cmd
19import os
20import subprocess
21import re
22import sys
23try:
24 import readline
25except ImportError:
26 readline = None
27
28persishist = os.path.expanduser('~/.vpphistory')
29persishist_size = 1000
30if not persishist:
31 os.mknod(persishist, stat.S_IFREG)
32
33class Vppctl(Cmd):
34
35 def historyWrite(self):
36 if readline:
37 readline.set_history_length(persishist_size)
38 readline.write_history_file(persishist)
39
40 def runVat(self, line):
41 input_prefix = "exec "
42 input_command = input_prefix + line
43 line_remove = '^load_one_plugin:'
44 s = '\n'
Pierre Pfisterf524f0a2016-11-03 13:14:29 +000045 command = ['vpp_api_test']
Padraigb21b6762016-09-21 14:59:02 +010046
Pierre Pfisterf524f0a2016-11-03 13:14:29 +000047 if os.geteuid() != 0:
48 command = ['sudo', 'vpp_api_test']
49
50 vpp_process = subprocess.Popen(command,
Padraigb21b6762016-09-21 14:59:02 +010051 stderr=subprocess.PIPE,
52 stdin=subprocess.PIPE,
53 stdout=subprocess.PIPE)
54 stdout_value = vpp_process.communicate(input_command)[0]
55
56 buffer_stdout = stdout_value.splitlines()
57
58 buffer_stdout[:] = [b for b in buffer_stdout
59 if line_remove not in b]
60
61 for i, num in enumerate(buffer_stdout):
62 buffer_stdout[i] = num.replace('vat# ','')
63
64 stdout_value = s.join(buffer_stdout)
65 print stdout_value
66
67 def do_help(self, line):
68 self.runVat("help")
69
70 def default(self, line):
71 self.runVat(line)
72
73 def do_exit(self, line):
74 self.historyWrite()
75
76 raise SystemExit
77
78 def emptyline(self):
79 pass
80
81 def preloop(self):
82 if readline and os.path.exists(persishist):
83 readline.read_history_file(persishist)
84
85 def postcmd(self, stop, line):
86 self.historyWrite()
87
88if __name__ == '__main__':
89 command_args = sys.argv
90
91 if not len(command_args) > 1:
92 prompt = Vppctl()
93 prompt.prompt = 'vpp# '
94 prompt.cmdloop("Starting Vppctl...")
95 else:
96 del command_args[0]
97 stdout_value = " ".join(command_args)
98 VatAddress = Vppctl()
99 VatAddress.runVat(stdout_value)
100