/mandos/trunk

To get this branch, use:
bzr branch http://bzr.recompile.se/loggerhead/mandos/trunk

« back to all changes in this revision

Viewing changes to mandos-ctl

  • Committer: teddy at recompile
  • Date: 2020-01-12 01:42:09 UTC
  • Revision ID: teddy@recompile.se-20200112014209-ktr3acloxzbmhbnt
mandos-ctl: Add DBussy support

Add support in mandos-ctl for the "DBussy" Python D-Bus module.  Use
it by default, if it is available.

* mandos-ctl: Try to import the "dbussy" and its high-level module
  "ravel".
  (main): Use DBussy if import succeeded.
  (dbussy_adapter): New.
  (Test_dbussy_adapter_SystemBus): New test class.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
#!/usr/bin/python3 -bbI
2
2
# -*- after-save-hook: (lambda () (let ((command (if (fboundp 'file-local-name) (file-local-name (buffer-file-name)) (or (file-remote-p (buffer-file-name) 'localname) (buffer-file-name))))) (if (= (progn (if (get-buffer "*Test*") (kill-buffer "*Test*")) (process-file-shell-command (format "%s --check" (shell-quote-argument command)) nil "*Test*")) 0) (let ((w (get-buffer-window "*Test*"))) (if w (delete-window w))) (progn (with-current-buffer "*Test*" (compilation-mode)) (display-buffer "*Test*" '(display-buffer-in-side-window)))))); coding: utf-8 -*-
3
3
#
4
 
# Mandos Control - Control or query the Mandos server
 
4
# Mandos Monitor - Control and monitor the Mandos server
5
5
#
6
 
# Copyright © 2008-2020 Teddy Hogeborn
7
 
# Copyright © 2008-2020 Björn Påhlsson
 
6
# Copyright © 2008-2019 Teddy Hogeborn
 
7
# Copyright © 2008-2019 Björn Påhlsson
8
8
#
9
9
# This file is part of Mandos.
10
10
#
89
89
 
90
90
locale.setlocale(locale.LC_ALL, "")
91
91
 
92
 
version = "1.8.12"
 
92
version = "1.8.9"
93
93
 
94
94
 
95
95
def main():
497
497
                             self.properties_iface, interface, key,
498
498
                             value)
499
499
 
500
 
        def call_method(self, methodname, busname, objectpath,
501
 
                        interface, *args):
502
 
            raise NotImplementedError()
503
 
 
504
 
 
505
500
    class MandosBus(SystemBus):
506
501
        busname_domain = "se.recompile"
507
502
        busname = busname_domain + ".Mandos"
726
721
            with self.convert_exception(dbus.Error):
727
722
                value =  method(*args)
728
723
            # DBussy returns values either as an empty list or as a
729
 
            # list of one element with the return value
 
724
            # tuple: (signature, value)
730
725
            if value:
731
726
                return self.type_filter(value[0])
732
727
 
738
733
 
739
734
        def type_filter(self, value):
740
735
            """Convert the most bothersome types to Python types"""
741
 
            # A D-Bus Variant value is represented as the Python type
742
 
            # Tuple[dbussy.DBUS.Signature, Any]
743
736
            if isinstance(value, tuple):
744
737
                if (len(value) == 2
745
738
                    and isinstance(value[0],
1634
1627
        finally:
1635
1628
            dbus_logger.removeFilter(counting_handler)
1636
1629
 
1637
 
        self.assertNotIsInstance(e.exception, dbus.ConnectFailed)
 
1630
        self.assertNotIsInstance(e, dbus.ConnectFailed)
1638
1631
 
1639
1632
        # Make sure the dbus logger was suppressed
1640
1633
        self.assertEqual(0, counting_handler.count)
1777
1770
            self.call_method(bus, "methodname", "busname",
1778
1771
                             "objectpath", "interface")
1779
1772
 
1780
 
        self.assertNotIsInstance(e.exception, dbus.ConnectFailed)
 
1773
        self.assertNotIsInstance(e, dbus.ConnectFailed)
1781
1774
 
1782
1775
    def test_get_converts_to_correct_exception(self):
1783
1776
        bus = pydbus_adapter.SystemBus(