kanrisuru 0.16.15 → 0.16.16
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 +3 -0
- data/lib/kanrisuru/core/dmi/parsers/dmi.rb +1 -2
- data/lib/kanrisuru/core/transfer/commands/download.rb +24 -4
- data/lib/kanrisuru/core/transfer/commands/upload.rb +2 -3
- data/lib/kanrisuru/core/user/commands/get_user.rb +2 -1
- data/lib/kanrisuru/core/user/parsers/user.rb +1 -1
- data/lib/kanrisuru/version.rb +1 -1
- data/spec/functional/core/find_spec.rb +1 -1
- data/spec/functional/core/group_spec.rb +3 -5
- data/spec/functional/remote/cluster_spec.rb +9 -9
- data/spec/support/shared_examples/integration/core/transfer.rb +18 -1
- data/spec/support/shared_examples/integration/remote/cluster.rb +1 -1
- 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: c72c91f337408d0a7dee545cabeb07ba9fac668baf8d3c3dbb65d0e04a27e347
|
4
|
+
data.tar.gz: 28d8387d8081783dfd32031c202ffc5ec66e4a7fea3306e8cb35d117f2193c10
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8a0d66db59619c3cb9e69567ef0ed08e564c53ca3171dccc7acd31410288dfa06ebfc5a5daa2ff09aa14cbbacf433175352928b8a6e837f2ba43217de5fb70ac
|
7
|
+
data.tar.gz: 8bfc4a39d3bb5ab4c9f180dd4e5682057a7c1fe5c5bd93e25a6d88280a6e12c79831e0c5d9cb05b2b3211b91e3c6161d585fcc20c2d851da100037393dd17752
|
data/CHANGELOG.md
CHANGED
@@ -4,21 +4,41 @@ module Kanrisuru
|
|
4
4
|
module Core
|
5
5
|
module Transfer
|
6
6
|
def download(remote_path, local_path = nil, opts = {})
|
7
|
+
recursive = opts[:recursive] || false
|
8
|
+
|
9
|
+
remote_path += '/' if !remote_path.end_with?('/') && recursive
|
10
|
+
local_path += '/' if !local_path.nil? && !local_path.end_with?('/') && recursive
|
11
|
+
|
7
12
|
if local_path.instance_of?(Hash)
|
8
13
|
opts = local_path
|
9
14
|
local_path = nil
|
10
15
|
end
|
11
16
|
|
12
|
-
|
17
|
+
tmp_name = "kanrisuru-tmp-#{Time.now.to_i}-#{object_id}"
|
18
|
+
tmp_path = "/tmp/#{tmp_name}"
|
13
19
|
|
14
20
|
begin
|
15
|
-
result = cp(remote_path, tmp_path, force: true)
|
21
|
+
result = cp(remote_path, tmp_path, force: true, follow: true, recursive: recursive)
|
16
22
|
raise 'Unable to copy remote file to temp path' unless result.success?
|
17
23
|
|
24
|
+
result = chown(tmp_path, owner: @username, group: @username, recursive: recursive)
|
25
|
+
raise 'Unable to update owner or group for temp path' unless result.success?
|
26
|
+
|
27
|
+
result = chmod(tmp_path, 'u+r', recursive: true)
|
28
|
+
raise 'Unable to update owner permission read access' unless result.success?
|
29
|
+
|
30
|
+
local_path = ::File.expand_path(local_path) if local_path
|
18
31
|
result = ssh.scp.download!(tmp_path, local_path, opts)
|
19
|
-
|
32
|
+
return false unless result
|
33
|
+
|
34
|
+
if Kanrisuru::Util.present?(local_path) && recursive
|
35
|
+
remote_dirname = remote_path.split('/').last
|
36
|
+
FileUtils.mv("#{local_path}/#{tmp_name}", "#{local_path}/#{remote_dirname}")
|
37
|
+
else
|
38
|
+
result
|
39
|
+
end
|
20
40
|
ensure
|
21
|
-
rm(tmp_path, force: true) if inode?(tmp_path)
|
41
|
+
rm(tmp_path, force: true, recursive: recursive) if inode?(tmp_path)
|
22
42
|
end
|
23
43
|
end
|
24
44
|
end
|
@@ -12,9 +12,7 @@ module Kanrisuru
|
|
12
12
|
|
13
13
|
## Need to copy internal dir contents, not the tmp dir itself
|
14
14
|
if opts[:recursive]
|
15
|
-
unless dir?(remote_path)
|
16
|
-
mkdir(remote_path, silent: true)
|
17
|
-
end
|
15
|
+
mkdir(remote_path, silent: true) unless dir?(remote_path)
|
18
16
|
|
19
17
|
result = cp("#{tmp_path}/*", remote_path, recursive: true)
|
20
18
|
else
|
@@ -22,6 +20,7 @@ module Kanrisuru
|
|
22
20
|
end
|
23
21
|
|
24
22
|
raise "Unable to move file to remote path - #{result.command.raw_result}" unless result.success?
|
23
|
+
|
25
24
|
stat(remote_path)
|
26
25
|
ensure
|
27
26
|
rm(tmp_path, force: true) if inode?(tmp_path)
|
@@ -10,11 +10,12 @@ module Kanrisuru
|
|
10
10
|
Kanrisuru::Result.new(command) do |cmd|
|
11
11
|
if Kanrisuru::Util.numeric?(user)
|
12
12
|
uid = user.to_i
|
13
|
-
user = Parser::User.parse(cmd)
|
13
|
+
user = Parser::User.parse(cmd)
|
14
14
|
else
|
15
15
|
## Get user id
|
16
16
|
result = get_uid(user)
|
17
17
|
break if result.failure?
|
18
|
+
|
18
19
|
uid = result.to_i
|
19
20
|
end
|
20
21
|
|
data/lib/kanrisuru/version.rb
CHANGED
@@ -22,11 +22,9 @@ RSpec.describe Kanrisuru::Core::Group do
|
|
22
22
|
it 'prepares create_group command' do
|
23
23
|
expect_command(host.create_group('admin'), 'groupadd admin')
|
24
24
|
expect_command(host.create_group('admin',
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
'groupadd admin -g 9000 -o'
|
29
|
-
)
|
25
|
+
gid: 9000,
|
26
|
+
non_unique: true),
|
27
|
+
'groupadd admin -g 9000 -o')
|
30
28
|
|
31
29
|
expect_command(host.create_group('admin', gid: 12, system: true), 'groupadd admin -g 12 -r')
|
32
30
|
end
|
@@ -85,9 +85,9 @@ RSpec.describe Kanrisuru::Remote::Cluster do
|
|
85
85
|
expect(command.prepared_command).to eq('sudo -u root /bin/bash -c "ls"')
|
86
86
|
expect(cloned_command.prepared_command).to eq('sudo -u root /bin/bash -c "ls"')
|
87
87
|
|
88
|
-
expect
|
88
|
+
expect do
|
89
89
|
cluster.send(:create_command, 1)
|
90
|
-
|
90
|
+
end.to raise_error(ArgumentError)
|
91
91
|
end
|
92
92
|
|
93
93
|
it 'runs execute for a command on a cluster' do
|
@@ -178,8 +178,8 @@ RSpec.describe Kanrisuru::Remote::Cluster do
|
|
178
178
|
|
179
179
|
cluster.cd('/etc')
|
180
180
|
cluster.each do |host|
|
181
|
-
expect(host.instance_variable_get(:@current_dir)).to eq('/etc')
|
182
|
-
end
|
181
|
+
expect(host.instance_variable_get(:@current_dir)).to eq('/etc')
|
182
|
+
end
|
183
183
|
|
184
184
|
StubNetwork.unstub_command!(:pwd)
|
185
185
|
StubNetwork.unstub_command!(:realpath)
|
@@ -198,18 +198,18 @@ RSpec.describe Kanrisuru::Remote::Cluster do
|
|
198
198
|
|
199
199
|
cluster.chdir('/etc')
|
200
200
|
cluster.each do |host|
|
201
|
-
expect(host.instance_variable_get(:@current_dir)).to eq('/etc')
|
202
|
-
end
|
201
|
+
expect(host.instance_variable_get(:@current_dir)).to eq('/etc')
|
202
|
+
end
|
203
203
|
|
204
204
|
StubNetwork.unstub_command!(:pwd)
|
205
205
|
StubNetwork.unstub_command!(:realpath)
|
206
206
|
end
|
207
|
-
|
207
|
+
|
208
208
|
it 'fails to remove a host from a cluster' do
|
209
209
|
cluster = described_class.new(host1, host2)
|
210
210
|
|
211
|
-
expect
|
211
|
+
expect do
|
212
212
|
cluster.delete(1)
|
213
|
-
|
213
|
+
end.to raise_error(ArgumentError)
|
214
214
|
end
|
215
215
|
end
|
@@ -34,6 +34,7 @@ RSpec.shared_examples 'transfer' do |os_name, host_json, spec_dir|
|
|
34
34
|
keys: [host_json['ssh_key']]
|
35
35
|
)
|
36
36
|
|
37
|
+
FileUtils.rm_rf("../test-output-#{os_name}")
|
37
38
|
host.rmdir(spec_dir)
|
38
39
|
host.disconnect
|
39
40
|
end
|
@@ -80,7 +81,7 @@ RSpec.shared_examples 'transfer' do |os_name, host_json, spec_dir|
|
|
80
81
|
src_path = '/etc/hosts'
|
81
82
|
|
82
83
|
result = host.download(src_path, path)
|
83
|
-
expect(result).to
|
84
|
+
expect(result).to be_truthy
|
84
85
|
FileUtils.rm(path)
|
85
86
|
end
|
86
87
|
|
@@ -93,6 +94,22 @@ RSpec.shared_examples 'transfer' do |os_name, host_json, spec_dir|
|
|
93
94
|
expect(lines.length).to be >= 1
|
94
95
|
end
|
95
96
|
|
97
|
+
it 'downloads a dir' do
|
98
|
+
remote_path = '/var/log'
|
99
|
+
local_path = "../test-output-#{os_name}"
|
100
|
+
FileUtils.mkdir(local_path)
|
101
|
+
|
102
|
+
host.su('root')
|
103
|
+
result = host.download(remote_path, local_path, recursive: true)
|
104
|
+
expect(result).not_to be nil
|
105
|
+
|
106
|
+
paths = host.ls(path: '/var/log').map(&:path)
|
107
|
+
Dir.glob("#{local_path}/log/*").each do |file|
|
108
|
+
name = File.basename(file)
|
109
|
+
expect(paths).to include(name)
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
96
113
|
it 'wgets url' do
|
97
114
|
result = host.wget('https://example.com', directory_prefix: spec_dir)
|
98
115
|
expect(result).to be_success
|
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.16.
|
4
|
+
version: 0.16.16
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Mammina
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-01-
|
11
|
+
date: 2022-01-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parallel_tests
|