kanrisuru 0.14.0 → 0.16.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +27 -0
  3. data/README.md +5 -5
  4. data/kanrisuru.gemspec +7 -3
  5. data/lib/kanrisuru/command.rb +16 -3
  6. data/lib/kanrisuru/core/apt/parsers/base.rb +1 -1
  7. data/lib/kanrisuru/core/disk/commands/lsblk.rb +6 -11
  8. data/lib/kanrisuru/core/disk/constants.rb +9 -0
  9. data/lib/kanrisuru/core/disk/parser.rb +1 -0
  10. data/lib/kanrisuru/core/disk/parsers/lsblk_version.rb +21 -0
  11. data/lib/kanrisuru/core/disk.rb +1 -0
  12. data/lib/kanrisuru/core/dmi/commands/dmi.rb +1 -1
  13. data/lib/kanrisuru/core/file/commands/chmod.rb +1 -1
  14. data/lib/kanrisuru/core/file/commands/copy.rb +1 -3
  15. data/lib/kanrisuru/core/file/commands/mkdir.rb +11 -6
  16. data/lib/kanrisuru/core/file/commands/rm.rb +4 -1
  17. data/lib/kanrisuru/core/file/commands/touch.rb +2 -1
  18. data/lib/kanrisuru/core/ip/commands/address.rb +64 -47
  19. data/lib/kanrisuru/core/ip/commands/address_label.rb +32 -16
  20. data/lib/kanrisuru/core/ip/commands/link.rb +96 -54
  21. data/lib/kanrisuru/core/ip/commands/link_set_opts.rb +61 -0
  22. data/lib/kanrisuru/core/ip/commands/link_type_opts.rb +313 -0
  23. data/lib/kanrisuru/core/ip/commands/maddress.rb +22 -13
  24. data/lib/kanrisuru/core/ip/commands/neighbour.rb +49 -32
  25. data/lib/kanrisuru/core/ip/commands/route.rb +130 -93
  26. data/lib/kanrisuru/core/ip/commands/rule.rb +37 -22
  27. data/lib/kanrisuru/core/ip/commands.rb +5 -3
  28. data/lib/kanrisuru/core/ip/constants.rb +12 -0
  29. data/lib/kanrisuru/core/ip/parser.rb +1 -0
  30. data/lib/kanrisuru/core/ip/parsers/version.rb +15 -0
  31. data/lib/kanrisuru/core/ip.rb +10 -7
  32. data/lib/kanrisuru/core/system/commands/kill.rb +1 -1
  33. data/lib/kanrisuru/core/user/commands/create_user.rb +9 -17
  34. data/lib/kanrisuru/core/user/commands/delete_user.rb +1 -1
  35. data/lib/kanrisuru/core/user/commands/update_user.rb +14 -23
  36. data/lib/kanrisuru/core/zypper/commands/add_repo.rb +1 -8
  37. data/lib/kanrisuru/core/zypper/commands/add_service.rb +4 -2
  38. data/lib/kanrisuru/core/zypper/commands/info.rb +1 -2
  39. data/lib/kanrisuru/core/zypper/commands/install.rb +2 -3
  40. data/lib/kanrisuru/core/zypper/commands/modify_repo.rb +1 -7
  41. data/lib/kanrisuru/core/zypper/commands/modify_service.rb +3 -1
  42. data/lib/kanrisuru/core/zypper/commands/remove.rb +1 -2
  43. data/lib/kanrisuru/core/zypper/commands/remove_repo.rb +3 -3
  44. data/lib/kanrisuru/core/zypper/commands/remove_service.rb +6 -1
  45. data/lib/kanrisuru/core/zypper/commands/search.rb +1 -3
  46. data/lib/kanrisuru/core/zypper/commands/source_install.rb +2 -0
  47. data/lib/kanrisuru/core/zypper/commands.rb +10 -1
  48. data/lib/kanrisuru/os_package.rb +2 -0
  49. data/lib/kanrisuru/remote/host.rb +1 -3
  50. data/lib/kanrisuru/result.rb +15 -0
  51. data/lib/kanrisuru/version.rb +1 -1
  52. data/spec/functional/core/archive_spec.rb +1 -1
  53. data/spec/functional/core/disk_spec.rb +77 -0
  54. data/spec/functional/core/dmi_spec.rb +78 -0
  55. data/spec/functional/core/file_spec.rb +284 -0
  56. data/spec/functional/core/group_spec.rb +62 -0
  57. data/spec/functional/core/ip_address_label_spec.rb +81 -0
  58. data/spec/functional/core/ip_address_spec.rb +95 -0
  59. data/spec/functional/core/ip_link_spec.rb +814 -0
  60. data/spec/functional/core/ip_maddress_spec.rb +78 -0
  61. data/spec/functional/core/ip_neighbour_spec.rb +119 -0
  62. data/spec/functional/core/ip_route_spec.rb +174 -0
  63. data/spec/functional/core/ip_rule_spec.rb +75 -0
  64. data/spec/functional/core/ip_spec.rb +27 -0
  65. data/spec/functional/core/system_spec.rb +135 -0
  66. data/spec/functional/core/user_spec.rb +97 -0
  67. data/spec/functional/core/zypper_spec.rb +708 -0
  68. data/spec/functional/result_spec.rb +91 -44
  69. data/spec/helper/stub_network.rb +7 -3
  70. data/spec/support/shared_examples/integration/core/transfer.rb +1 -1
  71. data/spec/unit/command_spec.rb +2 -0
  72. data/spec/unit/core/ip_spec.rb +12 -0
  73. metadata +25 -4
