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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 29120990eb0245c731d92af7b9905b1357309e157938274f87032ead18230c42
4
- data.tar.gz: 03a75d2d70f1aa5f72f1c9d2039e9f4002d06ca13eb0ad8b67d7e60e41a9a2e4
3
+ metadata.gz: a6038052274021235b996bc9f7ade893cd10d6881c86e563f2b2d382abb16d60
4
+ data.tar.gz: cdec7058f5ed36cb0e1132be77c01085eed95267249f36458c6a591e02f27fbc
5
5
  SHA512:
6
- metadata.gz: f3f0a9244cf44b5d722662b56afefa823f305e3f86eda08224369bd70fce5f88cdf84fad7dd9222a60d143a7b3bcc61f27ef57a9e54076b551655223d9e94a15
7
- data.tar.gz: 4cfa00635d6daeeb0d4bbaa97c5a7c09ccd001b9dc53072d55ddd025086209701dbd3c3739650eb501cf22f94c3aaf471f877016cc6870add3c2b4a075c58dc2
6
+ metadata.gz: a3ef7552d342a0b2fd0cf85fd1bbc03752d24803052feb9639c59d0244f3340edc85f038b2d3d296e0a2d85d468d45bcdde61b79cfd8d9ca8027cc217bf2f615
7
+ data.tar.gz: a6a4f401e579ff750ca46b5580b259eeb8e25998c76e98612a5123daf4ecef4fbe22fb5bf3f6a19337190afae86a0c87d5319757205e99dfcc8faa2a5de11376
data/CHANGELOG.md CHANGED
@@ -1,3 +1,30 @@
1
+ ## Kanrisuru 0.16.2 (December 19, 2021) ##
2
+ * Organize functional ip specs
3
+ * Log in realtime, debug output the stdout from the remote server, as opposed to waiting until after the command is done.
4
+ * Fix the `opensuse_leap` for the stubnetwork rspec helper.
5
+ * Refactor and cleanup the `append_array` method for the `Kanrisuru::Command` instance
6
+ * Move `gpg_opts` for `zypper` command into re-usable method
7
+ * Add functional test cases for `zypper` command.
8
+
9
+ ## Kanrisuru 0.16.1 (December 16, 2021) ##
10
+ * Fix require class for `os_package`.
11
+
12
+ ## Kanrisuru 0.16.0 (December 14, 2021) ##
13
+ * Fix `append_array` for the `Kanrisuru::Command` class with negated check on Array type.
14
+ * Add `to_f` method for `Kanrisuru::Command` and `Kanrisuru::Result` with unit test cases.
15
+ * Refactor `lsblk_version` into seperate command namespace with it's own parser.
16
+ * Add functional test cases for several core modules.
17
+ * Add `return_value` option to `stub_command!` method for non-result return methods. These are few and far between, but need to be tested appropriately.
18
+ * Refactor several core modules with use of `command` calls for legibility.
19
+ * Fix several issues with `create_user`, `update_user`, and `delete_user`.
20
+
21
+ ## Kanrisuru 0.15.0 (December 13, 2021) ##
22
+ * Add opts for `ip` command.
23
+ * Refactor `ip` object commands into smaller methods. Refactor `version` for consistent use and stub ability in funcitonal test cases.
24
+ * Add functional test cases for `ip` command.
25
+ * Add `append_flag_no` to `Kanrisuru::Command` class. Adds no to value for `falsey` statements. The `no` flag is commonly appended to indicate a deactived state for many arguments passed to programs on the command line.
26
+ * Fix test case `transfer` by appending the osname to the filename to avoid parallel overwrite.
27
+
1
28
  ## Kanrisuru 0.14.0 (December 08, 2021) ##
2
29
  * Add additional unit test cases for `util` methods.
3
30
  * Refactor the `core` module commands into smaller files, with each command split up. Also refactor parsing code into separate `Parser` class.
