diff options
Diffstat (limited to 'examples/python/gi')
| -rwxr-xr-x | examples/python/gi/add_connection.py | 2 | ||||
| -rwxr-xr-x | examples/python/gi/deactivate-all.py | 2 | ||||
| -rwxr-xr-x | examples/python/gi/device-state-ip4config.py | 2 | ||||
| -rwxr-xr-x | examples/python/gi/firewall-zone.py | 2 | ||||
| -rwxr-xr-x | examples/python/gi/get-active-connections.py | 2 | ||||
| -rwxr-xr-x | examples/python/gi/get_ips.py | 2 | ||||
| -rwxr-xr-x | examples/python/gi/list-connections.py | 2 | ||||
| -rwxr-xr-x | examples/python/gi/nm-add-connection2.py | 156 | ||||
| -rwxr-xr-x | examples/python/gi/nm-connection-update-stable-id.py | 2 | ||||
| -rwxr-xr-x | examples/python/gi/nm-update2.py | 155 | ||||
| -rwxr-xr-x | examples/python/gi/setting-user-data.py | 2 | ||||
| -rwxr-xr-x | examples/python/gi/show-wifi-networks.py | 2 | ||||
| -rwxr-xr-x | examples/python/gi/update-ip4-method.py | 2 |
13 files changed, 311 insertions, 22 deletions
diff --git a/examples/python/gi/add_connection.py b/examples/python/gi/add_connection.py index 25a59235..3b0abef1 100755 --- a/examples/python/gi/add_connection.py +++ b/examples/python/gi/add_connection.py @@ -1,6 +1,4 @@ #!/usr/bin/env python -# -*- Mode: Python; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -# vim: ft=python ts=4 sts=4 sw=4 et ai # # This program is free software; you can redistribute it and/or modify diff --git a/examples/python/gi/deactivate-all.py b/examples/python/gi/deactivate-all.py index 13d14bc9..7a9b2ce1 100755 --- a/examples/python/gi/deactivate-all.py +++ b/examples/python/gi/deactivate-all.py @@ -1,6 +1,4 @@ #!/usr/bin/env python -# -*- Mode: Python; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -# vim: ft=python ts=4 sts=4 sw=4 et ai # # This program is free software; you can redistribute it and/or modify diff --git a/examples/python/gi/device-state-ip4config.py b/examples/python/gi/device-state-ip4config.py index b92a7b09..70ab8871 100755 --- a/examples/python/gi/device-state-ip4config.py +++ b/examples/python/gi/device-state-ip4config.py @@ -1,7 +1,5 @@ #!/usr/bin/env python # -# vim: ft=python ts=4 sts=4 sw=4 et ai -# -*- Mode: Python; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/examples/python/gi/firewall-zone.py b/examples/python/gi/firewall-zone.py index 979f2acf..6be18dd9 100755 --- a/examples/python/gi/firewall-zone.py +++ b/examples/python/gi/firewall-zone.py @@ -1,6 +1,4 @@ #!/usr/bin/env python -# -*- Mode: Python; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -# vim: ft=python ts=4 sts=4 sw=4 et ai # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/examples/python/gi/get-active-connections.py b/examples/python/gi/get-active-connections.py index cee579f9..d7d35663 100755 --- a/examples/python/gi/get-active-connections.py +++ b/examples/python/gi/get-active-connections.py @@ -1,6 +1,4 @@ #!/usr/bin/env python -# vim: ft=python ts=4 sts=4 sw=4 et ai -# -*- Mode: python; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/examples/python/gi/get_ips.py b/examples/python/gi/get_ips.py index 66d154f2..48bbac6d 100755 --- a/examples/python/gi/get_ips.py +++ b/examples/python/gi/get_ips.py @@ -1,7 +1,5 @@ #!/usr/bin/env python # -# vim: ft=python ts=4 sts=4 sw=4 et ai -# -*- Mode: Python; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/examples/python/gi/list-connections.py b/examples/python/gi/list-connections.py index 2139e8c1..4cd15feb 100755 --- a/examples/python/gi/list-connections.py +++ b/examples/python/gi/list-connections.py @@ -1,6 +1,4 @@ #!/usr/bin/env python -# -*- Mode: Python; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -# vim: ft=python ts=4 sts=4 sw=4 et ai # # This program is free software; you can redistribute it and/or modify diff --git a/examples/python/gi/nm-add-connection2.py b/examples/python/gi/nm-add-connection2.py new file mode 100755 index 00000000..b78016db --- /dev/null +++ b/examples/python/gi/nm-add-connection2.py @@ -0,0 +1,156 @@ +#!/usr/bin/env python +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Copyright 2019 Red Hat, Inc. +# + +import sys +import re + +import gi +gi.require_version('NM', '1.0') +from gi.repository import GLib, NM + +def find_connections(nm_client, arg_type, arg_id): + for c in nm_client.get_connections(): + if arg_type in [None, 'id'] and c.get_id() == arg_id: + yield c + if arg_type in [None, 'uuid'] and c.get_uuid() == arg_id: + yield c + +def find_connection_first(nm_client, arg_type, arg_id): + for f in find_connections(nm_client, arg_type, arg_id): + return f + +def con_to_str(con): + s_con = con.get_setting_connection() + return '"%s" (%s)' % (s_con.get_id(), s_con.get_uuid()) + +def usage(): + print('Usage: %s --clone [[id] <id>]' % (sys.argv[0])) + print(' %s --clone [[uuid] <uuid>]' % (sys.argv[0])) + return 1 + +def die(msg, print_usage=False): + print(msg) + if print_usage: + usage() + sys.exit(1) + +def main(): + + main_loop = GLib.MainLoop() + + nm_client = NM.Client.new(None) + + arg_mode = None + arg_block_autoconnect = NM.SettingsAddConnection2Flags.NONE + arg_id = None + arg_uuid = None + + cons = [] + + argv = list(sys.argv[1:]) + while argv: + if argv[0] == '--clone': + match_type = None + if len(argv) < 2: + die('missing argument for --clone option') + if argv[0] in ['id', 'uuid']: + match_type = argv[0] + if len(argv) < 3: + die('missing argument for "--clone %s" option' % (match_type)) + argv = argv[1:] + if cons: + die('cannot specify --clone argument more than once') + cons.extend(find_connections(nm_client, match_type, argv[1])) + if len(cons) == 0: + die('could not find connection for "--clone %s%s"' % ((match_type or ''), argv[1])) + if len(cons) != 1: + die('could not find unique connection for "--clone %s%s"' % ((match_type or ''), argv[1])) + argv = argv[2:] + continue + if argv[0] in ['--block-autoconnect']: + arg_block_autoconnect = NM.SettingsAddConnection2Flags.BLOCK_AUTOCONNECT + argv = argv[1:] + continue + if argv[0] in ['--to-disk', '--in-memory']: + if argv[0] == '--to-disk': + v = NM.SettingsAddConnection2Flags.TO_DISK + elif argv[0] == '--in-memory': + v = NM.SettingsAddConnection2Flags.IN_MEMORY + else: + assert(False) + if arg_mode is not None: + die('duplicate storage modes ("%s")' % (argv[0])) + arg_mode = v + argv = argv[1:] + continue + if argv[0] in ['--id']: + if len(argv) < 2: + die('missing argument for --id option') + arg_id = argv[1] + argv = argv[2:] + continue + if argv[0] in ['--uuid']: + if len(argv) < 2: + die('missing argument for --uuid option') + arg_uuid = argv[1] + argv = argv[2:] + continue + die('unknown argument "%s"' % (argv[0])) + + if len(cons) != 1: + die('missing --clone argument', True) + + con = cons[0] + + con2 = NM.SimpleConnection.new_clone(con) + + s_con = con2.get_setting_connection() + if arg_id: + s_con.set_property(NM.SETTING_CONNECTION_ID, arg_id) + s_con.set_property(NM.SETTING_CONNECTION_UUID, arg_uuid or NM.utils_uuid_generate()) + + result = {} + def _add_connection2_cb(cl, async_result, user_data): + try: + c, r = nm_client.add_connection2_finish(async_result) + except Exception as e: + result['error'] = e + else: + result['result'] = r + result['connection'] = c + main_loop.quit() + + nm_client.add_connection2(con2.to_dbus(NM.ConnectionSerializationFlags.ALL), + (arg_mode if arg_mode is not None else NM.SettingsAddConnection2Flags.TO_DISK) + | arg_block_autoconnect, + None, + False, + None, + _add_connection2_cb, + None) + + main_loop.run() + + if 'error' in result: + die('update connection %s failed [%s]: %s' % (con_to_str(con2), ' '.join(sys.argv), result['error'])) + + print('update connection %s succeeded [%s]: %s, %s' % (con_to_str(con2), ' '.join(sys.argv), result['connection'].get_path(), result['result'])) + +if __name__ == '__main__': + main() diff --git a/examples/python/gi/nm-connection-update-stable-id.py b/examples/python/gi/nm-connection-update-stable-id.py index ad852f77..bd4f12b6 100755 --- a/examples/python/gi/nm-connection-update-stable-id.py +++ b/examples/python/gi/nm-connection-update-stable-id.py @@ -1,6 +1,4 @@ #!/usr/bin/env python -# -*- Mode: Python; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -# vim: ft=python ts=4 sts=4 sw=4 et ai # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/examples/python/gi/nm-update2.py b/examples/python/gi/nm-update2.py new file mode 100755 index 00000000..36449fd8 --- /dev/null +++ b/examples/python/gi/nm-update2.py @@ -0,0 +1,155 @@ +#!/usr/bin/env python +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Copyright 2019 Red Hat, Inc. +# + +import sys +import re + +import gi +gi.require_version('NM', '1.0') +from gi.repository import GLib, NM + +def find_connections(nm_client, arg_type, arg_id): + for c in nm_client.get_connections(): + if arg_type in [None, 'id'] and c.get_id() == arg_id: + yield c + if arg_type in [None, 'uuid'] and c.get_uuid() == arg_id: + yield c + +def find_connection_first(nm_client, arg_type, arg_id): + for f in find_connections(nm_client, arg_type, arg_id): + return f + +def con_to_str(con): + s_con = con.get_setting_connection() + return '"%s" (%s)' % (s_con.get_id(), s_con.get_uuid()) + +def usage(): + print('Usage: %s [[id] <id>]' % (sys.argv[0])) + print(' %s [[uuid] <uuid>]' % (sys.argv[0])) + return 1 + +def die(msg, print_usage=False): + print(msg) + if print_usage: + usage() + sys.exit(1) + +def main(): + + main_loop = GLib.MainLoop() + + nm_client = NM.Client.new(None) + + arg_mode = None + arg_block_autoconnect = NM.SettingsUpdate2Flags.NONE + arg_volatile = NM.SettingsUpdate2Flags.NONE + arg_no_reapply = NM.SettingsUpdate2Flags.NONE + + cons = [] + + argv = list(sys.argv[1:]) + while argv: + if argv[0] in ['id', 'uuid']: + if cons: + die('cannot specify multiple connections') + if len(argv) < 2: + die('missing argument for "%s" specifier' % (argv[0])) + cons.extend(find_connections(nm_client, argv[0], argv[1])) + if len(cons) == 0: + die('could not find connection for "%s %s"' % (argv[0], argv[1])) + if len(cons) != 1: + die('could not find unique connection for "%s %s"' % (argv[0], argv[1])) + argv = argv[2:] + continue + if argv[0] in ['--block-autoconnect']: + arg_block_autoconnect = NM.SettingsUpdate2Flags.BLOCK_AUTOCONNECT + argv = argv[1:] + continue + if argv[0] in ['--volatile']: + arg_volatile = NM.SettingsUpdate2Flags.VOLATILE + argv = argv[1:] + continue + if argv[0] in ['--no-reapply']: + arg_no_reapply = NM.SettingsUpdate2Flags.NO_REAPPLY + argv = argv[1:] + continue + if argv[0] in ['--to-disk', '--in-memory', '--in-memory-detached', '--in-memory-only']: + if argv[0] == '--to-disk': + v = NM.SettingsUpdate2Flags.TO_DISK + elif argv[0] == '--in-memory': + v = NM.SettingsUpdate2Flags.IN_MEMORY + elif argv[0] == '--in-memory-detached': + v = NM.SettingsUpdate2Flags.IN_MEMORY_DETACHED + elif argv[0] == '--in-memory-only': + v = NM.SettingsUpdate2Flags.IN_MEMORY_ONLY + elif argv[0] == '--keep': + v = NM.SettingsUpdate2Flags.NONE + else: + assert(False) + if arg_mode is not None: + die('duplicate storage modes ("%s")' % (argv[0])) + arg_mode = v + argv = argv[1:] + continue + if cons: + die('unknown argument "%s"' % (argv[0])) + cons.extend(find_connections(nm_client, None, argv[0])) + if len(cons) == 0: + die('could not find connection for "%s"' % (argv[0])) + if len(cons) != 1: + die('could not find unique connection for "%s"' % (argv[0])) + argv = argv[1:] + continue + + if len(cons) != 1: + die('missing connection argument', True) + + con = cons[0] + + con2 = NM.SimpleConnection.new_clone(con) + + result = {} + def _update2_cb(con, async_result, user_data): + try: + r = con.update2_finish(async_result) + except Exception as e: + result['error'] = e + else: + result['result'] = r + main_loop.quit() + + con.update2(con2.to_dbus(NM.ConnectionSerializationFlags.ALL), + (arg_mode if arg_mode is not None else NM.SettingsUpdate2Flags.NONE) + | arg_block_autoconnect + | arg_volatile + | arg_no_reapply, + None, + None, + _update2_cb, + None) + + main_loop.run() + + if 'error' in result: + die('update connection %s failed [%s]: %s' % (con_to_str(con2), ' '.join(sys.argv), result['error'])) + + print('update connection %s succeeded [%s]: %s' % (con_to_str(con2), ' '.join(sys.argv), result['result'])) + +if __name__ == '__main__': + main() diff --git a/examples/python/gi/setting-user-data.py b/examples/python/gi/setting-user-data.py index 79fb98cd..d5e00105 100755 --- a/examples/python/gi/setting-user-data.py +++ b/examples/python/gi/setting-user-data.py @@ -1,6 +1,4 @@ #!/usr/bin/env python -# -*- Mode: Python; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -# vim: ft=python ts=4 sts=4 sw=4 et ai # # This program is free software; you can redistribute it and/or modify diff --git a/examples/python/gi/show-wifi-networks.py b/examples/python/gi/show-wifi-networks.py index 4c7a126f..6eb6ac91 100755 --- a/examples/python/gi/show-wifi-networks.py +++ b/examples/python/gi/show-wifi-networks.py @@ -1,7 +1,5 @@ #!/usr/bin/env python # coding=utf-8 -# -*- Mode: Python; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -# vim: ft=python ts=4 sts=4 sw=4 et ai # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/examples/python/gi/update-ip4-method.py b/examples/python/gi/update-ip4-method.py index 3b2df72e..e4c603fb 100755 --- a/examples/python/gi/update-ip4-method.py +++ b/examples/python/gi/update-ip4-method.py @@ -1,6 +1,4 @@ #!/usr/bin/env python -# -*- Mode: Python; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -# vim: ft=python ts=4 sts=4 sw=4 et ai # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by |