@@ -57,72 +57,119 @@ RSpec.describe Kanrisuru::Result do
57
57
  expect(result.to_s).to eq('output')
58
58
  end
59
59
 
60
- it 'returns to_a on array result' do
61
- command.handle_status(0)
62
- result = described_class.new(command) do |_cmd|
63
- [0, 1, 2, 3]
60
+ context 'with to_a' do
61
+ it 'returns to_a on array result' do
62
+ command.handle_status(0)
63
+ result = described_class.new(command) do |_cmd|
64
+ [0, 1, 2, 3]
65
+ end
66
+
67
+ expect(result.to_a).to eq([0, 1, 2, 3])
64
68
  end
65
69
 
66
- expect(result.to_a).to eq([0, 1, 2, 3])
67
- end
70
+ it 'returns to_a on non-array result' do
71
+ command.handle_status(0)
72
+ result = described_class.new(command) do |_cmd|
73
+ 'output'
74
+ end
68
75
 
69
- it 'returns to_a on non-array result' do
70
- command.handle_status(0)
71
- result = described_class.new(command) do |_cmd|
72
- 'output'
76
+ expect(result.to_a).to eq(['output'])
73
77
  end
74
78
 
75
- expect(result.to_a).to eq(['output'])
76
- end
79
+ it 'returns to_i on integer return value' do
80
+ command.handle_status(0)
81
+ result = described_class.new(command) do |_cmd|
82
+ 55
83
+ end
77
84
 
78
- it 'returns to_i on integer return value' do
79
- command.handle_status(0)
80
- result = described_class.new(command) do |_cmd|
81
- 55
85
+ expect(result.to_i).to eq(55)
82
86
  end
83
-
84
- expect(result.to_i).to eq(55)
85
87
  end
86
88
 
87
- it 'returns to_i on non-integer return value' do
88
- command.handle_status(0)
89
- result = described_class.new(command) do |_cmd|
90
- '100'
91
- end
89
+ context 'with to_i' do
90
+ it 'returns to_i on non-integer return value' do
91
+ command.handle_status(0)
92
+ result = described_class.new(command) do |_cmd|
93
+ '100'
94
+ end
92
95
 
93
- expect(result.to_i).to eq(100)
96
+ expect(result.to_i).to eq(100)
94
97
 