data/README.md CHANGED
@@ -7,12 +7,12 @@
7
7
  <img src="https://img.shields.io/gem/v/kanrisuru?style=flat-square" alt="Latest version" />
8
8
  </a>
9
9
  <a href="https://github.com/avamia/kanrisuru/blob/main/LICENSE.txt">
10
- <img src="https://img.shields.io/github/license/avamia/kanrisuru" alt="Latest version" />
10
+ <img src="https://img.shields.io/github/license/avamia/kanrisuru?style=flat-square" alt="Latest version" />
11
11
  </a>
12
- <img src="https://img.shields.io/github/repo-size/avamia/kanrisuru" alt="GitHub repo size" />
13
- <img src="https://img.shields.io/codecov/c/gh/avamia/kanrisuru?token=2Q1BE106B2" alt="Codecov" />
14
- <img src="https://img.shields.io/codacy/grade/9e839eb160bc445ea4e81b64cef22b27" alt="Codacy grade" />
15
- <img src="https://img.shields.io/codeclimate/maintainability/avamia/kanrisuru" alt="Code Climate maintainability" />
12
+ <img src="https://img.shields.io/github/repo-size/avamia/kanrisuru?style=flat-square" alt="GitHub repo size" />
13
+ <img src="https://img.shields.io/codecov/c/gh/avamia/kanrisuru?token=2Q1BE106B2&style=flat-square" alt="Codecov" />
14
+ <img src="https://img.shields.io/codacy/grade/9e839eb160bc445ea4e81b64cef22b27?style=flat-square" alt="Codacy grade" />
15
+ <img src="https://img.shields.io/codeclimate/maintainability/avamia/kanrisuru?style=flat-square" alt="Code Climate maintainability" />
16
16
  </p>
17
17
 
18
18
  # Kanrisuru
data/kanrisuru.gemspec CHANGED
@@ -8,9 +8,12 @@ Gem::Specification.new do |gem|
8
8
  gem.author = 'Ryan Mammina'
9
9
  gem.email = 'ryan@avamia.com'
10
10
  gem.license = 'MIT'
11
- gem.summary = 'Manage remote servers over ssh with ruby.'
12
- gem.description = 'Kanrisuru helps manage remote servers with objected oriented ruby. Results come back as structured data, parsed, prepared and ready.'
13
11
  gem.homepage = 'https://github.com/avamia/kanrisuru'
12
+ gem.summary = 'Manage remote servers over ssh with ruby.'
13
+ gem.description = <<-EOF
14
+ Kanrisuru helps manage remote servers with objected oriented ruby.#{' '}
15
+ Results come back as structured data, parsed, prepared and ready.
16
+ EOF
14
17
 
15
18
  gem.required_ruby_version = '>= 2.5.0'
16
19
 
@@ -30,6 +33,7 @@ Gem::Specification.new do |gem|
30
33
 
31
34
  gem.metadata = {
32
35
  'source_code_uri' => 'https://github.com/avamia/kanrisuru/',
33
- 'changelog_uri' => 'https://github.com/avamia/kanrisuru/blob/main/CHANGELOG.md'
36
+ 'changelog_uri' => 'https://github.com/avamia/kanrisuru/blob/main/CHANGELOG.md',
37
+ 'rubygems_mfa_required' => 'true'
34
38
  }
35
39
  end
@@ -23,6 +23,10 @@ module Kanrisuru
23
23
  to_a.join.to_i
24
24
  end
25
25
 
26
+ def to_f
27
+ to_a.join.to_f
28
+ end
29
+
26
30
  def to_s
27
31
  to_a.join(' ')
28
32
  end
@@ -84,11 +88,10 @@ module Kanrisuru
84
88
  append_value("| #{value}")
85
89
  end
86
90
 
87
- def append_array(value)
91
+ def append_array(value, separator = ' ')
88
92
  return unless Kanrisuru::Util.present?(value)
89
93
 
