dbus-systemd 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 95c8685569c4c7a3c26570f4557f697f7891047d
4
- data.tar.gz: 367841855b267ed551f703d89f46be3fa9e7d226
3
+ metadata.gz: e6971dca0ff26c382c81cea722a06a5e4d5b45cf
4
+ data.tar.gz: 01a290eafbaa8eb1ab35fdca91733b25d46f1628
5
5
  SHA512:
6
- metadata.gz: bac18191a888481e6eb5ea85deb48e314fe7331854155206d7eb2eda330131959234045dc775064c7fe6f6c28d4a84fa3654d071e9c73209037317cdd3b8c7a0
7
- data.tar.gz: d365aae9ecc672af3bdef7b7bb8e496a2aaa8afb8f0e73c1142f86e942ea1d16bd9fa2ad3ad66343c773fe058545237e6be67eae47cac2eaf066ed86997b625d
6
+ metadata.gz: acb062c0bd2b6c33754e6b2427b8c7dd72fd15d5ae360a5d41171e5a9a4daeb9064b5f4770a805c1517fe2a0f24991c42f8cac2ff2eae66f49eb8db2f8ee1d79
7
+ data.tar.gz: f4c1b0d9ee6b0a994bd01728f474ca22b8861591b01552ea5cf54f4392e762b360bc0fca807e11dd04111bf53fe89db53747f71daabb74ffd2ee52fdaea511ff
data/README.md CHANGED
@@ -1,12 +1,13 @@
1
- # Dbus::Systemd
1
+ # DBus::Systemd
2
2
 
3
3
  Ruby library for simplifying access to systemd dbus interfaces.
4
4
 
5
5
  Recommended Reading
6
6
 