95
- result = described_class.new(command) do |_cmd|
96
- 'hello'
97
- end
98
+ result = described_class.new(command) do |_cmd|
99
+ 'hello'
100
+ end
98
101
 
99
- expect(result.to_i).to eq(0)
102
+ expect(result.to_i).to eq(0)
100
103
 
101
- result = described_class.new(command) do |_cmd|
102
- [0, 1, 2, 3]
103
- end
104
+ result = described_class.new(command) do |_cmd|
105
+ [0, 1, 2, 3]
106
+ end
104
107
 
105
- expect(result.to_i).to eq([0, 1, 2, 3])
108
+ expect(result.to_i).to eq([0, 1, 2, 3])
106
109
 
107
- result = described_class.new(command) do |_cmd|
108
- %w[0 1 2 3]
110
+ result = described_class.new(command) do |_cmd|
111
+ %w[0 1 2 3]
112
+ end
113
+
114
+ expect(result.to_i).to eq([0, 1, 2, 3])
115
+
116
+ result = described_class.new(command)
117
+ expect(result.to_i).to be_nil
109
118
  end
110
119
 
111
- expect(result.to_i).to eq([0, 1, 2, 3])
120
+ it 'raises error on to_i for invalid data type' do
121
+ command.handle_status(0)
122
+ result = described_class.new(command) do |_cmd|
123
+ { 'hello' => 'world' }
124
+ end
112
125
 
113
- result = described_class.new(command)
114
- expect(result.to_i).to be_nil
126
+ expect do
127
+ result.to_i
128
+ end.to raise_error(NoMethodError)
129
+ end
115
130
  end
116
131
 
117
- it 'raises error on to_i for invalid data type' do
118
- command.handle_status(0)
119
- result = described_class.new(command) do |_cmd|
120
- { 'hello' => 'world' }
132
+ context 'with to_f' do
133
+ it 'returns to_f on non-integer return value' do
134
+ command.handle_status(0)
135
+ result = described_class.new(command) do |_cmd|
136
+ '100.5'
137
+ end
138
+
139
+ expect(result.to_f).to eq(100.5)
140
+
141
+ result = described_class.new(command) do |_cmd|
142
+ 'hello'
143
+ end
144
+
145
+ expect(result.to_f).to eq(0)
146
+
147
+ result = described_class.new(command) do |_cmd|
148
+ [0.1, 1.2, 2.3, 3.4]
149
+ end
150
+
151
+ expect(result.to_f).to eq([0.1, 1.2, 2.3, 3.4])
152
+
153
+ result = described_class.new(command) do |_cmd|
154
+ %w[0.1 1.2 2.3 3.4]
155
+ end
156
+
157
+ expect(result.to_f).to eq([0.1, 1.2, 2.3, 3.4])
158
+
159
+ result = described_class.new(command)
160
+ expect(result.to_f).to be_nil
121
161
  end
122
162
 
123
- expect do
124
- result.to_i
125
- end.to raise_error(NoMethodError)
163
+ it 'raises error on to_f for invalid data type' do
164
+ command.handle_status(0)
165
+ result = described_class.new(command) do |_cmd|
166
+ { 'hello' => 'world' }
167
+ end
168
+
169
+ expect do
170
+ result.to_f
171
+ end.to raise_error(NoMethodError)
172
+ end
126
173
  end
127
174
 
128
175
  it 'returns success string variant on inspect' do
@@ -69,8 +69,12 @@ class StubNetwork
69
69
  status = opts[:status] || 0
70
70
  command.handle_status(status)
71
71
 
72
- Kanrisuru::Result.new(command, true) do |_cmd|
73
- block.call(args)
72
+ if opts[:return_value].nil?
73
+ Kanrisuru::Result.new(command, true) do |_cmd|
74
+ block.call(args)
75
+ end
76
+ else
77
+ opts[:return_value]
74
78
  end
75
79
  end
