Change in osmo-cbc[master]: cbc-apitool.py: Generalize, make parameters configurable

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

laforge gerrit-no-reply at lists.osmocom.org
Sat Jan 23 22:49:09 UTC 2021


laforge has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-cbc/+/22396 )


Change subject: cbc-apitool.py: Generalize, make parameters configurable
......................................................................

cbc-apitool.py: Generalize, make parameters configurable

Do away with most of the hard-coded defaults and allow user to specify
a variety of parameters via the command line.  Also, start to use
argparse subparsers for better usability

Change-Id: Ib7b8121676bef9310f219affc6f3cc76b6986b2a
---
M contrib/cbc-apitool.py
1 file changed, 99 insertions(+), 72 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-cbc refs/changes/96/22396/1

diff --git a/contrib/cbc-apitool.py b/contrib/cbc-apitool.py
index 1b68386..c7ebcfa 100755
--- a/contrib/cbc-apitool.py
+++ b/contrib/cbc-apitool.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python3
 #
-# (C) 2020 by Harald Welte <laforge at osmocom.org>
+# (C) 2020-2021 by Harald Welte <laforge at osmocom.org>
 #
 # SPDX-License-Identifier: MIT
 #
@@ -25,18 +25,89 @@
     if verbose:
         print("POST %s (%s)" % (url, str(js)))
     resp = requests.post(url, json=js)
+    if verbose:
+        print("-> %s" % (resp))
     if not resp.ok:
         print("POST failed")
+    return resp
 
 def rest_delete(suffix, js = None):
     url = build_url(suffix)
     if verbose:
         print("DELETE %s (%s)" % (url, str(js)))
     resp = requests.delete(url, json=js)
+    if verbose:
+        print("-> %s" % (resp))
     if not resp.ok:
         print("DELETE failed " + str(resp))
+    return resp
 
 
+def do_create_cbs(args):
+    js = {
+        'cbe_name': "cbc_apitool",
+        'category': "normal",
+        'repetition_period': args.repetition_period,
+        'num_of_bcast': args.num_of_bcast,
+        'scope': {
+            'scope_plmn': { }
+        },
+        'smscb_message': {
+            'message_id': args.msg_id,
+            'serial_nr': {
+                'serial_nr_decoded': {
+                    'geo_scope': "plmn_wide",
+                    'msg_code': args.msg_code,
+                    'update_nr': args.update_nr
+                }
+            },
+            'payload': {
+                'payload_decoded': {
+                    'character_set': "gsm",
+                    #'language': 'en',
+                    'data_utf8': args.payload_data_utf8,
+                    #'data_utf8': "Mahlzeit1 Mahlzeit2 Mahlzeit3 Mahlzeit4 Mahlzeit5 Mahlzeit6 Mahlzeit7 Mahlzeit8"
+                    #'data_utf8': "Mahlzeit1 Mahlzeit2 Mahlzeit3 Mahlzeit4 Mahlzeit5 Mahlzeit6 Mahlzeit7 Mahlzeit8 Mahlzeit9 Mahlzeit10 Mahlzeti11 Mahlzeit12 Mahlzeit13 Mahlzeit14 Mahlzeit15 Mahlzeit16 Mahlzeit17 Mahlzeit18 Mahlzeit19 Mahlzeit20 Mahlzeit21 Mahlzeit22 Mahlzeit23 Mahlzeit24 Mahlzeit25 Mahlzeit26 Mahlzeit27 Mahlzeit28"
+                }
+            }
+        }
+    }
+    rest_post("/message", js);
+
+def do_create_etws(args):
+    js = {
+        'cbe_name': "cbc_apitool",
+        'category': "normal",
+        'repetition_period': args.repetition_period,
+        'num_of_bcast': args.num_of_bcast,
+        'scope': {
+            'scope_plmn': { }
+        },
+        'smscb_message': {
+            'message_id': args.msg_id,
+            'serial_nr': {
+                'serial_nr_decoded': {
+                    'geo_scope': "plmn_wide",
+                    'msg_code': args.msg_code,
+                    'update_nr': args.update_nr
+                }
+            },
+            'payload': {
+                'payload_etws': {
+                    'warning_type': {
+                        'warning_type_decoded': 'earthquake'
+                    },
+                    'emergency_user_alert': True,
+                    'popup_on_display': True
+                }
+            }
+        }
+    }
+    rest_post("/message", js);
+
+
+def do_delete(args):
+    rest_delete("/message/%u" % (args.msg_id))
 
 def main(argv):
     global server_port, server_host, verbose
@@ -46,83 +117,39 @@
     parser.add_argument("-p", "--port", help="TCP port to connect to", default=12345)
     parser.add_argument("-v", "--verbose", help="increase output verbosity", action='count', default=0)
 
-    group = parser.add_mutually_exclusive_group()
-    group.add_argument("-c", "--create-cbs", type=int, nargs=1, metavar=('msg_id'))
-    group.add_argument("-e", "--create-etws", type=int, nargs=1, metavar=('msg_id'))
-    group.add_argument("-d", "--delete", type=int, nargs=1, metavar=('msg_id'))
+    subparsers = parser.add_subparsers(required=True)
 