7
+ - [introduction to d-bus concepts section of sd-bus announcement blog post](http://0pointer.net/blog/the-new-sd-bus-api-of-systemd.html)
7
8
  - [systemd D-Bus specification](https://www.freedesktop.org/wiki/Software/systemd/dbus/)
8
9
  - [D-Bus specification](https://dbus.freedesktop.org/doc/dbus-specification.html)
9
-
10
+
10
11
  ## Installation
11
12
 
12
13
  Add this line to your application's Gemfile:
@@ -25,7 +26,166 @@ Or install it yourself as:
25
26
 
26
27
  ## Usage
27
28
 
29
+ ### DBus::Systemd::Hostnamed
30
+
31
+ For full docs, see [official docs](https://www.freedesktop.org/wiki/Software/systemd/hostnamed/).
32
+
33
+ ```ruby
34
+ irb(main):001:0> h = DBus::Systemd::Hostnamed.new
35
+ => ...
36
+ irb(main):002:0> h.object.methods - Object.methods
37
+ => [:Set, :Get, :GetAll, :Ping, :GetMachineId, :Introspect, :SetHostname, :SetStaticHostname, :SetPrettyHostname, :SetIconName, :SetChassis, :SetDeployment, :SetLocation, :[], :[]=, :path, :destination, :bus, :introspect, :api, :subnodes, :introspected, :default_iface, :interfaces, :define_shortcut_methods, :has_iface?, :on_signal, :subnodes=, :introspected=, :default_iface=]
38
+ irb(main):004:0> h.Get(DBus::Systemd::Hostnamed::INTERFACE, 'Hostname').first
39
+ => "derp.localdomain"
40
+ irb(main):005:0> h.SetHostname('my-hostname.localdomain', false)
41
+ => []
42
+ irb(main):006:0> h.Get(DBus::Systemd::Hostnamed::INTERFACE, 'Hostname').first
43
+ => "my-hostname.localdomain"
44
+ ```
45
+
46
+ ### DBus::Systemd::Importd
47
+
48
+ For full docs, see [official docs](https://www.freedesktop.org/wiki/Software/systemd/importd/).
49
+
50
+ ```ruby
51
+ irb(main):007:0> im = DBus::Systemd::Importd::Manager.new
52
+ => ...
53
+ irb(main):008:0> im.object.methods - Object.methods
54
+ => [:Set, :Get, :GetAll, :ListTransfers, :Ping, :GetMachineId, :Introspect, :ImportTar, :ImportRaw, :ExportTar, :ExportRaw, :PullTar, :PullRaw, :CancelTransfer, :[], :[]=, :path, :destination, :bus, :introspect, :api, :subnodes, :introspected, :default_iface, :interfaces, :define_shortcut_methods, :has_iface?, :on_signal, :subnodes=, :introspected=, :default_iface=]
55
+ irb(main):008:0> im.PullRaw('https://dl.fedoraproject.org/pub/fedora/linux/releases/24/CloudImages/x86_64/images/Fedora-Cloud-Base-24-1.2.x86_64.raw.xz', 'Fedora-24', 'no', false)
56
+ => [1, "/org/freedesktop/import1/transfer/_1"]
57
+ > im.transfers
58
+ => [{:id=>1, :operation=>"pull-raw", :remote_file=>"https://dl.fedoraproject.org/pub/fedora/linux/releases/24/CloudImages/x86_64/images/Fedora-Cloud-Base-24-1.2.x86_64.raw.xz", :machine_name=>"Fedora-24", :progress=>0.0, :object_path=>"/org/freedesktop/import1/transfer/_1"}]
59
+ ```
60
+
61
+ ### DBus::Systemd::Localed
62
+
63
+ For full docs, see [official docs](https://www.freedesktop.org/wiki/Software/systemd/localed/).
64
+
65
+ ```ruby
66
+ irb(main):009:0> l = DBus::Systemd::Localed.new
67
+ => ...
68
+ irb(main):010:0> l.object.methods - Object.methods
69
+ => [:Set, :Get, :GetAll, :Ping, :GetMachineId, :Introspect, :SetLocale, :SetVConsoleKeyboard, :SetX11Keyboard, :[], :[]=, :path, :destination, :bus, :introspect, :api, :subnodes, :introspected, :default_iface, :interfaces, :define_shortcut_methods, :has_iface?, :on_signal, :subnodes=, :introspected=, :default_iface=]
70
+ irb(main):011:0> l.GetAll(DBus::Systemd::Localed::INTERFACE).first
71
+ => {"Locale"=>["LANG=en_US.UTF-8"], "X11Layout"=>"", "X11Model"=>"", "X11Variant"=>"", "X11Options"=>"", "VConsoleKeymap"=>"us", "VConsoleKeymapToggle"=>""}
72
+ ```
73
+
74
+ ### DBus::Systemd::Logind
75
+
76
+ For full docs, see [official docs](https://www.freedesktop.org/wiki/Software/systemd/logind/).
77
+
78
+ ```ruby
79
+ irb(main):012:0> l = DBus::Systemd::Logind::Manager.new
80
+ => ...
81
+ irb(main):013:0> l.object.methods - Object.methods
82
+ => [:Set, :Get, :GetAll, :ListSeats, :ListSessions, :ListUsers, :GetSession, :GetUser, :GetSeat, :Ping, :GetMachineId, :Introspect, :GetSessionByPID, :GetUserByPID, :ListInhibitors, :CreateSession, :ReleaseSession, :ActivateSession, :ActivateSessionOnSeat, :LockSession, :UnlockSession, :LockSessions, :UnlockSessions, :KillSession, :KillUser, :TerminateSession, :TerminateUser, :TerminateSeat, :SetUserLinger, :AttachDevice, :FlushDevices, :PowerOff, :Reboot, :Suspend, :Hibernate, :HybridSleep, :CanPowerOff, :CanReboot, :CanSuspend, :CanHibernate, :CanHybridSleep, :ScheduleShutdown, :CancelScheduledShutdown, :Inhibit, :CanRebootToFirmwareSetup, :SetRebootToFirmwareSetup, :SetWallMessage, :[], :[]=, :path, :destination, :bus, :introspect, :api, :subnodes, :introspected, :default_iface, :interfaces, :define_shortcut_methods, :has_iface?, :on_signal, :subnodes=, :introspected=, :default_iface=]
83
+ irb(main):014:0> l.users
84
+ => [{:id=>1000, :name=>"vagrant", :object_path=>"/org/freedesktop/login1/user/_1000"}]
85
+ irb(main):015:0> l.seats
86
+ => [{:id=>"seat0", :object_path=>"/org/freedesktop/login1/seat/seat0"}]
87
+ irb(main):016:0> l.sessions
88
+ => [{:id=>"3", :user_id=>1000, :user_name=>"vagrant", :seat_id=>"", :object_path=>"/org/freedesktop/login1/session/_33"}]
89
+ irb(main):017:0> u = l.user(1000)
90
+ => ...
91
+ irb(main):019:0> u.GetAll(DBus::Systemd::Logind::User::INTERFACE).first
92
+ => {"UID"=>1000, "GID"=>1000, "Name"=>"vagrant", "Timestamp"=>1475452037907590, "TimestampMonotonic"=>122159600, "RuntimePath"=>"/run/user/1000", "Service"=>"user@1000.service", "Slice"=>"user-1000.slice", "Display"=>["3", "/org/freedesktop/login1/session/_33"], "State"=>"active", "Sessions"=>[["3", "/org/freedesktop/login1/session/_33"]], "IdleHint"=>false, "IdleSinceHint"=>0, "IdleSinceHintMonotonic"=>0, "Linger"=>false}
93
+ ```
94
+
95
+ ### DBus::Systemd::Machined
96
+
97
+ For full docs, see [official docs](https://www.freedesktop.org/wiki/Software/systemd/machined/).
28
98
 
99
+ ```ruby
100
+ irb(main):021:0> mm = DBus::Systemd::Machined::Manager.new
101
+ => ...
102
+ irb(main):022:0> mm.object.methods - Object.methods
103
+ => [:Set, :Get, :GetAll, :ListMachines, :ListImages, :GetMachine, :GetImage, :Ping, :GetMachineId, :Introspect, :GetMachineByPID, :CreateMachine, :CreateMachineWithNetwork, :RegisterMachine, :RegisterMachineWithNetwork, :TerminateMachine, :KillMachine, :GetMachineAddresses, :GetMachineOSRelease, :OpenMachinePTY, :OpenMachineLogin, :OpenMachineShell, :BindMountMachine, :CopyFromMachine, :CopyToMachine, :RemoveImage, :RenameImage, :CloneImage, :MarkImageReadOnly, :SetPoolLimit, :SetImageLimit, :MapFromMachineUser, :MapToMachineUser, :MapFromMachineGroup, :MapToMachineGroup, :[], :[]=, :path, :destination, :bus, :introspect, :api, :subnodes, :introspected, :default_iface, :interfaces, :define_shortcut_methods, :has_iface?, :on_signal, :subnodes=, :introspected=, :default_iface=]
104
+ irb(main):024:0> mm.machines
105
+ => [{:name=>".host", :class=>"host", :service_id=>"", :object_path=>"/org/freedesktop/machine1/machine/_2ehost"}]
106
+ irb(main):023:0> mm.images
107
+ => [{:name=>"Fedora-23", :type=>"raw", :read_only=>false, :creation_time=>1446171608000000, :modification_time=>1446171608000000, :disk_space=>589676544, :object_path=>"/org/freedesktop/machine1/image/Fedora_2d23"}, {:name=>".raw-https:\\x2f\\x2fdl\\x2efedoraproject\\x2eorg\\x2fpub\\x2ffedora\\x2flinux\\x2freleases\\x2f24\\x2fCloudImages\\x2fx86_64\\x2fimages\\x2fFedora-Cloud-Base-24-1\\x2e2\\x2ex86_64\\x2eraw\\x2exz.\\x227fef0a4-5353f9c7441a0\\x22", :type=>"raw", :read_only=>true, :creation_time=>1465922207000000, :modification_time=>1465922207000000, :disk_space=>540872704, :object_path=>"/org/freedesktop/machine1/image/_2eraw_2dhttps_3a_5cx2f_5cx2fdl_5cx2efedoraproject_5cx2eorg_5cx2fpub_5cx2ffedora_5cx2flinux_5cx2freleases_5cx2f24_5cx2fCloudImages_5cx2fx86_5f64_5cx2fimages_5cx2fFedora_2dCloud_2dBase_2d24_2d1_5cx2e2_5cx2ex86_5f64_5cx2eraw_5cx2exz_2e_5cx227fef0a4_2d5353f9c7441a0_5cx22"}, {:name=>".raw-https:\\x2f\\x2fdl\\x2efedoraproject\\x2eorg\\x2fpub\\x2ffedora\\x2flinux\\x2freleases\\x2f23\\x2fCloud\\x2fx86_64\\x2fImages\\x2fFedora-Cloud-Base-23-20151030\\x2ex86_64\\x2eraw\\x2exz.\\x229205894-5234910faa600\\x22", :type=>"raw", :read_only=>true, :creation_time=>1446171608000000, :modification_time=>1446171608000000, :disk_space=>589676544, :object_path=>"/org/freedesktop/machine1/image/_2eraw_2dhttps_3a_5cx2f_5cx2fdl_5cx2efedoraproject_5cx2eorg_5cx2fpub_5cx2ffedora_5cx2flinux_5cx2freleases_5cx2f23_5cx2fCloud_5cx2fx86_5f64_5cx2fImages_5cx2fFedora_2dCloud_2dBase_2d23_2d20151030_5cx2ex86_5f64_5cx2eraw_5cx2exz_2e_5cx229205894_2d5234910faa600_5cx22"}, {:name=>"Fedora-24", :type=>"raw", :read_only=>false, :creation_time=>1465922207000000, :modification_time=>1465922207000000, :disk_space=>540872704, :object_path=>"/org/freedesktop/machine1/image/Fedora_2d24"}, {:name=>"test", :type=>"raw", :read_only=>false, :creation_time=>1446171608000000, :modification_time=>1446171608000000, :disk_space=>589676544, :object_path=>"/org/freedesktop/machine1/image/test"}, {:name=>".host", :type=>"directory", :read_only=>false, :creation_time=>0, :modification_time=>0, :disk_space=>18446744073709551615, :object_path=>"/org/freedesktop/machine1/image/_2ehost"}]
108
+ irb(main):025:0> mm.GetAll(DBus::Systemd::Machined::Manager::INTERFACE).first
109
+ => {"PoolPath"=>"/var/lib/machines", "PoolUsage"=>1191448576, "PoolLimit"=>2105020416}
110
+ irb(main):026:0> mi = mm.image('Fedora-24')
111
+ => ...
112
+ irb(main):027:0> mi.object.methods - Object.methods
113
+ => [:Set, :Get, :GetAll, :Ping, :GetMachineId, :Introspect, :Remove, :Rename, :Clone, :MarkReadOnly, :SetLimit, :[], :[]=, :path, :destination, :bus, :introspect, :api, :subnodes, :introspected, :default_iface, :interfaces, :define_shortcut_methods, :has_iface?, :on_signal, :subnodes=, :introspected=, :default_iface=]
114
+ irb(main):028:0> mi.GetAll(DBus::Systemd::Machined::Image::INTERFACE).first
115
+ => {"Name"=>"Fedora-24", "Path"=>"/var/lib/machines/Fedora-24.raw", "Type"=>"raw", "ReadOnly"=>false, "CreationTimestamp"=>1465922207000000, "ModificationTimestamp"=>1465922207000000, "Usage"=>540872704, "Limit"=>3221225472, "UsageExclusive"=>540872704, "LimitExclusive"=>3221225472}
116
+ irb(main):029:0> machine = mm.machine('.host')
117
+ => ..
118
+ irb(main):030:0> machine.object.methods - Object.methods
119
+ => [:Set, :Get, :GetAll, :Kill, :Ping, :GetMachineId, :Introspect, :Terminate, :GetAddresses, :GetOSRelease, :OpenPTY, :OpenLogin, :OpenShell, :BindMount, :CopyFrom, :CopyTo, :[], :[]=, :path, :destination, :bus, :introspect, :api, :subnodes, :introspected, :default_iface, :interfaces, :define_shortcut_methods, :has_iface?, :on_signal, :subnodes=, :introspected=, :default_iface=]
120
+ irb(main):032:0> machine.GetAll(DBus::Systemd::Machined::Machine::INTERFACE).first
121
+ => {"Name"=>".host", "Id"=>[77, 46, 68, 242, 105, 232, 78, 52, 157, 152, 76, 171, 175, 145, 140, 130], "Timestamp"=>1475451915747985, "TimestampMonotonic"=>0, "Service"=>"", "Unit"=>"-.slice", "Leader"=>1, "Class"=>"host", "RootDirectory"=>"/", "NetworkInterfaces"=>[], "State"=>"running"}
122
+ ```
123
+
124
+ ### DBus::Systemd::Resolved
125
+
126
+ For full docs, see [official docs](https://www.freedesktop.org/wiki/Software/systemd/resolved/).
127
+
128
+ ```ruby
129
+ irb(main):030:0> rm = DBus::Systemd::Resolved::Manager.new
130
+ => ...
131
+ irb(main):030:0> rm.object.methods - Object.methods
132
+ => [:Set, :Get, :GetAll, :Ping, :GetMachineId, :Introspect, :GetLink, :ResolveHostname, :ResolveAddress, :ResolveRecord, :ResolveService, :ResetStatistics, :SetLinkDNS, :SetLinkDomains, :SetLinkLLMNR, :SetLinkMulticastDNS, :SetLinkDNSSEC, :SetLinkDNSSECNegativeTrustAnchors, :RevertLink, :[], :[]=, :path, :destination, :bus, :introspect, :api, :subnodes, :introspected, :default_iface, :interfaces, :define_shortcut_methods, :has_iface?, :on_signal, :subnodes=, :introspected=, :default_iface=]
133
+ irb(main):030:0> rm.Get(DBus::Resolved::Manager::INTERFACE, 'DNSSECSupported').first
134
+ => false
135
+ ```
136
+
137
+ ### DBus::Systemd::Timedated
138
+
139
+ For full docs, see [official docs](https://www.freedesktop.org/wiki/Software/systemd/timedated/).
140
+
141
+ ```ruby
142
+ irb(main):030:0> t = DBus::Systemd::Timedated.new
143
+ => ...
144
+ irb(main):030:0> t.object.methods - Object.methods
145
+ => [:Set, :Get, :GetAll, :Ping, :GetMachineId, :Introspect, :SetTime, :SetTimezone, :SetLocalRTC, :SetNTP, :[], :[]=, :path, :destination, :bus, :introspect, :api, :subnodes, :introspected, :default_iface, :interfaces, :define_shortcut_methods, :has_iface?, :on_signal, :subnodes=, :introspected=, :default_iface=]
146
+ irb(main):030:0> t.GetAll(DBus::Systemd::Timedated::INTERFACE).first
147
+ => {"Timezone"=>"UTC", "LocalRTC"=>true, "CanNTP"=>true, "NTP"=>false, "NTPSynchronized"=>true, "TimeUSec"=>1475454744352557, "RTCTimeUSec"=>1475454742000000}
148
+ irb(main):030:0> t.SetTimezone('America/Los_Angeles', false)
149
+ => []
150
+ irb(main):030:0> t.Get(DBus::Systemd::Timedated::INTERFACE, 'Timezone').first
151
+ => "America/Los_Angeles"
152
+ ```
153
+
154
+ ### DBus::Systemd::Manager
155
+
156
+ For full docs, see [official docs](https://www.freedesktop.org/wiki/Software/systemd/dbus/).
157
+
158
+ ```ruby
159
+ irb(main):030:0> mgr = DBus::Systemd::Manager.new
160
+ => ...
161
+ irb(main):030:0> mgr.object.methods - Object.methods
162
+ => [:Set, :Get, :ListUnits, :GetAll, :GetUnit, :GetJob, :Ping, :GetMachineId, :Introspect, :GetUnitByPID, :LoadUnit, :StartUnit, :StartUnitReplace, :StopUnit, :ReloadUnit, :RestartUnit, :TryRestartUnit, :ReloadOrRestartUnit, :ReloadOrTryRestartUnit, :KillUnit, :ResetFailedUnit, :SetUnitProperties, :StartTransientUnit, :CancelJob, :ClearJobs, :ResetFailed, :ListUnitsFiltered, :ListJobs, :Subscribe, :Unsubscribe, :Dump, :CreateSnapshot, :RemoveSnapshot, :Reload, :Reexecute, :Exit, :Reboot, :PowerOff, :Halt, :KExec, :SwitchRoot, :SetEnvironment, :UnsetEnvironment, :UnsetAndSetEnvironment, :ListUnitFiles, :GetUnitFileState, :EnableUnitFiles, :DisableUnitFiles, :ReenableUnitFiles, :LinkUnitFiles, :PresetUnitFiles, :PresetUnitFilesWithMode, :MaskUnitFiles, :UnmaskUnitFiles, :SetDefaultTarget, :GetDefaultTarget, :PresetAllUnitFiles, :AddDependencyUnitFiles, :SetExitCode, :[], :[]=, :path, :destination, :bus, :introspect, :api, :subnodes, :introspected, :default_iface, :interfaces, :define_shortcut_methods, :has_iface?, :on_signal, :subnodes=, :introspected=, :default_iface=]
163
+ irb(main):030:0> mgr.GetDefaultTarget.first
164
+ => "multi-user.target"
165
+ irb(main):036:0> mgr.Get(DBus::Systemd::Manager::INTERFACE, 'Version').first
166
+ => "229"
167
+ irb(main):037:0> mgr.Get(DBus::Systemd::Manager::INTERFACE, 'UnitPath').first
168
+ => ["/etc/systemd/system", "/run/systemd/system", "/run/systemd/generator", "/usr/local/lib/systemd/system", "/usr/lib/systemd/system", "/run/systemd/generator.late"]
169
+ irb(main):038:0> mgr.Get(DBus::Systemd::Manager::INTERFACE, 'NFailedUnits').first
170
+ => 0
171
+ ```
172
+
173
+ ### DBus::Systemd::Unit
174
+
175
+ For full docs, see [official docs](https://www.freedesktop.org/wiki/Software/systemd/dbus/).
176
+
177
+ ```ruby
178
+ irb(main):005:0> sshd = DBus::Systemd::Unit.new('sshd.service')
179
+ => ...
180
+ irb(main):006:0> sshd.object.methods - Object.methods
181
+ => [:Set, :Get, :GetAll, :Kill, :Ping, :GetMachineId, :Introspect, :ResetFailed, :Reload, :Start, :Stop, :Restart, :TryRestart, :ReloadOrRestart, :ReloadOrTryRestart, :SetProperties, :[], :[]=, :path, :destination, :bus, :introspect, :api, :subnodes, :introspected, :default_iface, :interfaces, :define_shortcut_methods, :has_iface?, :on_signal, :subnodes=, :introspected=, :default_iface=]
182
+ irb(main):007:0> sshd.Get(DBus::Systemd::Unit::INTERFACE, 'Wants').first
183
+ => ["sshd-keygen.target"]
184
+ irb(main):008:0> sshd.Get(DBus::Systemd::Unit::Service::INTERFACE, 'ExecStart').first
185
+ => [["/usr/sbin/sshd", ["/usr/sbin/sshd", "$OPTIONS"], false, 1475455155565079, 3239817089, 1475455155581392, 3239833403, 5860, 1, 0]]
186
+ irb(main):010:0> sshd.Restart('replace')
187
+ => ["/org/freedesktop/systemd1/job/3326"]
188
+ ```
29
189
 
30
190
  ## Development
31
191
 
@@ -0,0 +1,9 @@
1
+ ~~systemd: https://www.freedesktop.org/wiki/Software/systemd/dbus/~~
2
+ ~~logind: https://www.freedesktop.org/wiki/Software/systemd/logind/~~
3
+ ~~machined: https://www.freedesktop.org/wiki/Software/systemd/machined/~~
4
+ ~~importd: https://wiki.freedesktop.org/www/Software/systemd/importd/~~
5
+ ~~hostnamed: https://www.freedesktop.org/wiki/Software/systemd/hostnamed/~~
6
+ ~~localed: https://www.freedesktop.org/wiki/Software/systemd/localed/~~
7
+ ~~timedated: https://www.freedesktop.org/wiki/Software/systemd/timedated/~~
8
+ networkd: ??
9
+ ~~resolved: https://www.freedesktop.org/wiki/Software/systemd/resolved/~~
@@ -1,11 +1,12 @@
1
1
  # -*- mode: ruby -*-
2
2
  # vi: set ft=ruby :
3
3
 
4
- Vagrant.configure("2") do |config|
5
- config.vm.box = "bento/fedora-24"
4
+ Vagrant.configure('2') do |config|
5
+ config.vm.box = 'bento/fedora-24'
6
+ config.vm.box_version = '2.2.9'
6
7
  config.vm.box_check_update = true
7
8
 
8
9
  config.vm.provision "shell", inline: <<-SHELL
9
- dnf install -y git ruby rubygem-bundler
10
+ dnf install -y git ruby rubygem-bundler systemd-container btrfs-progs
10
11
  SHELL
11
12
  end
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
  spec.email = ["nath.e.will@gmail.com"]
11
11
 
12
12
  spec.summary = 'library for interfacing with systemd over dbus'
13
- spec.description = spec.summary
13
+ spec.description = IO.read(File.join(File.dirname(__FILE__), 'README.md'))
14
14
  spec.homepage = "https://github.com/nathwill/ruby-dbus-systemd"
15
15
  spec.license = "MIT"
16
16
 
@@ -1,22 +1,13 @@
1
- require 'dbus'
2
-
3
- module DBus
4
- module Systemd
5
- INTERFACE = 'org.freedesktop.systemd1'
6
-
7
- def system_bus
8
- DBus::SystemBus.instance
9
- end
10
-
11
- def session_bus
12
- DBus::SessionBus.instance
13
- end
14
-
15
- module_function :system_bus, :session_bus
16
- end
17
- end
18
-
19
- require_relative 'systemd/version'
1
+ require_relative 'systemd/helpers'
2
+ require_relative 'systemd/hostnamed'
3
+ require_relative 'systemd/importd'
4
+ require_relative 'systemd/job'
5
+ require_relative 'systemd/localed'
6
+ require_relative 'systemd/logind'
7
+ require_relative 'systemd/machined'
20
8
  require_relative 'systemd/manager'
9
+ require_relative 'systemd/mixin'
10
+ require_relative 'systemd/resolved'
11
+ require_relative 'systemd/timedated'
21
12
  require_relative 'systemd/unit'
22
- require_relative 'systemd/job'
13
+ require_relative 'systemd/version'
@@ -0,0 +1,27 @@
1
+ require 'dbus'
2
+
3
+ module DBus
4
+ module Systemd
5
+ module Helpers
6
+ def system_bus
7
+ DBus::SystemBus.instance
8
+ end
9
+
10
+ def session_bus
11
+ DBus::SessionBus.instance
12
+ end
13
+
14
+ def map_array(array, map)
15
+ mapped = {}
16
+
17
+ array.each_with_index do |item, index|
18
+ mapped[map.key(index)] = item
19
+ end
20
+
21
+ mapped
22
+ end
23
+
24
+ module_function :system_bus, :session_bus, :map_array
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,25 @@
1
+ #
2
+ # See docs for full API description:
3
+ # https://www.freedesktop.org/wiki/Software/systemd/hostnamed/
4
+ #
5
+ require_relative 'helpers'
6
+ require_relative 'mixin'
7
+
8
+ module DBus
9
+ module Systemd
10
+ class Hostnamed
11
+ NODE = '/org/freedesktop/hostname1'
12
+ INTERFACE = 'org.freedesktop.hostname1'
13
+
14
+ include Mixin::MethodMissing
15
+
16
+ attr_reader :service
17
+
18
+ def initialize(bus = Helpers.system_bus)
19
+ @service = bus.service(INTERFACE)
20
+ @object = @service.object(NODE)
21
+ .tap(&:introspect)
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,6 @@
1
+ #
2
+ # See docs for full API description:
3
+ # https://www.freedesktop.org/wiki/Software/systemd/importd/
4
+ #
5
+ require_relative 'importd/manager'
6
+ require_relative 'importd/transfer'
@@ -0,0 +1,53 @@
1
+ require_relative '../helpers'
2
+ require_relative '../mixin'
3
+ require_relative 'transfer'
4
+
5
+ module DBus
6
+ module Systemd
7
+ module Importd
8
+ INTERFACE = 'org.freedesktop.import1'
9
+
10
+ class Manager
11
+ NODE = '/org/freedesktop/import1'
12
+ INTERFACE = 'org.freedesktop.import1.Manager'
13
+
14
+ TRANSFER_INDICES = {
15
+ id: 0,
16
+ operation: 1,
17
+ remote_file: 2,
18
+ machine_name: 3,
19
+ progress: 4,
20
+ object_path: 5
21
+ }
22
+
23
+ include Systemd::Mixin::MethodMissing
24
+
25
+ attr_reader :service
26
+
27
+ def initialize(bus = Systemd::Helpers.system_bus)
28
+ @service = bus.service(Importd::INTERFACE)
29
+ @object = @service.object(NODE)
30
+ .tap(&:introspect)
31
+ end
32
+
33
+ def transfers
34
+ self.ListTransfers.first.map { |t| map_transfer(t) }
35
+ end
36
+
37
+ def transfer(id)
38
+ Transfer.new(id, self)
39
+ end
40
+
41
+ def get_transfer_by_path(path)
42
+ obj = @service.object(path)
43
+ .tap(&:introspect)
44
+ Transfer.new(obj.Get(Transfer::INTERFACE, 'Id').first, self)
45
+ end
46
+
47
+ def map_transfer(transfer_array)
48
+ Systemd::Helpers.map_array(transfer_array, TRANSFER_INDICES)
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,19 @@
1
+ require_relative '../mixin'
2
+ require_relative 'manager'
3
+
4
+ module DBus
5
+ module Systemd
6
+ module Importd
7
+ class Transfer
8
+ INTERFACE = 'org.freedesktop.import1.Transfer'
9
+
10
+ include Systemd::Mixin::MethodMissing
11
+
12
+ def initialize(id, manager = Manager.new)
13
+ @object = manager.service.object("#{Manager::NODE}/transfer/_#{id}")
14
+ .tap(&:introspect)
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -1,12 +1,12 @@
1
- require_relative 'method_missing'
2
1
  require_relative 'manager'
2
+ require_relative 'mixin'
3
3
 
4
4
  module DBus
5
5
  module Systemd
6
6
  class Job
7
7
  INTERFACE = 'org.freedesktop.systemd1.Job'
8
8
 
9
- include MethodMissing
9
+ include Mixin::MethodMissing
10
10
 
11
11
  def initialize(id, manager = Manager.new)
12
12
  job_path = manager.GetJob(id).first
@@ -0,0 +1,25 @@
1
+ #
2
+ # See docs for full API description:
3
+ # https://www.freedesktop.org/wiki/Software/systemd/localed/
4
+ #
5
+ require_relative 'helpers'
6
+ require_relative 'mixin'
7
+
8
+ module DBus
9
+ module Systemd
10
+ class Localed
11
+ NODE = '/org/freedesktop/locale1'
12
+ INTERFACE = 'org.freedesktop.locale1'
13
+
14
+ include Mixin::MethodMissing
15
+
16
+ attr_reader :service
17
+
18
+ def initialize(bus = Helpers.system_bus)
19
+ @service = bus.service(INTERFACE)
20
+ @object = @service.object(NODE)
21
+ .tap(&:introspect)
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,8 @@
1
+ #
2
+ # See docs for full API description:
3
+ # https://www.freedesktop.org/wiki/Software/systemd/logind/
4
+ #
5
+ require_relative 'logind/manager'
6
+ require_relative 'logind/seat'
7
+ require_relative 'logind/user'
8
+ require_relative 'logind/session'
@@ -0,0 +1,110 @@
1
+ require_relative '../helpers'
2
+ require_relative '../mixin'
3
+ require_relative 'session'
4
+ require_relative 'user'
5
+ require_relative 'seat'
6
+
7
+ module DBus
8
+ module Systemd
9
+ module Logind
10
+ INTERFACE = 'org.freedesktop.login1'
11
+
12
+ class Manager
13
+ NODE = '/org/freedesktop/login1'
14
+ INTERFACE = 'org.freedesktop.login1.Manager'
15
+
16
+ SESSION_INDICES = {
17
+ id: 0,
18
+ user_id: 1,
19
+ user_name: 2,
20
+ seat_id: 3,
21
+ object_path: 4
22
+ }
23
+
24
+ USER_INDICES = {
25
+ id: 0,
26
+ name: 1,
27
+ object_path: 2
28
+ }
29
+
30
+ SEAT_INDICES = {
31
+ id: 0,
32
+ object_path: 1
33
+ }
34
+
35
+ INHIBITOR_INDICES = {
36
+ what: 0,
37
+ who: 1,
38
+ why: 2,
39
+ mode: 3,
40
+ user_id: 4,
41
+ process_id: 5
42
+ }
43
+
44
+ include Systemd::Mixin::MethodMissing
45
+
46
+ attr_reader :service
47
+
48
+ def initialize(bus = Systemd::Helpers.system_bus)
49
+ @service = bus.service(Logind::INTERFACE)
50
+ @object = @service.object(NODE)
51
+ .tap(&:introspect)
52
+ end
53
+
54
+ def seats
55
+ self.ListSeats.first.map { |s| map_seat(s) }
56
+ end
57
+
58
+ def seat(id)
59
+ Seat.new(id, self)
60
+ end
61
+
62
+ def get_seat_by_path(path)
63
+ obj = @service.object(path)
64
+ .tap(&:introspect)
65
+ Seat.new(obj.Get(Seat::INTERFACE, 'Id').first, self)
66
+ end
67
+
68
+ def map_seat(seat_array)
69
+ Systemd::Helpers.map_array(seat_array, SEAT_INDICES)
70
+ end
71
+
72
+ def sessions
73
+ self.ListSessions.first.map { |s| map_session(s) }
74
+ end
75
+
76
+ def session(id)
77
+ Session.new(id, self)
78
+ end
79
+
80
+ def get_session_by_path(path)
81
+ obj = @service.object(path)
82
+ .tap(&:introspect)
83
+ Session.new(obj.Get(Session::INTERFACE, 'Id').first, self)
84
+ end
85
+
86
+ def map_session(session_array)
87
+ Systemd::Helpers.map_array(session_array, SESSION_INDICES)
88
+ end
89
+
90
+ def users
91
+ self.ListUsers.first.map { |u| map_user(u) }
92
+ end
93
+
94
+ def user(id)
95
+ User.new(id, self)
96
+ end
97
+
98
+ def get_user_by_path(path)
99
+ obj = @service.object(path)
100
+ .tap(&:introspect)
101
+ User.new(obj.Get(User::INTERFACE, 'Id').first, self)
102
+ end
103
+
104
+ def map_user(user_array)
105
+ Systemd::Helpers.map_array(user_array, USER_INDICES)
106
+ end
107
+ end
108
+ end
109
+ end
110
+ end
@@ -0,0 +1,20 @@
1
+ require_relative '../mixin'
2
+ require_relative 'manager'
3
+
4
+ module DBus
5
+ module Systemd
6
+ module Logind
7
+ class Seat
8
+ INTERFACE = 'org.freedesktop.login1.Seat'
9
+
10
+ include Systemd::Mixin::MethodMissing
11
+
12
+ def initialize(id, manager = Manager.new)
13
+ seat_path = manager.GetSeat(id).first
14
+ @object = manager.service.object(seat_path)
15
+ .tap(&:introspect)
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ require_relative '../mixin'
2
+ require_relative 'manager'
3
+
4
+ module DBus
5
+ module Systemd
6
+ module Logind
7
+ class Session
8
+ INTERFACE = 'org.freedesktop.login1.Session'
9
+
10
+ include Systemd::Mixin::MethodMissing
11
+
12
+ def initialize(id, manager = Manager.new)
13
+ session_path = manager.GetSession(id).first
14
+ @object = manager.service.object(session_path)
15
+ .tap(&:introspect)
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ require_relative '../mixin'
2
+ require_relative 'manager'
3
+
4
+ module DBus
5
+ module Systemd
6
+ module Logind
7
+ class User
8
+ INTERFACE = 'org.freedesktop.login1.User'
9
+
10
+ include Systemd::Mixin::MethodMissing
11
+
12
+ def initialize(id, manager = Manager.new)
13
+ user_path = manager.GetUser(id).first
14
+ @object = manager.service.object(user_path)
15
+ .tap(&:introspect)
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,6 @@
1
+ #
2
+ # See docs for full API description:
3
+ # https://www.freedesktop.org/wiki/Software/systemd/machined/
4
+ #
5
+ require_relative 'machined/manager'
6
+ require_relative 'machined/machine'
@@ -0,0 +1,20 @@
1
+ require_relative '../mixin'
2
+ require_relative 'manager'
3
+
4
+ module DBus
5
+ module Systemd
6
+ module Machined
7
+ class Image
8
+ INTERFACE = 'org.freedesktop.machine1.Image'
9
+
10
+ include Systemd::Mixin::MethodMissing
11
+
12
+ def initialize(name, manager = Manager.new)
13
+ image_path = manager.GetImage(name).first
14
+ @object = manager.service.object(image_path)
15
+ .tap(&:introspect)
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ require_relative '../mixin'
2
+ require_relative 'manager'
3
+
4
+ module DBus
5
+ module Systemd
6
+ module Machined
7
+ class Machine
8
+ INTERFACE = 'org.freedesktop.machine1.Machine'
9
+
10
+ include Systemd::Mixin::MethodMissing
11
+
12
+ def initialize(name, manager = Manager.new)
13
+ machine_path = manager.GetMachine(name).first
14
+ @object = manager.service.object(machine_path)
15
+ .tap(&:introspect)
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,80 @@
1
+ require_relative '../helpers'
2
+ require_relative '../mixin'
3
+ require_relative 'machine'
4
+ require_relative 'image'
5
+
6
+ module DBus
7
+ module Systemd
8
+ module Machined
9
+ INTERFACE = 'org.freedesktop.machine1'
10
+
11
+ class Manager
12
+ NODE = '/org/freedesktop/machine1'
13
+ INTERFACE = 'org.freedesktop.machine1.Manager'
14
+
15
+ MACHINE_INDICES = {
16
+ name: 0,
17
+ class: 1,
18
+ service_id: 2,
19
+ object_path: 3
20
+ }
21
+
22
+ IMAGE_INDICES = {
23
+ name: 0,
24
+ type: 1,
25
+ read_only: 2,
26
+ creation_time: 3,
27
+ modification_time: 4,
28
+ disk_space: 5,
29
+ object_path: 6
30
+ }
31
+
32
+ include Systemd::Mixin::MethodMissing
33
+
34
+ attr_reader :service
35
+
36
+ def initialize(bus = Systemd::Helpers.system_bus)
37
+ @service = bus.service(Machined::INTERFACE)
38
+ @object = @service.object(NODE)
39
+ .tap(&:introspect)
40
+ end
41
+
42
+ def machines
43
+ self.ListMachines.first.map { |m| map_machine(m) }
44
+ end
45
+
46
+ def machine(name)
47
+ Machine.new(name, self)
48
+ end
49
+
50
+ def get_machine_by_path(path)
51
+ obj = @service.object(path)
52
+ .tap(&:introspect)
53
+ Machine.new(obj.Get(Machine::INTERFACE, 'Name').first, self)
54
+ end
55
+
56
+ def map_machine(machine_array)
57
+ Systemd::Helpers.map_array(machine_array, MACHINE_INDICES)
58
+ end
59
+
60
+ def images
61
+ self.ListImages.first.map { |i| map_image(i) }
62
+ end
63
+
64
+ def image(name)
65
+ Image.new(name, self)
66
+ end
67
+
68
+ def get_image_by_path(path)
69
+ obj = @service.object(path)
70
+ .tap(&:introspect)
71
+ Image.new(obj.Get(Image::INTERFACE, 'Name').first, self)
72
+ end
73
+
74
+ def map_image(image_array)
75
+ Systemd::Helpers.map_array(image_array, IMAGE_INDICES)
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end
@@ -1,11 +1,18 @@
1
- require_relative 'method_missing'
2
- require_relative '../systemd'
1
+ #
2
+ # See docs for full API description:
3
+ # https://www.freedesktop.org/wiki/Software/systemd/dbus/
4
+ #
5
+ require_relative 'helpers'
6
+ require_relative 'mixin'
3
7
  require_relative 'unit'
8
+ require_relative 'job'
4
9
 
5
10
  module DBus
6
11
  module Systemd
12
+ INTERFACE = 'org.freedesktop.systemd1'
13
+
7
14
  class Manager
8
- OBJECT = '/org/freedesktop/systemd1'
15
+ NODE = '/org/freedesktop/systemd1'
9
16
  INTERFACE = 'org.freedesktop.systemd1.Manager'
10
17
 
11
18
  UNIT_INDICES = {
@@ -30,18 +37,18 @@ module DBus
30
37
  unit_object_path: 5
31
38
  }
32
39
 
33
- include MethodMissing
40
+ include Mixin::MethodMissing
34
41
 
35
42
  attr_reader :service
36
43
 
37
- def initialize(bus = Systemd.system_bus)
44
+ def initialize(bus = Systemd::Helpers.system_bus)
38
45
  @service = bus.service(Systemd::INTERFACE)
39
- @object = @service.object(OBJECT)
46
+ @object = @service.object(NODE)
40
47
  .tap(&:introspect)
41
48
  end
42
49
 
43
50
  def units
44
- @object.ListUnits.first.map { |u| map_unit(u) }
51
+ self.ListUnits.first.map { |u| map_unit(u) }
45
52
  end
46
53
 
47
54
  def unit(name)
@@ -55,13 +62,11 @@ module DBus
55
62
  end
56
63
 
57
64
  def map_unit(unit_array)
58
- mapped = {}
59
-
60
- unit_array.each_with_index do |item, index|
61
- mapped[UNIT_INDICES.key(index)] = item
62
- end
65
+ Helpers.map_array(unit_array, UNIT_INDICES)
66
+ end
63
67
 
64
- mapped
68
+ def jobs
69
+ self.ListJobs.first.map { |j| map_job(j) }
65
70
  end
66
71
 
67
72
  def job(id)
@@ -75,13 +80,7 @@ module DBus
75
80
  end
76
81
 
77
82
  def map_job(job_array)
78
- mapped = {}
79
-
80
- job_array.each_with_index do |item, index|
81
- mapped[JOB_INDICES.key(index)] = item
82
- end
83
-
84
- mapped
83
+ Helpers.map_array(job_array, JOB_INDICES)
85
84
  end
86
85
  end
87
86
  end
@@ -0,0 +1,21 @@
1
+ module DBus
2
+ module Systemd
3
+ module Mixin
4
+ module MethodMissing
5
+ attr_reader :object
6
+
7
+ def method_missing(name, *args, &blk)
8
+ if @object.respond_to?(name)
9
+ @object.send(name, *args, &blk)
10
+ else
11
+ super
12
+ end
13
+ end
14
+
15
+ def respond_to_missing?(*args)
16
+ @object.respond_to?(*args) || super
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,6 @@
1
+ #
2
+ # See docs for full API description:
3
+ # https://www.freedesktop.org/wiki/Software/systemd/resolved/
4
+ #
5
+ require_relative 'resolved/manager'
6
+ require_relative 'resolved/link'
@@ -0,0 +1,20 @@
1
+ require_relative '../mixin'
2
+ require_relative 'manager'
3
+
4
+ module DBus
5
+ module Systemd
6
+ module Resolved
7
+ class Link
8
+ INTERFACE = 'org.freedesktop.resolve1.Link'
9
+
10
+ include Systemd::Mixin::MethodMissing
11
+
12
+ def initialize(id, manager = Manager.new)
13
+ link_path = manager.GetLink(id).first
14
+ @object = manager.service.object(link_path)
15
+ .tap(&:introspect)
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,26 @@
1
+ require_relative '../helpers'
2
+ require_relative '../mixin'
3
+ require_relative 'link'
4
+
5
+ module DBus
6
+ module Systemd
7
+ module Resolved
8
+ INTERFACE = 'org.freedesktop.resolve1'
9
+
10
+ class Manager
11
+ NODE = '/org/freedesktop/resolve1'
12
+ INTERFACE = 'org.freedesktop.resolve1.Manager'
13
+
14
+ include Systemd::Mixin::MethodMissing
15
+
16
+ attr_reader :service
17
+
18
+ def initialize(bus = Systemd::Helpers.system_bus)
19
+ @service = bus.service(Resolved::INTERFACE)
20
+ @object = @service.object(NODE)
21
+ .tap(&:introspect)
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,21 @@
1
+ require_relative 'helpers'
2
+ require_relative 'mixin'
3
+
4
+ module DBus
5
+ module Systemd
6
+ class Timedated
7
+ NODE = '/org/freedesktop/timedate1'
8
+ INTERFACE = 'org.freedesktop.timedate1'
9
+
10
+ include Mixin::MethodMissing
11
+
12
+ attr_reader :service
13
+
14
+ def initialize(bus = Helpers.system_bus)
15
+ @service = bus.service(INTERFACE)
16
+ @object = @service.object(NODE)
17
+ .tap(&:introspect)
18
+ end
19
+ end
20
+ end
21
+ end
@@ -1,12 +1,12 @@
1
- require_relative 'method_missing'
2
1
  require_relative 'manager'
2
+ require_relative 'mixin'
3
3
 
4
4
  module DBus
5
5
  module Systemd
6
6
  class Unit
7
7
  INTERFACE = 'org.freedesktop.systemd1.Unit'
8
8
 
9
- include MethodMissing
9
+ include Mixin::MethodMissing
10
10
 
11
11
  def initialize(name, manager = Manager.new)
12
12
  unit_path = manager.GetUnit(name).first
@@ -3,7 +3,7 @@ require_relative '../unit'
3
3
  module DBus::Systemd
4
4
  class Unit
5
5
  class Automount < Unit
6
- INTERFACE = 'org.freedesktop.systemd1.Service'
6
+ INTERFACE = 'org.freedesktop.systemd1.Automount'
7
7
  end
8
8
  end
9
9
  end
@@ -1,5 +1,5 @@
1
1
  module DBus
2
2
  module Systemd
3
- VERSION = '0.4.0'
3
+ VERSION = '0.5.0'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dbus-systemd
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Williams
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-10-02 00:00:00.000000000 Z
11
+ date: 2016-10-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ruby-dbus
@@ -66,7 +66,173 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '3.0'
69
- description: library for interfacing with systemd over dbus
69
+ description: "# DBus::Systemd\n\nRuby library for simplifying access to systemd dbus
70
+ interfaces.\n\nRecommended Reading\n\n - [introduction to d-bus concepts section
71
+ of sd-bus announcement blog post](http://0pointer.net/blog/the-new-sd-bus-api-of-systemd.html)\n
72
+ \ - [systemd D-Bus specification](https://www.freedesktop.org/wiki/Software/systemd/dbus/)\n
73
+ \ - [D-Bus specification](https://dbus.freedesktop.org/doc/dbus-specification.html)\n
74
+ \ \n## Installation\n\nAdd this line to your application's Gemfile:\n\n```ruby\ngem
75
+ 'dbus-systemd'\n```\n\nAnd then execute:\n\n $ bundle\n\nOr install it yourself
76
+ as:\n\n $ gem install dbus-systemd\n\n## Usage\n\n### DBus::Systemd::Hostnamed\n\nFor
77
+ full docs, see [official docs](https://www.freedesktop.org/wiki/Software/systemd/hostnamed/).\n\n```ruby\nirb(main):001:0>
78
+ h = DBus::Systemd::Hostnamed.new\n=> ...\nirb(main):002:0> h.object.methods - Object.methods\n=>
79
+ [:Set, :Get, :GetAll, :Ping, :GetMachineId, :Introspect, :SetHostname, :SetStaticHostname,
80
+ :SetPrettyHostname, :SetIconName, :SetChassis, :SetDeployment, :SetLocation, :[],
81
+ :[]=, :path, :destination, :bus, :introspect, :api, :subnodes, :introspected, :default_iface,
82
+ :interfaces, :define_shortcut_methods, :has_iface?, :on_signal, :subnodes=, :introspected=,
83
+ :default_iface=]\nirb(main):004:0> h.Get(DBus::Systemd::Hostnamed::INTERFACE, 'Hostname').first\n=>
84
+ \"derp.localdomain\"\nirb(main):005:0> h.SetHostname('my-hostname.localdomain',
85
+ false)\n=> []\nirb(main):006:0> h.Get(DBus::Systemd::Hostnamed::INTERFACE, 'Hostname').first\n=>
86
+ \"my-hostname.localdomain\"\n```\n\n### DBus::Systemd::Importd\n\nFor full docs,
87
+ see [official docs](https://www.freedesktop.org/wiki/Software/systemd/importd/).\n\n```ruby\nirb(main):007:0>
88
+ im = DBus::Systemd::Importd::Manager.new\n=> ...\nirb(main):008:0> im.object.methods
89
+ - Object.methods\n=> [:Set, :Get, :GetAll, :ListTransfers, :Ping, :GetMachineId,
90
+ :Introspect, :ImportTar, :ImportRaw, :ExportTar, :ExportRaw, :PullTar, :PullRaw,
91
+ :CancelTransfer, :[], :[]=, :path, :destination, :bus, :introspect, :api, :subnodes,
92
+ :introspected, :default_iface, :interfaces, :define_shortcut_methods, :has_iface?,
93
+ :on_signal, :subnodes=, :introspected=, :default_iface=]\nirb(main):008:0> im.PullRaw('https://dl.fedoraproject.org/pub/fedora/linux/releases/24/CloudImages/x86_64/images/Fedora-Cloud-Base-24-1.2.x86_64.raw.xz',
94
+ 'Fedora-24', 'no', false)\n=> [1, \"/org/freedesktop/import1/transfer/_1\"]\n> im.transfers\n=>
95
+ [{:id=>1, :operation=>\"pull-raw\", :remote_file=>\"https://dl.fedoraproject.org/pub/fedora/linux/releases/24/CloudImages/x86_64/images/Fedora-Cloud-Base-24-1.2.x86_64.raw.xz\",
96
+ :machine_name=>\"Fedora-24\", :progress=>0.0, :object_path=>\"/org/freedesktop/import1/transfer/_1\"}]\n```\n\n###
97
+ DBus::Systemd::Localed\n\nFor full docs, see [official docs](https://www.freedesktop.org/wiki/Software/systemd/localed/).\n\n```ruby\nirb(main):009:0>
98
+ l = DBus::Systemd::Localed.new\n=> ...\nirb(main):010:0> l.object.methods - Object.methods\n=>
99
+ [:Set, :Get, :GetAll, :Ping, :GetMachineId, :Introspect, :SetLocale, :SetVConsoleKeyboard,
100
+ :SetX11Keyboard, :[], :[]=, :path, :destination, :bus, :introspect, :api, :subnodes,
101
+ :introspected, :default_iface, :interfaces, :define_shortcut_methods, :has_iface?,
102
+ :on_signal, :subnodes=, :introspected=, :default_iface=]\nirb(main):011:0> l.GetAll(DBus::Systemd::Localed::INTERFACE).first\n=>
103
+ {\"Locale\"=>[\"LANG=en_US.UTF-8\"], \"X11Layout\"=>\"\", \"X11Model\"=>\"\", \"X11Variant\"=>\"\",
104
+ \"X11Options\"=>\"\", \"VConsoleKeymap\"=>\"us\", \"VConsoleKeymapToggle\"=>\"\"}\n```\n\n###
105
+ DBus::Systemd::Logind\n\nFor full docs, see [official docs](https://www.freedesktop.org/wiki/Software/systemd/logind/).\n\n```ruby\nirb(main):012:0>
106
+ l = DBus::Systemd::Logind::Manager.new\n=> ...\nirb(main):013:0> l.object.methods
107
+ - Object.methods\n=> [:Set, :Get, :GetAll, :ListSeats, :ListSessions, :ListUsers,
108
+ :GetSession, :GetUser, :GetSeat, :Ping, :GetMachineId, :Introspect, :GetSessionByPID,
109
+ :GetUserByPID, :ListInhibitors, :CreateSession, :ReleaseSession, :ActivateSession,
110
+ :ActivateSessionOnSeat, :LockSession, :UnlockSession, :LockSessions, :UnlockSessions,
111
+ :KillSession, :KillUser, :TerminateSession, :TerminateUser, :TerminateSeat, :SetUserLinger,
112
+ :AttachDevice, :FlushDevices, :PowerOff, :Reboot, :Suspend, :Hibernate, :HybridSleep,
113
+ :CanPowerOff, :CanReboot, :CanSuspend, :CanHibernate, :CanHybridSleep, :ScheduleShutdown,
114
+ :CancelScheduledShutdown, :Inhibit, :CanRebootToFirmwareSetup, :SetRebootToFirmwareSetup,
115
+ :SetWallMessage, :[], :[]=, :path, :destination, :bus, :introspect, :api, :subnodes,
116
+ :introspected, :default_iface, :interfaces, :define_shortcut_methods, :has_iface?,
117
+ :on_signal, :subnodes=, :introspected=, :default_iface=]\nirb(main):014:0> l.users\n=>
118
+ [{:id=>1000, :name=>\"vagrant\", :object_path=>\"/org/freedesktop/login1/user/_1000\"}]\nirb(main):015:0>
119
+ l.seats\n=> [{:id=>\"seat0\", :object_path=>\"/org/freedesktop/login1/seat/seat0\"}]\nirb(main):016:0>
120
+ l.sessions\n=> [{:id=>\"3\", :user_id=>1000, :user_name=>\"vagrant\", :seat_id=>\"\",
121
+ :object_path=>\"/org/freedesktop/login1/session/_33\"}]\nirb(main):017:0> u = l.user(1000)\n=>
122
+ ...\nirb(main):019:0> u.GetAll(DBus::Systemd::Logind::User::INTERFACE).first\n=>
123
+ {\"UID\"=>1000, \"GID\"=>1000, \"Name\"=>\"vagrant\", \"Timestamp\"=>1475452037907590,
124
+ \"TimestampMonotonic\"=>122159600, \"RuntimePath\"=>\"/run/user/1000\", \"Service\"=>\"user@1000.service\",
125
+ \"Slice\"=>\"user-1000.slice\", \"Display\"=>[\"3\", \"/org/freedesktop/login1/session/_33\"],
126
+ \"State\"=>\"active\", \"Sessions\"=>[[\"3\", \"/org/freedesktop/login1/session/_33\"]],
127
+ \"IdleHint\"=>false, \"IdleSinceHint\"=>0, \"IdleSinceHintMonotonic\"=>0, \"Linger\"=>false}\n```\n\n###
128
+ DBus::Systemd::Machined\n\nFor full docs, see [official docs](https://www.freedesktop.org/wiki/Software/systemd/machined/).\n\n```ruby\nirb(main):021:0>
129
+ mm = DBus::Systemd::Machined::Manager.new\n=> ...\nirb(main):022:0> mm.object.methods
130
+ - Object.methods\n=> [:Set, :Get, :GetAll, :ListMachines, :ListImages, :GetMachine,
131
+ :GetImage, :Ping, :GetMachineId, :Introspect, :GetMachineByPID, :CreateMachine,
132
+ :CreateMachineWithNetwork, :RegisterMachine, :RegisterMachineWithNetwork, :TerminateMachine,
133
+ :KillMachine, :GetMachineAddresses, :GetMachineOSRelease, :OpenMachinePTY, :OpenMachineLogin,
134
+ :OpenMachineShell, :BindMountMachine, :CopyFromMachine, :CopyToMachine, :RemoveImage,
135
+ :RenameImage, :CloneImage, :MarkImageReadOnly, :SetPoolLimit, :SetImageLimit, :MapFromMachineUser,
136
+ :MapToMachineUser, :MapFromMachineGroup, :MapToMachineGroup, :[], :[]=, :path, :destination,
137
+ :bus, :introspect, :api, :subnodes, :introspected, :default_iface, :interfaces,
138
+ :define_shortcut_methods, :has_iface?, :on_signal, :subnodes=, :introspected=, :default_iface=]\nirb(main):024:0>
139
+ mm.machines\n=> [{:name=>\".host\", :class=>\"host\", :service_id=>\"\", :object_path=>\"/org/freedesktop/machine1/machine/_2ehost\"}]\nirb(main):023:0>
140
+ mm.images\n=> [{:name=>\"Fedora-23\", :type=>\"raw\", :read_only=>false, :creation_time=>1446171608000000,
141
+ :modification_time=>1446171608000000, :disk_space=>589676544, :object_path=>\"/org/freedesktop/machine1/image/Fedora_2d23\"},
142
+ {:name=>\".raw-https:\\\\x2f\\\\x2fdl\\\\x2efedoraproject\\\\x2eorg\\\\x2fpub\\\\x2ffedora\\\\x2flinux\\\\x2freleases\\\\x2f24\\\\x2fCloudImages\\\\x2fx86_64\\\\x2fimages\\\\x2fFedora-Cloud-Base-24-1\\\\x2e2\\\\x2ex86_64\\\\x2eraw\\\\x2exz.\\\\x227fef0a4-5353f9c7441a0\\\\x22\",
143
+ :type=>\"raw\", :read_only=>true, :creation_time=>1465922207000000, :modification_time=>1465922207000000,
144
+ :disk_space=>540872704, :object_path=>\"/org/freedesktop/machine1/image/_2eraw_2dhttps_3a_5cx2f_5cx2fdl_5cx2efedoraproject_5cx2eorg_5cx2fpub_5cx2ffedora_5cx2flinux_5cx2freleases_5cx2f24_5cx2fCloudImages_5cx2fx86_5f64_5cx2fimages_5cx2fFedora_2dCloud_2dBase_2d24_2d1_5cx2e2_5cx2ex86_5f64_5cx2eraw_5cx2exz_2e_5cx227fef0a4_2d5353f9c7441a0_5cx22\"},
145
+ {:name=>\".raw-https:\\\\x2f\\\\x2fdl\\\\x2efedoraproject\\\\x2eorg\\\\x2fpub\\\\x2ffedora\\\\x2flinux\\\\x2freleases\\\\x2f23\\\\x2fCloud\\\\x2fx86_64\\\\x2fImages\\\\x2fFedora-Cloud-Base-23-20151030\\\\x2ex86_64\\\\x2eraw\\\\x2exz.\\\\x229205894-5234910faa600\\\\x22\",
146
+ :type=>\"raw\", :read_only=>true, :creation_time=>1446171608000000, :modification_time=>1446171608000000,
147
+ :disk_space=>589676544, :object_path=>\"/org/freedesktop/machine1/image/_2eraw_2dhttps_3a_5cx2f_5cx2fdl_5cx2efedoraproject_5cx2eorg_5cx2fpub_5cx2ffedora_5cx2flinux_5cx2freleases_5cx2f23_5cx2fCloud_5cx2fx86_5f64_5cx2fImages_5cx2fFedora_2dCloud_2dBase_2d23_2d20151030_5cx2ex86_5f64_5cx2eraw_5cx2exz_2e_5cx229205894_2d5234910faa600_5cx22\"},
148
+ {:name=>\"Fedora-24\", :type=>\"raw\", :read_only=>false, :creation_time=>1465922207000000,
149
+ :modification_time=>1465922207000000, :disk_space=>540872704, :object_path=>\"/org/freedesktop/machine1/image/Fedora_2d24\"},
150
+ {:name=>\"test\", :type=>\"raw\", :read_only=>false, :creation_time=>1446171608000000,
151
+ :modification_time=>1446171608000000, :disk_space=>589676544, :object_path=>\"/org/freedesktop/machine1/image/test\"},
152
+ {:name=>\".host\", :type=>\"directory\", :read_only=>false, :creation_time=>0, :modification_time=>0,
153
+ :disk_space=>18446744073709551615, :object_path=>\"/org/freedesktop/machine1/image/_2ehost\"}]\nirb(main):025:0>
154
+ mm.GetAll(DBus::Systemd::Machined::Manager::INTERFACE).first\n=> {\"PoolPath\"=>\"/var/lib/machines\",
155
+ \"PoolUsage\"=>1191448576, \"PoolLimit\"=>2105020416}\nirb(main):026:0> mi = mm.image('Fedora-24')\n=>
156
+ ...\nirb(main):027:0> mi.object.methods - Object.methods\n=> [:Set, :Get, :GetAll,
157
+ :Ping, :GetMachineId, :Introspect, :Remove, :Rename, :Clone, :MarkReadOnly, :SetLimit,
158
+ :[], :[]=, :path, :destination, :bus, :introspect, :api, :subnodes, :introspected,
159
+ :default_iface, :interfaces, :define_shortcut_methods, :has_iface?, :on_signal,
160
+ :subnodes=, :introspected=, :default_iface=]\nirb(main):028:0> mi.GetAll(DBus::Systemd::Machined::Image::INTERFACE).first\n=>
161
+ {\"Name\"=>\"Fedora-24\", \"Path\"=>\"/var/lib/machines/Fedora-24.raw\", \"Type\"=>\"raw\",
162
+ \"ReadOnly\"=>false, \"CreationTimestamp\"=>1465922207000000, \"ModificationTimestamp\"=>1465922207000000,
163
+ \"Usage\"=>540872704, \"Limit\"=>3221225472, \"UsageExclusive\"=>540872704, \"LimitExclusive\"=>3221225472}\nirb(main):029:0>
164
+ machine = mm.machine('.host')\n=> ..\nirb(main):030:0> machine.object.methods -
165
+ Object.methods\n=> [:Set, :Get, :GetAll, :Kill, :Ping, :GetMachineId, :Introspect,
166
+ :Terminate, :GetAddresses, :GetOSRelease, :OpenPTY, :OpenLogin, :OpenShell, :BindMount,
167
+ :CopyFrom, :CopyTo, :[], :[]=, :path, :destination, :bus, :introspect, :api, :subnodes,
168
+ :introspected, :default_iface, :interfaces, :define_shortcut_methods, :has_iface?,
169
+ :on_signal, :subnodes=, :introspected=, :default_iface=]\nirb(main):032:0> machine.GetAll(DBus::Systemd::Machined::Machine::INTERFACE).first\n=>
170
+ {\"Name\"=>\".host\", \"Id\"=>[77, 46, 68, 242, 105, 232, 78, 52, 157, 152, 76,
171
+ 171, 175, 145, 140, 130], \"Timestamp\"=>1475451915747985, \"TimestampMonotonic\"=>0,
172
+ \"Service\"=>\"\", \"Unit\"=>\"-.slice\", \"Leader\"=>1, \"Class\"=>\"host\", \"RootDirectory\"=>\"/\",
173
+ \"NetworkInterfaces\"=>[], \"State\"=>\"running\"}\n```\n\n### DBus::Systemd::Resolved\n\nFor
174
+ full docs, see [official docs](https://www.freedesktop.org/wiki/Software/systemd/resolved/).\n\n```ruby\nirb(main):030:0>
175
+ rm = DBus::Systemd::Resolved::Manager.new\n=> ...\nirb(main):030:0> rm.object.methods
176
+ - Object.methods\n=> [:Set, :Get, :GetAll, :Ping, :GetMachineId, :Introspect, :GetLink,
177
+ :ResolveHostname, :ResolveAddress, :ResolveRecord, :ResolveService, :ResetStatistics,
178
+ :SetLinkDNS, :SetLinkDomains, :SetLinkLLMNR, :SetLinkMulticastDNS, :SetLinkDNSSEC,
179
+ :SetLinkDNSSECNegativeTrustAnchors, :RevertLink, :[], :[]=, :path, :destination,
180
+ :bus, :introspect, :api, :subnodes, :introspected, :default_iface, :interfaces,
181
+ :define_shortcut_methods, :has_iface?, :on_signal, :subnodes=, :introspected=, :default_iface=]\nirb(main):030:0>
182
+ rm.Get(DBus::Resolved::Manager::INTERFACE, 'DNSSECSupported').first\n=> false\n```\n\n###
183
+ DBus::Systemd::Timedated\n\nFor full docs, see [official docs](https://www.freedesktop.org/wiki/Software/systemd/timedated/).\n\n```ruby\nirb(main):030:0>
184
+ \ t = DBus::Systemd::Timedated.new\n=> ...\nirb(main):030:0> t.object.methods -
185
+ Object.methods\n=> [:Set, :Get, :GetAll, :Ping, :GetMachineId, :Introspect, :SetTime,
186
+ :SetTimezone, :SetLocalRTC, :SetNTP, :[], :[]=, :path, :destination, :bus, :introspect,
187
+ :api, :subnodes, :introspected, :default_iface, :interfaces, :define_shortcut_methods,
188
+ :has_iface?, :on_signal, :subnodes=, :introspected=, :default_iface=]\nirb(main):030:0>
189
+ t.GetAll(DBus::Systemd::Timedated::INTERFACE).first\n=> {\"Timezone\"=>\"UTC\",
190
+ \"LocalRTC\"=>true, \"CanNTP\"=>true, \"NTP\"=>false, \"NTPSynchronized\"=>true,
191
+ \"TimeUSec\"=>1475454744352557, \"RTCTimeUSec\"=>1475454742000000}\nirb(main):030:0>
192
+ t.SetTimezone('America/Los_Angeles', false)\n=> []\nirb(main):030:0> t.Get(DBus::Systemd::Timedated::INTERFACE,
193
+ 'Timezone').first\n=> \"America/Los_Angeles\"\n```\n\n### DBus::Systemd::Manager\n\nFor
194
+ full docs, see [official docs](https://www.freedesktop.org/wiki/Software/systemd/dbus/).\n\n```ruby\nirb(main):030:0>
195
+ mgr = DBus::Systemd::Manager.new\n=> ...\nirb(main):030:0> mgr.object.methods -
196
+ Object.methods\n=> [:Set, :Get, :ListUnits, :GetAll, :GetUnit, :GetJob, :Ping, :GetMachineId,
197
+ :Introspect, :GetUnitByPID, :LoadUnit, :StartUnit, :StartUnitReplace, :StopUnit,
198
+ :ReloadUnit, :RestartUnit, :TryRestartUnit, :ReloadOrRestartUnit, :ReloadOrTryRestartUnit,
199
+ :KillUnit, :ResetFailedUnit, :SetUnitProperties, :StartTransientUnit, :CancelJob,
200
+ :ClearJobs, :ResetFailed, :ListUnitsFiltered, :ListJobs, :Subscribe, :Unsubscribe,
201
+ :Dump, :CreateSnapshot, :RemoveSnapshot, :Reload, :Reexecute, :Exit, :Reboot, :PowerOff,
202
+ :Halt, :KExec, :SwitchRoot, :SetEnvironment, :UnsetEnvironment, :UnsetAndSetEnvironment,
203
+ :ListUnitFiles, :GetUnitFileState, :EnableUnitFiles, :DisableUnitFiles, :ReenableUnitFiles,
204
+ :LinkUnitFiles, :PresetUnitFiles, :PresetUnitFilesWithMode, :MaskUnitFiles, :UnmaskUnitFiles,
205
+ :SetDefaultTarget, :GetDefaultTarget, :PresetAllUnitFiles, :AddDependencyUnitFiles,
206
+ :SetExitCode, :[], :[]=, :path, :destination, :bus, :introspect, :api, :subnodes,
207
+ :introspected, :default_iface, :interfaces, :define_shortcut_methods, :has_iface?,
208
+ :on_signal, :subnodes=, :introspected=, :default_iface=] \nirb(main):030:0> mgr.GetDefaultTarget.first\n=>
209
+ \"multi-user.target\"\nirb(main):036:0> mgr.Get(DBus::Systemd::Manager::INTERFACE,
210
+ 'Version').first\n=> \"229\"\nirb(main):037:0> mgr.Get(DBus::Systemd::Manager::INTERFACE,
211
+ 'UnitPath').first\n=> [\"/etc/systemd/system\", \"/run/systemd/system\", \"/run/systemd/generator\",
212
+ \"/usr/local/lib/systemd/system\", \"/usr/lib/systemd/system\", \"/run/systemd/generator.late\"]\nirb(main):038:0>
213
+ mgr.Get(DBus::Systemd::Manager::INTERFACE, 'NFailedUnits').first\n=> 0\n```\n\n###
214
+ DBus::Systemd::Unit\n\nFor full docs, see [official docs](https://www.freedesktop.org/wiki/Software/systemd/dbus/).\n\n```ruby\nirb(main):005:0>
215
+ sshd = DBus::Systemd::Unit.new('sshd.service')\n=> ...\nirb(main):006:0> sshd.object.methods
216
+ - Object.methods\n=> [:Set, :Get, :GetAll, :Kill, :Ping, :GetMachineId, :Introspect,
217
+ :ResetFailed, :Reload, :Start, :Stop, :Restart, :TryRestart, :ReloadOrRestart, :ReloadOrTryRestart,
218
+ :SetProperties, :[], :[]=, :path, :destination, :bus, :introspect, :api, :subnodes,
219
+ :introspected, :default_iface, :interfaces, :define_shortcut_methods, :has_iface?,
220
+ :on_signal, :subnodes=, :introspected=, :default_iface=]\nirb(main):007:0> sshd.Get(DBus::Systemd::Unit::INTERFACE,
221
+ 'Wants').first\n=> [\"sshd-keygen.target\"]\nirb(main):008:0> sshd.Get(DBus::Systemd::Unit::Service::INTERFACE,
222
+ 'ExecStart').first\n=> [[\"/usr/sbin/sshd\", [\"/usr/sbin/sshd\", \"$OPTIONS\"],
223
+ false, 1475455155565079, 3239817089, 1475455155581392, 3239833403, 5860, 1, 0]]\nirb(main):010:0>
224
+ sshd.Restart('replace')\n=> [\"/org/freedesktop/systemd1/job/3326\"]\n```\n\n##
225
+ Development\n\nAfter checking out the repo, run `bin/setup` to install dependencies.
226
+ Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive
227
+ prompt that will allow you to experiment.\n\nTo install this gem onto your local
228
+ machine, run `bundle exec rake install`. To release a new version, update the version
229
+ number in `version.rb`, and then run `bundle exec rake release`, which will create
230
+ a git tag for the version, push git commits and tags, and push the `.gem` file to
231
+ [rubygems.org](https://rubygems.org).\n\nA Vagrantfile is provided in the VCS root
232
+ that creates a Fedora vagrant box, with which library can be tested and D-Bus interfaces
233
+ explored.\n\n## Contributing\n\nBug reports and pull requests are welcome on GitHub
234
+ at https://github.com/nathwill/ruby-dbus-systemd.\n\n## License\n\nThe gem is available
235
+ as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).\n\n"
70
236
  email:
71
237
  - nath.e.will@gmail.com
72
238
  executables: []
@@ -80,14 +246,34 @@ files:
80
246
  - LICENSE.txt
81
247
  - README.md
82
248
  - Rakefile
249
+ - TODO.txt
83
250
  - Vagrantfile
84
251
  - bin/console
85
252
  - bin/setup
86
253
  - dbus-systemd.gemspec
87
254
  - lib/dbus/systemd.rb
255
+ - lib/dbus/systemd/helpers.rb
256
+ - lib/dbus/systemd/hostnamed.rb
257
+ - lib/dbus/systemd/importd.rb
258
+ - lib/dbus/systemd/importd/manager.rb
259
+ - lib/dbus/systemd/importd/transfer.rb
88
260
  - lib/dbus/systemd/job.rb
261
+ - lib/dbus/systemd/localed.rb
262
+ - lib/dbus/systemd/logind.rb
263
+ - lib/dbus/systemd/logind/manager.rb
264
+ - lib/dbus/systemd/logind/seat.rb
265
+ - lib/dbus/systemd/logind/session.rb
266
+ - lib/dbus/systemd/logind/user.rb
267
+ - lib/dbus/systemd/machined.rb
268
+ - lib/dbus/systemd/machined/image.rb
269
+ - lib/dbus/systemd/machined/machine.rb
270
+ - lib/dbus/systemd/machined/manager.rb
89
271
  - lib/dbus/systemd/manager.rb
90
- - lib/dbus/systemd/method_missing.rb
272
+ - lib/dbus/systemd/mixin.rb
273
+ - lib/dbus/systemd/resolved.rb
274
+ - lib/dbus/systemd/resolved/link.rb
275
+ - lib/dbus/systemd/resolved/manager.rb
276
+ - lib/dbus/systemd/timedated.rb
91
277
  - lib/dbus/systemd/unit.rb
92
278
  - lib/dbus/systemd/unit/automount.rb
93
279
  - lib/dbus/systemd/unit/device.rb
@@ -1,19 +0,0 @@
1
- module DBus
2
- module Systemd
3
- module MethodMissing
4
- attr_reader :object
5
-
6
- def method_missing(name, *args, &blk)
7
- if @object.respond_to?(name)
8
- @object.send(name, *args, &blk)
9
- else
10
- super
11
- end
12
- end
13
-
14
- def respond_to_missing?(*args)
15
- @object.respond_to?(*args) || super
16
- end
17
- end
18
- end
19
- end