76
80
  end
@@ -126,7 +130,7 @@ class StubNetwork
126
130
  operating_system: 'GNU/Linux',
127
131
  hardware_platform: 'x86_64',
128
132
  processor: 'x86_64',
129
- release: 'opensuse-leap',
133
+ release: 'opensuse_leap',
130
134
  version: 15.2
131
135
  }
132
136
  }
@@ -76,7 +76,7 @@ RSpec.shared_examples 'transfer' do |os_name, host_json, spec_dir|
76
76
  end
77
77
 
78
78
  it 'downloads a file to local fs' do
79
- path = '../hosts-file'
79
+ path = "../hosts-file.#{os_name}.txt"
80
80
  src_path = '/etc/hosts'
81
81
 
82
82
  result = host.download(src_path, path)
@@ -11,6 +11,7 @@ RSpec.describe Kanrisuru::Command do
11
11
  expect(command).to respond_to(:success?)
12
12
  expect(command).to respond_to(:failure?)
13
13
  expect(command).to respond_to(:to_i)
14
+ expect(command).to respond_to(:to_f)
14
15
  expect(command).to respond_to(:to_s)
15
16
  expect(command).to respond_to(:to_a)
16
17
  expect(command).to respond_to(:to_json)
@@ -26,6 +27,7 @@ RSpec.describe Kanrisuru::Command do
26
27
  expect(command).to respond_to(:append_value)
27
28
  expect(command).to respond_to(:append_arg)
28
29
  expect(command).to respond_to(:append_flag)
30
+ expect(command).to respond_to(:append_flag_no)
29
31
  expect(command).to respond_to(:append_valid_exit_code)
30
32
  end
31
33
 
@@ -35,6 +35,18 @@ RSpec.describe Kanrisuru::Core::IP do
35
35
  ])
36
36
  )
37
37
 
