Refactoring: Made complete codebase PEP8 compatible.
[osm/vim-emu.git] / src / emuvim / cli / rest / network.py
index ac9f5fd..7566f44 100755 (executable)
@@ -1,35 +1,31 @@
-"""
-Copyright (c) 2015 SONATA-NFV
-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).
-"""
-from requests import get,put, delete
-import pprint
+# 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 put, delete
 import argparse
 
-pp = pprint.PrettyPrinter(indent=4)
 
 class RestApiClient():
 
@@ -46,9 +42,10 @@ class RestApiClient():
     def add(self, args):
         params = self._create_dict(
             vnf_src_name=self._parse_vnf_name(args.get("source")),
-            vnf_dst_name = self._parse_vnf_name(args.get("destination")),
+            vnf_dst_name=self._parse_vnf_name(args.get("destination")),
             vnf_src_interface=self._parse_vnf_interface(args.get("source")),
-            vnf_dst_interface=self._parse_vnf_interface(args.get("destination")),
+            vnf_dst_interface=self._parse_vnf_interface(
+                args.get("destination")),
             weight=args.get("weight"),
             match=args.get("match"),
             bidirectional=args.get("bidirectional"),
@@ -56,15 +53,16 @@ class RestApiClient():
             priority=args.get("priority"))
 
         response = put("{0}/restapi/network".format(args.get("endpoint")),
-                       json=params)
-        pp.pprint(response.text)
+                       params=params)
+        print(self._nice_print(response.text))
 
     def remove(self, args):
         params = self._create_dict(
-            vnf_src_name = self._parse_vnf_name(args.get("source")),
-            vnf_dst_name = self._parse_vnf_name(args.get("destination")),
+            vnf_src_name=self._parse_vnf_name(args.get("source")),
+            vnf_dst_name=self._parse_vnf_name(args.get("destination")),
             vnf_src_interface=self._parse_vnf_interface(args.get("source")),
-            vnf_dst_interface=self._parse_vnf_interface(args.get("destination")),
+            vnf_dst_interface=self._parse_vnf_interface(
+                args.get("destination")),
             weight=args.get("weight"),
             match=args.get("match"),
             bidirectional=args.get("bidirectional"),
@@ -72,8 +70,8 @@ class RestApiClient():
             priority=args.get("priority"))
 
         response = delete("{0}/restapi/network".format(args.get("endpoint")),
-                       json=params)
-        pp.pprint(response.text)
+                          params=params)
+        print(self._nice_print(response.text))
 
     def _parse_vnf_name(self, vnf_name_str):
         vnf_name = vnf_name_str.split(':')[0]
@@ -82,7 +80,7 @@ class RestApiClient():
     def _parse_vnf_interface(self, vnf_name_str):
         try:
             vnf_interface = vnf_name_str.split(':')[1]
-        except:
+        except BaseException:
             vnf_interface = None
 
         return vnf_interface
@@ -90,6 +88,14 @@ class RestApiClient():
     def _create_dict(self, **kwargs):
         return kwargs
 
+    def _nice_print(self, text):
+        # some modules seem to return unicode strings where newlines, other
+        # special characters are escaped
+        text = str(text).replace('\\n', '\n')
+        text = str(text).replace('\\"', '"')
+        return text
+
+
 parser = argparse.ArgumentParser(description='son-emu-cli network')
 parser.add_argument(
     "command",
@@ -108,7 +114,7 @@ parser.add_argument(
     "--weight", "-w", dest="weight",
     help="weight edge attribute to calculate the path")
 parser.add_argument(
-    "--priority", "-p", dest="priority", default="0",
+    "--priority", "-p", dest="priority", default="1000",
     help="priority of flow rule")
 parser.add_argument(
     "--match", "-m", dest="match",
@@ -117,13 +123,14 @@ parser.add_argument(
     "--bidirectional", "-b", dest="bidirectional", action='store_true',
     help="add/remove the flow entries from src to dst and back")
 parser.add_argument(
-    "--cookie", "-c", dest="cookie",
+    "--cookie", "-c", dest="cookie", default="10",
     help="cookie for this flow, as easy to use identifier (eg. per tenant/service)")
 parser.add_argument(
     "--endpoint", "-e", dest="endpoint",
     default="http://127.0.0.1:5001",
     help="REST API endpoint of son-emu (default:http://127.0.0.1:5001)")
 
+
 def main(argv):
     args = vars(parser.parse_args(argv))
     c = RestApiClient()