90
- value = [value] if value.instance_of?(String)
91
- append_value(value.join(' '))
94
+ append_value(Kanrisuru::Util.array_join_string(value, separator))
92
95
  end
93
96
 
94
97
  def append_value(value)
@@ -103,6 +106,16 @@ module Kanrisuru
103
106
  @raw_command = Kanrisuru::Util.present?(boolean) ? "#{@raw_command} #{arg}" : @raw_command
104
107
  end
105
108
 
109
+ def append_flag_no(arg, boolean = 'true')
110
+ return if boolean.nil?
111
+
112
+ if boolean
113
+ append_flag(arg, true)
114
+ else
115
+ append_flag("no#{arg}", true)
116
+ end
117
+ end
118
+
106
119
  def append_valid_exit_code(code)
107
120
  @valid_exit_codes << code if code.instance_of?(Integer)
108
121
  @valid_exit_codes.concat(code) if code.instance_of?(Array)
@@ -16,7 +16,7 @@ module Kanrisuru
16
16
 
17
17
  def parse_apt_sources(string)
18
18
  url, dist, architecture, = string.split
19
- Source.new(url, dist, architecture)
19
+ Kanrisuru::Core::Apt::Source.new(url, dist, architecture)
20
20
  end
21
21
 
22
22
  def parse_apt_line(line)
@@ -10,12 +10,12 @@ module Kanrisuru
10
10
 
11
11
  command = Kanrisuru::Command.new('lsblk')
12
12
 
13
- version = lsblk_version
13
+ version = lsblk_version.to_f
14
14
 
15
15
  ## lsblk after version 2.26 handles json parsing.
16
16
  ## TODO: parse nested children for earlier version of lsblk
17
- if version >= 2.27
18
- command.append_flag('--json') if version >= 2.27
17
+ if version >= LSBK_VERSION
18
+ command.append_flag('--json') if version >= LSBK_VERSION
19
19
  else
20
20
  command.append_flag('-i')
21
21
  command.append_flag('-P')
@@ -40,14 +40,9 @@ module Kanrisuru
40
40
  command = Kanrisuru::Command.new('lsblk --version')
41
41
  execute(command)
42
42
 
43
- version = 0.00
44
- regex = Regexp.new(/\d+(?:[,.]\d+)?/)
45
-
46
- raise 'lsblk command not found' if command.failure?
47
-
48
- version = command.to_s.scan(regex)[0].to_f unless regex.match(command.to_s).nil?
49
-
50
- version
43
+ Kanrisuru::Result.new(command) do |cmd|
44
+ Parser::LsblkVersion.parse(cmd)
45
+ end
51
46
  end
52
47
  end
53
48
  end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Kanrisuru
4
+ module Core
5
+ module Disk
6
+ LSBK_VERSION = 2.27
7
+ end
8
+ end
9
+ end
@@ -3,4 +3,5 @@
3
3
  require_relative 'parsers/blkid'
4
4
  require_relative 'parsers/df'
5
5
  require_relative 'parsers/du'
6
+ require_relative 'parsers/lsblk_version'
6
7
  require_relative 'parsers/lsblk'
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Kanrisuru
4
+ module Core
5
+ module Disk
6
+ module Parser
7
+ class LsblkVersion
8
+ def self.parse(command)
9
+ version = 0.00
10
+ regex = Regexp.new(/\d+(?:[,.]\d+)?/)
11
+
12
+ raise 'lsblk command not found' if command.failure?
13
+
14
+ version = command.to_s.scan(regex)[0].to_f unless regex.match(command.to_s).nil?
15
+ version
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'json'
4
4
 
5
+ require_relative 'disk/constants'
5
6
  require_relative 'disk/types'
6
7
  require_relative 'disk/parser'
7
8
  require_relative 'disk/commands'
@@ -20,7 +20,7 @@ module Kanrisuru
20
20
  return unless Kanrisuru::Util.present?(opts[:types])
21
21
 
22
22
  types = opts[:types]