-    args = parser.parse_args()
+    parser_c_cbs = subparsers.add_parser('create-cbs', help='Create a new CBS message')
+    parser_c_cbs.add_argument("--msg-id", type=int, help='Message Identifier', required=True)
+    parser_c_cbs.add_argument("--msg-code", type=int, help='Message Code', default=768)
+    parser_c_cbs.add_argument("--update-nr", type=int, help='Update Number', default=0)
+    parser_c_cbs.add_argument("--repetition-period", type=int, help='Repetition Period', default=5)
+    parser_c_cbs.add_argument("--num-of-bcast", type=int, help='Number of Broadcasts', default=999)
+    parser_c_cbs.add_argument("--payload-data-utf8", type=str, help='Payload Data in UTF8', required=True)
+    parser_c_cbs.set_defaults(func=do_create_cbs)
+
+    parser_c_etws = subparsers.add_parser('create-etws', help='Create a new ETWS message')
+    parser_c_etws.add_argument("--msg-id", type=int, help='Message Identifier', required=True)
+    parser_c_etws.add_argument("--msg-code", type=int, help='Message Code', default=768)
+    parser_c_etws.add_argument("--update-nr", type=int, help='Update Number', default=0)
+    parser_c_etws.add_argument("--repetition-period", type=int, help='Repetition Period', default=5)
+    parser_c_etws.add_argument("--num-of-bcast", type=int, help='Number of Broadcasts', default=999)
+    parser_c_etws.set_defaults(func=do_create_etws)
+
+    parser_delete = subparsers.add_parser('delete', help='Delete a message')
+    parser_delete.add_argument("--msg-id", type=int, help='Message Identifier', required=True)
+    parser_delete.set_defaults(func=do_delete)
+
+    argv = sys.argv
+    if len(sys.argv) == 1:
+        argv = ['-h']
+    args = parser.parse_args(argv)
 
     server_host = args.host
     server_port = args.port
     verbose = args.verbose
 
-    if args.create_cbs:
-        js = {
-            'cbe_name': "cbc_apitool",
-            'category': "normal",
-            'repetition_period': 5,
-            'num_of_bcast': 888,
-            'scope': {
-                'scope_plmn': { }
-            },
-            'smscb_message': {
-                'message_id': int(args.create_cbs[0]),
-                'serial_nr': {
-                    'serial_nr_decoded': {
-                        'geo_scope': "plmn_wide",
-                        'msg_code': 768,
-                        'update_nr': 0
-                    }
-                },
-                'payload': {
-                    'payload_decoded': {
-                        'character_set': "gsm",
-                        #'language': 'en',
-                        #'data_utf8': "Mahlzeit!"
-                        'data_utf8': "Mahlzeit1 Mahlzeit2 Mahlzeit3 Mahlzeit4 Mahlzeit5 Mahlzeit6 Mahlzeit7 Mahlzeit8"
-                        #'data_utf8': "Mahlzeit1 Mahlzeit2 Mahlzeit3 Mahlzeit4 Mahlzeit5 Mahlzeit6 Mahlzeit7 Mahlzeit8 Mahlzeit9 Mahlzeit10 Mahlzeti11 Mahlzeit12 Mahlzeit13 Mahlzeit14 Mahlzeit15 Mahlzeit16 Mahlzeit17 Mahlzeit18 Mahlzeit19 Mahlzeit20 Mahlzeit21 Mahlzeit22 Mahlzeit23 Mahlzeit24 Mahlzeit25 Mahlzeit26 Mahlzeit27 Mahlzeit28"
-                    }
-                }
-            }
-        }
-        rest_post("/message", js);
-
-    elif args.create_etws:
-        js = {
-            'cbe_name': "cbc_apitool",
-            'category': "normal",
-            'repetition_period': 5,
-            'num_of_bcast': 999,
-            'scope': {
-                'scope_plmn': { }
-            },
-            'smscb_message': {
-                'message_id': int(args.create_etws[0]),
-                'serial_nr': {
-                    'serial_nr_decoded': {
-                        'geo_scope': "plmn_wide",
-                        'msg_code': 768,
-                        'update_nr': 0
-                    }
-                },
-                'payload': {
-                    'payload_etws': {
-                        'warning_type': {
-                            'warning_type_decoded': 'earthquake'
-                        },
-                        'emergency_user_alert': True,
-                        'popup_on_display': True
-                    }
-                }
-            }
-        }
-        rest_post("/message", js);
-
-    elif args.delete:
-        rest_delete("/message/%u" % (args.delete[0]))
-    else:
-        print("No operation?!");
+    args.func(args)
 
 
 if __name__ == "__main__":

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-cbc/+/22396
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-cbc
Gerrit-Branch: master
Gerrit-Change-Id: Ib7b8121676bef9310f219affc6f3cc76b6986b2a
Gerrit-Change-Number: 22396
Gerrit-PatchSet: 1
Gerrit-Owner: laforge <laforge at osmocom.org>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20210123/95b74620/attachment.htm>


More information about the gerrit-log mailing list