kanrisuru 0.7.2 → 0.8.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/CHANGELOG.md +13 -0
- data/lib/kanrisuru/core/disk.rb +5 -5
- data/lib/kanrisuru/core/system.rb +87 -0
- data/lib/kanrisuru/core/zypper.rb +3 -0
- data/lib/kanrisuru/os_package.rb +1 -2
- data/lib/kanrisuru/version.rb +1 -1
- data/spec/functional/core/system_spec.rb +15 -0
- data/spec/functional/core/zypper_spec.rb +6 -0
- data/spec/functional/os_package_spec.rb +8 -8
- data/spec/unit/core/system_spec.rb +12 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ce41108c8201af2a48ac2453f8dc3fb993869e9264a8754d603a11d09ffe1cb5
|
4
|
+
data.tar.gz: 542d34622a949d0eb5ddddc1d7403f13e9e37dfb39cb88b589c7655a2a34a3e4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7aea2688091ff8449f21eb11cd2fdcb51d71563538fd9c9e38a484770adb8745663a3132314b0001d9e6206dbd57533fe2626af1c59e2ada6d0ea394e2fdd113
|
7
|
+
data.tar.gz: 054a8612edecb94b79bd6b7488096ae12d4fee790d17cf295d4a04f397282ae2c9f5e4a977a37145bd4fc37bf0896a2a9bbd43098762ff65496de29804aa6a0b
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,16 @@
|
|
1
|
+
## Kanrisuru 0.8.2 (August 19, 2021) ##
|
2
|
+
* Convert `major` and `minor` device field values to an `integer` in lsblk system module.
|
3
|
+
|
4
|
+
## Kanrisuru 0.8.1 (August 19, 2021) ##
|
5
|
+
* Fix `nodeps` flag value for `lsblk` command in disk module.
|
6
|
+
|
7
|
+
## Kanrisuru 0.8.0 (August 18, 2021) ##
|
8
|
+
* Add last / lastb implementation in system core module.
|
9
|
+
|
10
|
+
## Kanrisuru 0.7.3 (August 9, 2021) ##
|
11
|
+
* Fixed bug with zypper remove package, where the package names weren't being added to the linux command.
|
12
|
+
* Test case added to ensure package is removed.
|
13
|
+
|
1
14
|
## Kanrisuru 0.7.2 (August 9, 2021) ##
|
2
15
|
* Fixed bug with the `os_method_cache` instance variable set in the namespaced instance of a host. This was causing collision issues inbetween host instances, where, hosts with the same aliased method name was getting overwritten (with a different OS), since the namespace instance variable existing on the host class definition wasn't getting reset inbetween host instantiations. Given that the `os_method_cache` is normally re-instantiated, this bug fix addresses this so that the `os_method_cache` is always defined on the host instance, ie:
|
3
16
|
|
data/lib/kanrisuru/core/disk.rb
CHANGED
@@ -144,7 +144,7 @@ module Kanrisuru
|
|
144
144
|
|
145
145
|
command.append_flag('-a', all)
|
146
146
|
command.append_flag('-p', paths)
|
147
|
-
command.append_flag('-
|
147
|
+
command.append_flag('-d', nodeps)
|
148
148
|
|
149
149
|
command.append_arg('-o', 'NAME,FSTYPE,MAJ:MIN,MOUNTPOINT,SIZE,UUID,RO,RM,OWNER,GROUP,MODE,TYPE')
|
150
150
|
execute(command)
|
@@ -244,8 +244,8 @@ module Kanrisuru
|
|
244
244
|
current_device.fs_type = value
|
245
245
|
when 'MAJ:MIN'
|
246
246
|
maj, min = value.split(':')
|
247
|
-
current_device.maj_dev = maj
|
248
|
-
current_device.min_dev = min
|
247
|
+
current_device.maj_dev = maj ? maj.to_i : nil
|
248
|
+
current_device.min_dev = min ? min.to_i : nil
|
249
249
|
when 'MOUNTPOINT'
|
250
250
|
current_device.mount_point = value
|
251
251
|
when 'SIZE'
|
@@ -281,8 +281,8 @@ module Kanrisuru
|
|
281
281
|
|
282
282
|
LsblkDevice.new(
|
283
283
|
device['name'],
|
284
|
-
maj_min ? maj_min.split(':')[0] : nil,
|
285
|
-
maj_min ? maj_min.split(':')[1] : nil,
|
284
|
+
maj_min ? maj_min.split(':')[0].to_i : nil,
|
285
|
+
maj_min ? maj_min.split(':')[1].to_i : nil,
|
286
286
|
device['rm'],
|
287
287
|
device['ro'],
|
288
288
|
device['owner'],
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'date'
|
4
|
+
require 'ipaddr'
|
4
5
|
|
5
6
|
module Kanrisuru
|
6
7
|
module Core
|
@@ -19,6 +20,7 @@ module Kanrisuru
|
|
19
20
|
os_define :linux, :kstat
|
20
21
|
|
21
22
|
os_define :linux, :lsof
|
23
|
+
os_define :linux, :last
|
22
24
|
|
23
25
|
os_define :linux, :uptime
|
24
26
|
|
@@ -116,6 +118,19 @@ module Kanrisuru
|
|
116
118
|
:name
|
117
119
|
)
|
118
120
|
|
121
|
+
SessionDetail = Struct.new(
|
122
|
+
:tty,
|
123
|
+
:login_at,
|
124
|
+
:logout_at,
|
125
|
+
:ip_address,
|
126
|
+
:success
|
127
|
+
)
|
128
|
+
|
129
|
+
LoginUser = Struct.new(
|
130
|
+
:user,
|
131
|
+
:sessions
|
132
|
+
)
|
133
|
+
|
119
134
|
def load_env
|
120
135
|
command = Kanrisuru::Command.new('env')
|
121
136
|
execute_shell(command)
|
@@ -271,6 +286,65 @@ module Kanrisuru
|
|
271
286
|
Kanrisuru::Result.new(command, &:to_i)
|
272
287
|
end
|
273
288
|
|
289
|
+
def last(opts = {})
|
290
|
+
command =
|
291
|
+
if opts[:failed_attempts]
|
292
|
+
Kanrisuru::Command.new('lastb')
|
293
|
+
else
|
294
|
+
Kanrisuru::Command.new('last')
|
295
|
+
end
|
296
|
+
|
297
|
+
command.append_flag('-i')
|
298
|
+
command.append_flag('-F')
|
299
|
+
command.append_arg('-f', opts[:file])
|
300
|
+
|
301
|
+
## Some systems only use 1 space between user and TTY field
|
302
|
+
## Add an additional space in output formatting for simple parsing
|
303
|
+
## logic.
|
304
|
+
command | "sed 's/ / /'"
|
305
|
+
|
306
|
+
execute_shell(command)
|
307
|
+
|
308
|
+
Kanrisuru::Result.new(command) do |cmd|
|
309
|
+
lines = cmd.to_a
|
310
|
+
|
311
|
+
mapping = {}
|
312
|
+
|
313
|
+
lines.each do |line|
|
314
|
+
next if Kanrisuru::Util.blank?(line)
|
315
|
+
next if line.include?('wtmp') || line.include?('btmp')
|
316
|
+
|
317
|
+
line = line.gsub(' still logged in', '- still logged in') if line.include?('still logged in')
|
318
|
+
|
319
|
+
values = line.split(/\s{2,}/, 4)
|
320
|
+
user = values[0]
|
321
|
+
tty = values[1]
|
322
|
+
ip = IPAddr.new(values[2])
|
323
|
+
|
324
|
+
date_range = values[3]
|
325
|
+
login, logout = date_range.split(' - ')
|
326
|
+
|
327
|
+
login = parse_last_date(login) if login
|
328
|
+
|
329
|
+
logout = parse_last_date(logout) if logout
|
330
|
+
|
331
|
+
detail = SessionDetail.new
|
332
|
+
detail.tty = tty
|
333
|
+
detail.ip_address = ip
|
334
|
+
detail.login_at = login
|
335
|
+
detail.logout_at = logout
|
336
|
+
|
337
|
+
detail.success = !Kanrisuru::Util.present?(opts[:failed_attemps])
|
338
|
+
|
339
|
+
mapping[user] = LoginUser.new(user, []) unless mapping.key?(user)
|
340
|
+
|
341
|
+
mapping[user].sessions << detail
|
342
|
+
end
|
343
|
+
|
344
|
+
mapping.values
|
345
|
+
end
|
346
|
+
end
|
347
|
+
|
274
348
|
def ps(opts = {})
|
275
349
|
group = opts[:group]
|
276
350
|
user = opts[:user]
|
@@ -567,6 +641,19 @@ module Kanrisuru
|
|
567
641
|
line.split(char, 2)[1]
|
568
642
|
end
|
569
643
|
|
644
|
+
def parse_last_date(string)
|
645
|
+
tokens = string.split
|
646
|
+
|
647
|
+
return if tokens.length < 4
|
648
|
+
|
649
|
+
month_abbr = tokens[1]
|
650
|
+
day = tokens[2]
|
651
|
+
timestamp = tokens[3]
|
652
|
+
year = tokens[4]
|
653
|
+
|
654
|
+
DateTime.parse("#{day} #{month_abbr} #{year} #{timestamp}")
|
655
|
+
end
|
656
|
+
|
570
657
|
def parse_policy_abbr(value)
|
571
658
|
case value
|
572
659
|
when '-'
|
@@ -714,6 +714,9 @@ module Kanrisuru
|
|
714
714
|
zypper_package_type_opt(command, opts)
|
715
715
|
zypper_solver_opts(command, opts)
|
716
716
|
|
717
|
+
packages = Kanrisuru::Util.string_join_array(opts[:packages], ' ')
|
718
|
+
command << packages
|
719
|
+
|
717
720
|
execute_shell(command)
|
718
721
|
Kanrisuru::Result.new(command)
|
719
722
|
end
|
data/lib/kanrisuru/os_package.rb
CHANGED
@@ -159,7 +159,6 @@ module Kanrisuru
|
|
159
159
|
os_method_names.each do |method_name|
|
160
160
|
if namespace
|
161
161
|
namespace_class.class_eval do
|
162
|
-
|
163
162
|
define_method method_name do |*args, &block|
|
164
163
|
unbound_method = nil
|
165
164
|
|
@@ -193,7 +192,7 @@ module Kanrisuru
|
|
193
192
|
else
|
194
193
|
define_method method_name do |*args, &block|
|
195
194
|
unbound_method = nil
|
196
|
-
|
195
|
+
|
197
196
|
host = self
|
198
197
|
os_method_cache = host.instance_variable_get(:@os_method_cache) || {}
|
199
198
|
|
data/lib/kanrisuru/version.rb
CHANGED
@@ -96,6 +96,21 @@ RSpec.describe Kanrisuru::Core::System do
|
|
96
96
|
expect(result.cpus.length).to eq(host.cpu.cores)
|
97
97
|
end
|
98
98
|
|
99
|
+
it 'gets login details' do
|
100
|
+
host.su('root')
|
101
|
+
|
102
|
+
result = host.last
|
103
|
+
expect(result).to be_success
|
104
|
+
end
|
105
|
+
|
106
|
+
it 'gets failed login attempts' do
|
107
|
+
host.su('root')
|
108
|
+
|
109
|
+
result = host.last(failed_attempts: true)
|
110
|
+
puts result.data
|
111
|
+
expect(result).to be_success
|
112
|
+
end
|
113
|
+
|
99
114
|
it 'gets process details' do
|
100
115
|
result = host.ps
|
101
116
|
|
@@ -40,6 +40,12 @@ RSpec.describe Kanrisuru::Core::Zypper do
|
|
40
40
|
expect(result).to be_success
|
41
41
|
end
|
42
42
|
|
43
|
+
it 'removes a package' do
|
44
|
+
host.su('root')
|
45
|
+
result = host.zypper('remove', packages: ['ffmpeg'])
|
46
|
+
expect(result).to be_success
|
47
|
+
end
|
48
|
+
|
43
49
|
it 'lists updates' do
|
44
50
|
result = host.zypper('list-updates')
|
45
51
|
expect(result).to be_success
|
@@ -162,10 +162,10 @@ RSpec.describe Kanrisuru::OsPackage do
|
|
162
162
|
|
163
163
|
expect(cluster).to respond_to(:output)
|
164
164
|
expect(cluster.output).to eq([
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
165
|
+
{ host: 'ubuntu-host', result: 'debian' },
|
166
|
+
{ host: 'centos-host', result: 'fedora' },
|
167
|
+
{ host: 'opensuse-host', result: 'sles' }
|
168
|
+
])
|
169
169
|
|
170
170
|
expect(host1).to respond_to(:alias)
|
171
171
|
expect(host2).to respond_to(:alias)
|
@@ -180,10 +180,10 @@ RSpec.describe Kanrisuru::OsPackage do
|
|
180
180
|
expect(cluster).to respond_to(:alias)
|
181
181
|
expect(cluster.alias).to respond_to(:output)
|
182
182
|
expect(cluster.alias.output).to eq([
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
183
|
+
{ host: 'ubuntu-host', result: 'debian' },
|
184
|
+
{ host: 'centos-host', result: 'fedora' },
|
185
|
+
{ host: 'opensuse-host', result: 'sles' }
|
186
|
+
])
|
187
187
|
|
188
188
|
host1.disconnect
|
189
189
|
host2.disconnect
|
@@ -86,5 +86,17 @@ RSpec.describe Kanrisuru::Core::System do
|
|
86
86
|
:inode,
|
87
87
|
:name
|
88
88
|
)
|
89
|
+
expect(Kanrisuru::Core::System::SessionDetail.new).to respond_to(
|
90
|
+
:tty,
|
91
|
+
:login_at,
|
92
|
+
:logout_at,
|
93
|
+
:ip_address,
|
94
|
+
:success
|
95
|
+
)
|
96
|
+
|
97
|
+
expect(Kanrisuru::Core::System::LoginUser.new).to respond_to(
|
98
|
+
:user,
|
99
|
+
:sessions
|
100
|
+
)
|
89
101
|
end
|
90
102
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kanrisuru
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Mammina
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-08-
|
11
|
+
date: 2021-08-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|