23
- types = [types] if types.instance_of?(String)
23
+ types = [types] unless types.instance_of?(Array)
24
24
 
25
25
  types.each do |type|
26
26
  type = get_dmi_type(type)
@@ -7,7 +7,7 @@ module Kanrisuru
7
7
  recursive = opts[:recursive]
8
8
 
9
9
  command =
10
- if mode.instance_of?(String) && (mode.include?(',') || /[=+-]/.match(mode))
10
+ if mode.instance_of?(String) && (mode.include?(',') || /[=+-]/.match(mode)) && mode.length < 10
11
11
  Kanrisuru::Command.new("chmod #{mode} #{path}")
12
12
  elsif mode.instance_of?(Kanrisuru::Mode)
13
13
  Kanrisuru::Command.new("chmod #{mode.numeric} #{path}")
@@ -29,9 +29,7 @@ module Kanrisuru
29
29
  if opts[:preserve].instance_of?(TrueClass)
30
30
  command.append_flag('-p')
31
31
  elsif Kanrisuru::Util.present?(opts[:preserve])
32
- preserve =
33
- (opts[:preserve].join(',') if opts[:preserve].instance_of?(Array))
34
-
32
+ preserve = Kanrisuru::Util.array_join_string(opts[:preserve], ',')
35
33
  command << "--preserve=#{preserve}"
36
34
  end
37
35
 
@@ -8,16 +8,21 @@ module Kanrisuru
8
8
  group = opts[:group]
9
9
  recursive = opts[:recursive]
10
10
 
11
- command = Kanrisuru::Command.new("mkdir #{path}")
11
+ command = Kanrisuru::Command.new('mkdir')
12
+
13
+ command.append_array(path)
12
14
  command.append_flag('-p', opts[:silent])
13
15
 
14
16
  if Kanrisuru::Util.present?(opts[:mode])
15
17
  mode = opts[:mode]
16
- if mode.instance_of?(Kanrisuru::Mode)
17
- mode = mode.numeric
18
- elsif mode.instance_of?(String) && (mode.include?(',') || /[=+-]/.match(mode))
19
- mode = Kanrisuru::Mode.new(mode).numeric
20
- end
18
+
19
+ mode = if mode.instance_of?(Kanrisuru::Mode)
20
+ mode.numeric
21
+ elsif mode.instance_of?(String) && (mode.include?(',') || /[=+-]/.match(mode))
22
+ mode
23
+ else
24
+ Kanrisuru::Mode.new(mode).numeric
25
+ end
21
26
 
22
27
  command.append_arg('-m', mode)
23
28
  end
@@ -10,7 +10,10 @@ module Kanrisuru
10
10
  raise ArgumentError, "Can't delete root path" if path == '/' || realpath(path).path == '/'
11
11
  end
12
12
 
13
- command = Kanrisuru::Command.new("rm #{paths.join(' ')} --preserve-root")
13
+ command = Kanrisuru::Command.new('rm')
14
+ command.append_array(paths)
15
+
16
+ command.append_flag('--preserve-root')
14
17
  command.append_flag('-f', opts[:force])
15
18
  command.append_flag('-r', opts[:recursive])
16
19
 
@@ -7,7 +7,8 @@ module Kanrisuru
7
7
  date = opts[:date]
8
8
 
9
9
  paths = [paths] if paths.instance_of?(String)
10
- command = Kanrisuru::Command.new("touch #{paths.join(' ')}")
10
+ command = Kanrisuru::Command.new('touch')
11
+ command.append_array(paths)
11
12
 
12
13
  command.append_flag('-a', opts[:atime])
13
14
  command.append_flag('-m', opts[:mtime])
@@ -4,58 +4,16 @@ module Kanrisuru
4
4
  module Core
5
5
  module IP
6
6
  def ip_address(action, opts)
7
- command = nil
8
-
9
7
  case action
10
8
  when 'show', 'list'