38
+ expect(Kanrisuru::Core::IP::IP_FAMILIES).to(eq(%w[inet inet6 link]))
39
+ expect(Kanrisuru::Core::IP::IP_SCOPES).to(eq(%w[global site link host]))
40
+ expect(Kanrisuru::Core::IP::IP_LINK_TYPES).to(
41
+ eq(%w[
42
+ vlan veth vcan vxcan dummy ifb macvlan macvtap
43
+ bridge bond team ipoib ip6tnl ipip sit vxlan
44
+ gre gretap erspan ip6gre ip6gretap ip6erspan
45
+ vti nlmon team_slave bond_slave bridge_slave
46
+ ipvlan ipvtap geneve vrf macsec netdevsim rmnet
47
+ xfrm bareudp hsr
48
+ ])
49
+ )
38
50
  expect(Kanrisuru::Core::IP::IPLinkProperty.new).to respond_to(
39
51
  :index, :name, :flags, :mtu,
40
52
  :qdisc, :state, :group, :qlen,
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.14.0
4
+ version: 0.16.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-12-08 00:00:00.000000000 Z
11
+ date: 2021-12-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parallel_tests
@@ -136,8 +136,8 @@ dependencies:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
138
  version: '6.1'
139
- description: Kanrisuru helps manage remote servers with objected oriented ruby. Results
140
- come back as structured data, parsed, prepared and ready.
139
+ description: " Kanrisuru helps manage remote servers with objected oriented ruby.
140
+ \n Results come back as structured data, parsed, prepared and ready.\n"
141
141
  email: ryan@avamia.com
142
142
  executables: []
143
143
  extensions: []
@@ -193,11 +193,13 @@ files:
193
193
  - lib/kanrisuru/core/disk/commands/df.rb
194
194
  - lib/kanrisuru/core/disk/commands/du.rb
195
195
  - lib/kanrisuru/core/disk/commands/lsblk.rb
196
+ - lib/kanrisuru/core/disk/constants.rb
196
197
  - lib/kanrisuru/core/disk/parser.rb
197
198
  - lib/kanrisuru/core/disk/parsers/blkid.rb
198
199
  - lib/kanrisuru/core/disk/parsers/df.rb
199
200
  - lib/kanrisuru/core/disk/parsers/du.rb
200
201
  - lib/kanrisuru/core/disk/parsers/lsblk.rb
202
+ - lib/kanrisuru/core/disk/parsers/lsblk_version.rb
201
203
  - lib/kanrisuru/core/disk/types.rb
202
204
  - lib/kanrisuru/core/dmi.rb
203
205
  - lib/kanrisuru/core/dmi/commands.rb
@@ -245,6 +247,8 @@ files:
245
247
  - lib/kanrisuru/core/ip/commands/address.rb
246
248
  - lib/kanrisuru/core/ip/commands/address_label.rb
247
249
  - lib/kanrisuru/core/ip/commands/link.rb
250
+ - lib/kanrisuru/core/ip/commands/link_set_opts.rb
251
+ - lib/kanrisuru/core/ip/commands/link_type_opts.rb
248
252
  - lib/kanrisuru/core/ip/commands/maddress.rb
249
253
  - lib/kanrisuru/core/ip/commands/neighbour.rb
250
254
  - lib/kanrisuru/core/ip/commands/route.rb
@@ -259,6 +263,7 @@ files:
259
263
  - lib/kanrisuru/core/ip/parsers/neighbour.rb
260
264
  - lib/kanrisuru/core/ip/parsers/route.rb
261
265
  - lib/kanrisuru/core/ip/parsers/rule.rb
266
+ - lib/kanrisuru/core/ip/parsers/version.rb
262
267
  - lib/kanrisuru/core/ip/types.rb
263
268
  - lib/kanrisuru/core/mount.rb
264
269
  - lib/kanrisuru/core/mount/commands.rb
@@ -436,14 +441,29 @@ files:
436
441
  - lib/kanrisuru/version.rb
437
442
  - spec/functional/core/apt_spec.rb
438
443
  - spec/functional/core/archive_spec.rb
444
+ - spec/functional/core/disk_spec.rb
445
+ - spec/functional/core/dmi_spec.rb
446
+ - spec/functional/core/file_spec.rb
439
447
  - spec/functional/core/find_spec.rb
448
+ - spec/functional/core/group_spec.rb
449
+ - spec/functional/core/ip_address_label_spec.rb
450
+ - spec/functional/core/ip_address_spec.rb
451
+ - spec/functional/core/ip_link_spec.rb
452
+ - spec/functional/core/ip_maddress_spec.rb
453
+ - spec/functional/core/ip_neighbour_spec.rb
454
+ - spec/functional/core/ip_route_spec.rb
455
+ - spec/functional/core/ip_rule_spec.rb
456
+ - spec/functional/core/ip_spec.rb
440
457
  - spec/functional/core/mount_spec.rb
441
458
  - spec/functional/core/path_spec.rb
442
459
  - spec/functional/core/socket_spec.rb
443
460
  - spec/functional/core/stat_spec.rb
444
461
  - spec/functional/core/stream_spec.rb
462
+ - spec/functional/core/system_spec.rb
445
463
  - spec/functional/core/transfer_spec.rb
464
+ - spec/functional/core/user_spec.rb
446
465
  - spec/functional/core/yum_spec.rb
466
+ - spec/functional/core/zypper_spec.rb
447
467
  - spec/functional/remote/cluster_spec.rb
448
468
  - spec/functional/remote/cpu_spec.rb
449
469
  - spec/functional/remote/env_spec.rb
@@ -666,6 +686,7 @@ licenses:
666
686
  metadata:
667
687
  source_code_uri: https://github.com/avamia/kanrisuru/
668
688
  changelog_uri: https://github.com/avamia/kanrisuru/blob/main/CHANGELOG.md
689
+ rubygems_mfa_required: 'true'
669
690
  post_install_message:
670
691
  rdoc_options: []
671
692
  require_paths: