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.orglaforge has submitted this change. ( 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(-) Approvals: Jenkins Builder: Verified laforge: Looks good to me, approved 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-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge at osmocom.org> Gerrit-MessageType: merged -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20210123/a5f3e5c7/attachment.htm>