11
- version = ip_version
12
-
13
- command = Kanrisuru::Command.new('ip')
14
- command.append_flag('-json') if version >= IPROUTE2_JSON_VERSION
15
- command.append_flag('-s', opts[:stats])
16
- command.append_arg('-family', opts[:family])
17
- command << 'address show'
18
-
19
- command.append_arg('dev', opts[:dev])
20
- command.append_arg('scope', opts[:scope])
21
- command.append_arg('to', opts[:prefix])
22
- command.append_arg('label', opts[:label])
23
-
24
- command.append_flag('dynamic', opts[:dynamic])
25
- command.append_flag('permanent', opts[:permanent])
26
- command.append_flag('tenative', opts[:tenative])
27
- command.append_flag('deprecated', opts[:deprecated])
28
- command.append_flag('primary', opts[:primary])
29
- command.append_flag('secondary', opts[:secondary])
30
- command.append_flag('up', opts[:up])
9
+ version = ip_version.to_i
10
+ command = ip_address_show(opts, version)
31
11
  when 'add'
32
- command = Kanrisuru::Command.new('ip address add')
33
- command << opts[:address]
34
-
35
- command.append_arg('dev', opts[:dev])
36
- command.append_arg('label', opts[:label])
37
- command.append_arg('scope', opts[:scope])
12
+ command = ip_address_add(opts)
38
13
  when 'del', 'delete'
39
- command = Kanrisuru::Command.new('ip address del')
40
- command << opts[:address]
41
-
42
- command.append_arg('dev', opts[:dev])
43
- command.append_arg('label', opts[:label])
44
- command.append_arg('scope', opts[:scope])
14
+ command = ip_address_delete(opts)
45
15
  when 'flush'
46
- command = Kanrisuru::Command.new('ip address flush')
47
-
48
- command.append_arg('dev', opts[:dev])
49
- command.append_arg('scope', opts[:scope])
50
- command.append_arg('to', opts[:prefix])
51
- command.append_arg('label', opts[:label])
52
-
53
- command.append_flag('dynamic', opts[:dynamic])
54
- command.append_flag('permanent', opts[:permanent])
55
- command.append_flag('tenative', opts[:tenative])
56
- command.append_flag('deprecated', opts[:deprecated])
57
- command.append_flag('primary', opts[:primary])
58
- command.append_flag('secondary', opts[:secondary])
16
+ command = ip_address_flush(opts)
59
17
  end
60
18
 
61
19
  execute_shell(command)
@@ -64,6 +22,65 @@ module Kanrisuru
64
22
  Parser::Address.parse(cmd, action, version)
65
23
  end
66
24
  end
25
+
26
+ def ip_address_show(opts, version)
27
+ command = Kanrisuru::Command.new('ip')
28
+ command.append_flag('-json') if version >= IPROUTE2_JSON_VERSION
29
+ command.append_flag('-s', opts[:stats])
30
+ command.append_arg('-family', opts[:family])
31
+ command << 'address show'
32
+
33
+ command.append_arg('dev', opts[:dev])
34
+ command.append_arg('scope', opts[:scope])
35
+ command.append_arg('to', opts[:prefix])
36
+ command.append_arg('label', opts[:label])
37
+
38
+ command.append_flag('dynamic', opts[:dynamic])
39
+ command.append_flag('permanent', opts[:permanent])
40
+ command.append_flag('tenative', opts[:tenative])
41
+ command.append_flag('deprecated', opts[:deprecated])
42
+ command.append_flag('primary', opts[:primary])
43
+ command.append_flag('secondary', opts[:secondary])
44
+ command.append_flag('up', opts[:up])
45
+ command
46
+ end
47
+
48
+ def ip_address_add(opts)
49
+ command = Kanrisuru::Command.new('ip address add')
50
+ command << opts[:address]
51
+
52
+ command.append_arg('dev', opts[:dev])
53
+ command.append_arg('label', opts[:label])
54
+ command.append_arg('scope', opts[:scope])
55
+ command
56
+ end
57
+
58
+ def ip_address_delete(opts)
59
+ command = Kanrisuru::Command.new('ip address del')
60
+ command << opts[:address]
61
+
62
+ command.append_arg('dev', opts[:dev])
63
+ command.append_arg('label', opts[:label])
64
+ command.append_arg('scope', opts[:scope])
65
+ command
66
+ end
67
+
68
+ def ip_address_flush(opts)
69
+ command = Kanrisuru::Command.new('ip address flush')
70
+
71
+ command.append_arg('dev', opts[:dev])
72
+ command.append_arg('scope', opts[:scope])
73
+ command.append_arg('to', opts[:prefix])
74
+ command.append_arg('label', opts[:label])
75
+
76
+ command.append_flag('dynamic', opts[:dynamic])
77
+ command.append_flag('permanent', opts[:permanent])
78
+ command.append_flag('tenative', opts[:tenative])
79
+ command.append_flag('deprecated', opts[:deprecated])
80
+ command.append_flag('primary', opts[:primary])
81
+ command.append_flag('secondary', opts[:secondary])
82
+ command
83
+ end
67
84
  end
