X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=src%2Femuvim%2Fcli%2Frest%2Fcompute.py;h=5abaa287540ab3e6c4960fdf59f10e3c534d3f93;hb=72f09885db3935e77901c3dee132cb176b927c7b;hp=cdc0b04d05c5ea64756c12a9bddeb6e4ce0c7094;hpb=5afa0714ecd0762b29f37df1b5679865839ece34;p=osm%2Fvim-emu.git diff --git a/src/emuvim/cli/rest/compute.py b/src/emuvim/cli/rest/compute.py index cdc0b04..5abaa28 100755 --- a/src/emuvim/cli/rest/compute.py +++ b/src/emuvim/cli/rest/compute.py @@ -1,35 +1,33 @@ -""" -Copyright (c) 2015 SONATA-NFV and Paderborn University -ALL RIGHTS RESERVED. - -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. - -Neither the name of the SONATA-NFV [, ANY ADDITIONAL AFFILIATION] -nor the names of its contributors may be used to endorse or promote -products derived from this software without specific prior written -permission. - -This work has been performed in the framework of the SONATA project, -funded by the European Commission under Grant number 671517 through -the Horizon 2020 and 5G-PPP programmes. The authors would like to -acknowledge the contributions of their colleagues of the SONATA -partner consortium (www.sonata-nfv.eu). -""" +# Copyright (c) 2015 SONATA-NFV and Paderborn University +# ALL RIGHTS RESERVED. +# +# 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. +# +# Neither the name of the SONATA-NFV, Paderborn University +# nor the names of its contributors may be used to endorse or promote +# products derived from this software without specific prior written +# permission. +# +# This work has been performed in the framework of the SONATA project, +# funded by the European Commission under Grant number 671517 through +# the Horizon 2020 and 5G-PPP programmes. The authors would like to +# acknowledge the contributions of their colleagues of the SONATA +# partner consortium (www.sonata-nfv.eu). from requests import get, put, delete from tabulate import tabulate import pprint import argparse -import json +from subprocess import Popen pp = pprint.PrettyPrinter(indent=4) @@ -69,7 +67,8 @@ class RestApiClient(): def list(self, args): - list = get('%s/restapi/compute/%s' % (args.get("endpoint"), args.get('datacenter'))).json() + list = get('%s/restapi/compute/%s' % + (args.get("endpoint"), args.get('datacenter'))).json() table = [] for c in list: @@ -77,25 +76,23 @@ class RestApiClient(): if len(c) > 1: name = c[0] status = c[1] - eth0ip = None - eth0status = "down" - if len(status.get("network")) > 0: - eth0ip = status.get("network")[0].get("ip") - eth0status = "up" if status.get( - "network")[0].get("up") else "down" + # eth0ip = status.get("docker_network", "-") + netw_list = [netw_dict['intf_name'] + for netw_dict in status.get("network")] + dc_if_list = [netw_dict['dc_portname'] + for netw_dict in status.get("network")] table.append([status.get("datacenter"), name, status.get("image"), - eth0ip, - eth0status, - status.get("state").get("Status")]) + ','.join(netw_list), + ','.join(dc_if_list)]) + # status.get("state").get("Status")] headers = ["Datacenter", "Container", "Image", - "eth0 IP", - "eth0 status", - "Status"] + "Interface list", + "Datacenter interfaces"] print(tabulate(table, headers=headers, tablefmt="grid")) def status(self, args): @@ -107,12 +104,28 @@ class RestApiClient(): pp.pprint(list) + def xterm(self, args): + vnf_names = args.get("vnf_names") + for vnf_name in vnf_names: + Popen(['xterm', '-xrm', 'XTerm.vt100.allowTitleOps: false', '-T', vnf_name, + '-e', "docker exec -it mn.{0} /bin/bash".format(vnf_name)]) -parser = argparse.ArgumentParser(description='son-emu compute') + +parser = argparse.ArgumentParser(description="""son-emu-cli compute + + Examples: + - son-emu-cli compute start -d dc2 -n client -i sonatanfv/sonata-iperf3-vnf + - son-emu-cli list + - son-emu-cli compute status -d dc2 -n client + """, formatter_class=argparse.RawTextHelpFormatter) parser.add_argument( "command", - choices=['start', 'stop', 'list', 'status'], + choices=['start', 'stop', 'list', 'status', 'xterm'], help="Action to be executed.") +parser.add_argument( + "vnf_names", + nargs='*', + help="vnf names to open an xterm for") parser.add_argument( "--datacenter", "-d", dest="datacenter", help="Data center to which the command should be applied.") @@ -132,7 +145,7 @@ parser.add_argument( parser.add_argument( "--endpoint", "-e", dest="endpoint", default="http://127.0.0.1:5001", - help="UUID of the plugin to be manipulated.") + help="REST API endpoint of son-emu (default:http://127.0.0.1:5001)") def main(argv):