systemd-journal 1.1.1 → 1.1.2
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 +4 -4
- data/.travis.yml +5 -0
- data/README.md +1 -12
- data/lib/systemd/journal.rb +34 -5
- data/lib/systemd/journal/native.rb +3 -0
- data/lib/systemd/journal/version.rb +1 -1
- data/spec/spec_helper.rb +5 -3
- data/spec/systemd/journal_spec.rb +19 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3f3143bd56943aac2825763f571d4be96938850d
|
4
|
+
data.tar.gz: da9dfeb9e238db9d1a3f2133a067d1f3e3027497
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b2728e14303118f0f34a1c25aa5f973f8dd22089d4798f36e29e9036bbfbf0052f1196e14a14915469361519a8751224a3f73c8ece7b7e20ee513663a1a83ed9
|
7
|
+
data.tar.gz: f2700281ac8a85099630790dda239d8cae0419fd5193ca9b28679ec8249a77e1e4547a21cfd0c0db44961b4f4ebb6a5b9b0e65398f2c7ee1de7debeb09e486ea
|
data/.travis.yml
ADDED
data/README.md
CHANGED
@@ -22,16 +22,7 @@ thing.
|
|
22
22
|
|
23
23
|
Obviously you will need to have
|
24
24
|
[systemd](http://www.freedesktop.org/wiki/Software/systemd/) installed on your
|
25
|
-
system in order to use the gem.
|
26
|
-
|
27
|
-
__systemd 208__:
|
28
|
-
|
29
|
-
* `libsystemd-journal`
|
30
|
-
* `libsystemd-id128`
|
31
|
-
|
32
|
-
__systemd 209+__:
|
33
|
-
|
34
|
-
* `libsystemd`
|
25
|
+
system in order to use the gem. Currently we support systemd 208 or higher.
|
35
26
|
|
36
27
|
## Usage
|
37
28
|
|
@@ -114,5 +105,3 @@ If you run into problems or have questions, please open an
|
|
114
105
|
4. Push to the branch
|
115
106
|
5. Create new Pull Request, targeting the __develop__ branch.
|
116
107
|
6. Wipe hands on pants, you're done!
|
117
|
-
|
118
|
-
[](https://bitdeli.com/free "Bitdeli Badge")
|
data/lib/systemd/journal.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'systemd/journal/version'
|
1
2
|
require 'systemd/journal/native'
|
2
3
|
require 'systemd/journal/flags'
|
3
4
|
require 'systemd/journal/writable'
|
@@ -29,9 +30,14 @@ module Systemd
|
|
29
30
|
# @option opts [Integer] :flags a set of bitwise OR-ed
|
30
31
|
# {Systemd::Journal::Flags} which control what journal files are opened.
|
31
32
|
# Defaults to `0`, meaning all journals avaiable to the current user.
|
32
|
-
# @option opts [String]
|
33
|
-
# in the provided directory only. Any provided flags will be ignored
|
33
|
+
# @option opts [String] :path if provided, open the journal files living
|
34
|
+
# in the provided directory only. Any provided flags will be ignored
|
34
35
|
# since sd_journal_open_directory does not currently accept any flags.
|
36
|
+
# @option opts [Array] :files if provided, open the provided journal files
|
37
|
+
# only. Any provided flags will be ignored since sd_journal_open_files
|
38
|
+
# does not currently accept any flags.
|
39
|
+
# @option opts [String] :container if provided, open the journal files from
|
40
|
+
# the container with the provided machine name only.
|
35
41
|
# @example Read only system journal entries
|
36
42
|
# j = Systemd::Journal.new(flags: Systemd::Journal::Flags::SYSTEM_ONLY)
|
37
43
|
# @example Directly open a journal directory
|
@@ -39,12 +45,18 @@ module Systemd
|
|
39
45
|
# path: '/var/log/journal/5f5777e46c5f4131bd9b71cbed6b9abf'
|
40
46
|
# )
|
41
47
|
def initialize(opts = {})
|
48
|
+
validate_options!(opts)
|
49
|
+
|
42
50
|
flags = opts[:flags] || 0
|
43
|
-
path = opts[:path]
|
44
51
|
ptr = FFI::MemoryPointer.new(:pointer, 1)
|
45
52
|
|
46
|
-
rc =
|
47
|
-
|
53
|
+
rc = case
|
54
|
+
when opts[:path]
|
55
|
+
Native.sd_journal_open_directory(ptr, opts[:path], 0)
|
56
|
+
when opts[:files]
|
57
|
+
Native.sd_journal_open_files(ptr, array_to_ptrs(opts[:files]), 0)
|
58
|
+
when opts[:container]
|
59
|
+
Native.sd_journal_open_container(ptr, opts[:container], flags)
|
48
60
|
else
|
49
61
|
Native.sd_journal_open(ptr, flags)
|
50
62
|
end
|
@@ -194,6 +206,23 @@ module Systemd
|
|
194
206
|
|
195
207
|
private
|
196
208
|
|
209
|
+
def array_to_ptrs(strings)
|
210
|
+
ptr = FFI::MemoryPointer.new(:pointer, strings.length + 1)
|
211
|
+
strings.each_with_index do |s, i|
|
212
|
+
ptr[i].put_pointer(0, FFI::MemoryPointer.from_string(s))
|
213
|
+
end
|
214
|
+
ptr[strings.length].put_pointer(0, nil)
|
215
|
+
ptr
|
216
|
+
end
|
217
|
+
|
218
|
+
def validate_options!(opts)
|
219
|
+
exclusive = [:path, :files, :container]
|
220
|
+
provided = (opts.keys & exclusive)
|
221
|
+
if provided.length > 1
|
222
|
+
raise ArgumentError.new("#{provided} are conflicting options")
|
223
|
+
end
|
224
|
+
end
|
225
|
+
|
197
226
|
def self.finalize(ptr)
|
198
227
|
proc { Native.sd_journal_close(ptr) unless ptr.nil? }
|
199
228
|
end
|
@@ -16,6 +16,9 @@ module Systemd
|
|
16
16
|
attach_function :sd_journal_open_directory, [:pointer, :string, :int], :int
|
17
17
|
attach_function :sd_journal_close, [:pointer], :void
|
18
18
|
|
19
|
+
attach_function :sd_journal_open_files, [:pointer, :pointer, :int], :int
|
20
|
+
attach_function :sd_journal_open_container, [:pointer, :string, :int], :int
|
21
|
+
|
19
22
|
# navigation
|
20
23
|
attach_function :sd_journal_next, [:pointer], :int
|
21
24
|
attach_function :sd_journal_next_skip, [:pointer, :uint64], :int
|
data/spec/spec_helper.rb
CHANGED
@@ -15,8 +15,9 @@ RSpec.configure do |config|
|
|
15
15
|
0
|
16
16
|
end
|
17
17
|
|
18
|
-
|
19
|
-
|
18
|
+
['', '_directory', '_files', '_container'].each do |suffix|
|
19
|
+
Systemd::Journal::Native.stub(:"sd_journal_open#{suffix}", &dummy_open)
|
20
|
+
end
|
20
21
|
Systemd::Journal::Native.stub(:sd_journal_close).and_return(0)
|
21
22
|
|
22
23
|
# Raise an exception if any native calls are actually called
|
@@ -25,7 +26,8 @@ RSpec.configure do |config|
|
|
25
26
|
end
|
26
27
|
|
27
28
|
native_calls -= [
|
28
|
-
:sd_journal_open, :sd_journal_open_directory, :sd_journal_close
|
29
|
+
:sd_journal_open, :sd_journal_open_directory, :sd_journal_close,
|
30
|
+
:sd_journal_open_files, :sd_journal_open_container
|
29
31
|
]
|
30
32
|
|
31
33
|
build_err_proc = ->(method_name) do
|
@@ -16,10 +16,29 @@ describe Systemd::Journal do
|
|
16
16
|
Systemd::Journal.new(flags: 1234)
|
17
17
|
end
|
18
18
|
|
19
|
+
it 'accepts a files argument to open specific files' do
|
20
|
+
Systemd::Journal::Native.should_receive(:sd_journal_open_files)
|
21
|
+
Systemd::Journal.new(files: ['/path/to/journal/1', '/path/to/journal/2'])
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'accepts a machine name to open a container' do
|
25
|
+
Systemd::Journal::Native.should_receive(:sd_journal_open_container)
|
26
|
+
Systemd::Journal.new(container: 'bobs-machine')
|
27
|
+
end
|
28
|
+
|
19
29
|
it 'raises a Journal Error if a native call fails' do
|
20
30
|
Systemd::Journal::Native.should_receive(:sd_journal_open).and_return(-1)
|
21
31
|
expect { Systemd::Journal.new }.to raise_error(Systemd::JournalError)
|
22
32
|
end
|
33
|
+
|
34
|
+
it 'raises an argument error if conflicting options are passed' do
|
35
|
+
expect do
|
36
|
+
Systemd::Journal.new(path: 'p', files: %w{a b})
|
37
|
+
end.to raise_error(ArgumentError)
|
38
|
+
expect do
|
39
|
+
Systemd::Journal.new(container: 'c', files: %w{a b})
|
40
|
+
end.to raise_error(ArgumentError)
|
41
|
+
end
|
23
42
|
end
|
24
43
|
|
25
44
|
describe '#move' do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: systemd-journal
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Ledbetter
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-04-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: ffi
|
@@ -63,6 +63,7 @@ extra_rdoc_files: []
|
|
63
63
|
files:
|
64
64
|
- ".gitignore"
|
65
65
|
- ".rubocop.yml"
|
66
|
+
- ".travis.yml"
|
66
67
|
- Gemfile
|
67
68
|
- LICENSE.txt
|
68
69
|
- README.md
|
@@ -109,7 +110,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
109
110
|
version: '0'
|
110
111
|
requirements: []
|
111
112
|
rubyforge_project:
|
112
|
-
rubygems_version: 2.2.
|
113
|
+
rubygems_version: 2.2.2
|
113
114
|
signing_key:
|
114
115
|
specification_version: 4
|
115
116
|
summary: Ruby bindings to libsystemd-journal
|