68
85
  end
69
86
  end
@@ -4,27 +4,16 @@ module Kanrisuru
4
4
  module Core
5
5
  module IP
6
6
  def ip_address_label(action, opts)
7
- command = nil
8
-
9
7
  case action
10
8
  when 'show', 'list'
11
- version = ip_version
12
-
13
- command = Kanrisuru::Command.new('ip')
14
- command.append_flag('-json') if version >= IPROUTE2_JSON_VERSION
15
- command << 'addrlabel list'
9
+ version = ip_version.to_i
10
+ command = ip_address_label_show(opts, version)
16
11
  when 'flush'
17
- command = Kanrisuru::Command.new('ip addrlabel flush')
12
+ command = ip_address_label_flush(opts)
18
13
  when 'add'
19
- command = Kanrisuru::Command.new('ip addrlabel add')
20
- command.append_arg('prefix', opts[:prefix])
21
- command.append_arg('dev', opts[:dev])
22
- command.append_arg('label', opts[:label])
14
+ command = ip_address_label_add(opts)
23
15
  when 'del'
24
- command = Kanrisuru::Command.new('ip addrlabel del')
25
- command.append_arg('prefix', opts[:prefix])
26
- command.append_arg('dev', opts[:dev])
27
- command.append_arg('label', opts[:label])
16
+ command = ip_address_label_delete(opts)
28
17
  end
29
18
 
30
19
  execute_shell(command)
@@ -33,6 +22,33 @@ module Kanrisuru
33
22
  Parser::AddressLabel.parse(cmd, action, version)
34
23
  end
35
24
  end
25
+
26
+ def ip_address_label_delete(opts)
27
+ command = Kanrisuru::Command.new('ip addrlabel del')
28
+ command.append_arg('prefix', opts[:prefix])
29
+ command.append_arg('dev', opts[:dev])
30
+ command.append_arg('label', opts[:label])
31
+ command
32
+ end
33
+
34
+ def ip_address_label_add(opts)
35
+ command = Kanrisuru::Command.new('ip addrlabel add')
36
+ command.append_arg('prefix', opts[:prefix])
37
+ command.append_arg('dev', opts[:dev])
38
+ command.append_arg('label', opts[:label])
39
+ command
40
+ end
41
+
42
+ def ip_address_label_flush(_opts)
43
+ Kanrisuru::Command.new('ip addrlabel flush')
44
+ end
45
+
46
+ def ip_address_label_show(_opts, version)
47
+ command = Kanrisuru::Command.new('ip')
48
+ command.append_flag('-json') if version >= IPROUTE2_JSON_VERSION
49
+ command << 'addrlabel list'
50
+ command
51
+ end
36
52
  end
37
53
  end
38
54
  end