kanrisuru 0.14.0 → 0.15.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 29120990eb0245c731d92af7b9905b1357309e157938274f87032ead18230c42
4
- data.tar.gz: 03a75d2d70f1aa5f72f1c9d2039e9f4002d06ca13eb0ad8b67d7e60e41a9a2e4
3
+ metadata.gz: e77a2eee0eb08495f947f9dc3b130a7c47cd713ab2f970dcc8fd17b7b52cd8b3
4
+ data.tar.gz: 76d3ec684fe307aafce2f3be2c594f47a38c50f2b0bb394998c1c83c06d8a47b
5
5
  SHA512:
6
- metadata.gz: f3f0a9244cf44b5d722662b56afefa823f305e3f86eda08224369bd70fce5f88cdf84fad7dd9222a60d143a7b3bcc61f27ef57a9e54076b551655223d9e94a15
7
- data.tar.gz: 4cfa00635d6daeeb0d4bbaa97c5a7c09ccd001b9dc53072d55ddd025086209701dbd3c3739650eb501cf22f94c3aaf471f877016cc6870add3c2b4a075c58dc2
6
+ metadata.gz: cdd8b0d400e2557525fca889bbd3ef8b8eef67774f0143ea925fa9c5ac091acabe2986de25d0f69a7005185425cf94edcd873b19cacbe56aa823c9c64fa607b3
7
+ data.tar.gz: c1d802b26491e276ffbcdc3e3dd4e4272c9b48ab63a5e6b7283fb5e5f7b706ce64d5216728946aa3783f88396a0ec9a0582c045571cd78de050f42496479a392
data/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## Kanrisuru 0.15.0 (December 13, 2021) ##
2
+ * Add opts for `ip` command.
3
+ * Refactor `ip` object commands into smaller methods. Refactor `version` for consistent use and stub ability in funcitonal test cases.
4
+ * Add functional test cases for `ip` command.
5
+ * 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.
6
+ * Fix test case `transfer` by appending the osname to the filename to avoid parallel overwrite.
7
+
1
8
  ## Kanrisuru 0.14.0 (December 08, 2021) ##
2
9
  * Add additional unit test cases for `util` methods.
3
10
  * 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
@@ -103,6 +103,16 @@ module Kanrisuru
103
103
  @raw_command = Kanrisuru::Util.present?(boolean) ? "#{@raw_command} #{arg}" : @raw_command
104
104
  end
105
105
 
106
+ def append_flag_no(arg, boolean = 'true')
107
+ return if boolean.nil?
108
+
109
+ if boolean
110
+ append_flag(arg, true)
111
+ else
112
+ append_flag("no#{arg}", true)
113
+ end
114
+ end
115
+
106
116
  def append_valid_exit_code(code)
107
117
  @valid_exit_codes << code if code.instance_of?(Integer)
108
118
  @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)
@@ -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
@@ -4,63 +4,16 @@ module Kanrisuru
4
4
  module Core
5
5
  module IP
6
6
  def ip_link(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 << 'link show'
18
-
19
- command.append_arg('dev', opts[:dev])
20
- command.append_arg('group', opts[:group])
21
- command.append_arg('master', opts[:master])
22
- command.append_arg('type', opts[:type])
23
- command.append_arg('vrf', opts[:vrf])
24
-
25
- command.append_flag('up', opts[:up])
9
+ version = ip_version.to_i
10
+ command = ip_link_show(opts, version)
11
+ when 'add', 'a'
12
+ command = ip_link_add(opts)
13
+ when 'delete', 'del'
14
+ command = ip_link_delete(opts)
26
15
  when 'set'
27
- command = Kanrisuru::Command.new('ip link set')
28
-
29
- raise ArgumentError, 'no device defined' unless opts[:dev]
30
-
31
- command.append_arg('dev', opts[:dev])
32
-
33
- case opts[:direction]
34
- when 'up'
35
- command.append_flag('up')
36
- when 'down'
37
- command.append_flag('down')
38
- end
39
-
40
- command.append_arg('arp', opts[:arp])
41
- command.append_arg('multicast', opts[:multicast])
42
- command.append_arg('dynamic', opts[:dynamic])
43
- command.append_arg('name', opts[:name])
44
- command.append_arg('txqueuelen', opts[:txqueuelen])
45
- command.append_arg('txqlen', opts[:txqlen])
46
- command.append_arg('mtu', opts[:mtu])
47
- command.append_arg('address', opts[:address])
48
- command.append_arg('broadcast', opts[:broadcast])
49
- command.append_arg('brd', opts[:brd])
50
- command.append_arg('peer', opts[:peer])
51
- command.append_arg('netns', opts[:netns])
52
-
53
- if Kanrisuru::Util.present?(opts[:vf])
54
- command.append_arg('vf', opts[:vf])
55
- command.append_arg('mac', opts[:mac])
56
-
57
- if Kanrisuru::Util.present?(opts[:vlan])
58
- command.append_arg('vlan', opts[:vlan])
59
- command.append_arg('qos', opts[:qos])
60
- end
61
-
62
- command.append_arg('rate', opts[:rate])
63
- end
16
+ command = ip_link_set(opts)
64
17
  end
65
18
 
66
19
  execute_shell(command)
@@ -69,6 +22,95 @@ module Kanrisuru
69
22
  Parser::Link.parse(cmd, action, version)
70
23
  end
71
24
  end
25
+
26
+ def ip_link_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 << 'link show'
32
+
33
+ command.append_arg('dev', opts[:dev])
34
+ command.append_arg('group', opts[:group])
35
+ command.append_arg('master', opts[:master])
36
+ command.append_arg('type', opts[:type])
37
+ command.append_arg('vrf', opts[:vrf])
38
+
39
+ command.append_flag('up', opts[:up])
40
+ command
41
+ end
42
+
43
+ def ip_link_add(opts)
44
+ command = Kanrisuru::Command.new('ip link add')
45
+
46
+ command.append_arg('dev', opts[:dev])
47
+ command.append_arg('name', opts[:name])
48
+ command.append_arg('mtu', opts[:mtu])
49
+ command.append_arg('index', opts[:index])
50
+
51
+ command.append_arg('numtxqueues', opts[:numtxqueues])
52
+ command.append_arg('numrxqueues', opts[:numrxqueues])
53
+ command.append_arg('gso_max_size', opts[:gso_max_size])
54
+ command.append_arg('gso_max_segs', opts[:gso_max_segs])
55
+
56
+ if Kanrisuru::Util.present?(opts[:type])
57
+ raise ArgumentError, 'invalid link type' unless IP_LINK_TYPES.include?(opts[:type])
58
+
59
+ command.append_arg('type', opts[:type])
60
+
61
+ ip_link_type_opts(command, opts) if Kanrisuru::Util.present?(opts[:type_opts])
62
+ end
63
+
64
+ command
65
+ end
66
+
67
+ def ip_link_delete(opts)
68
+ command = Kanrisuru::Command.new('ip link delete')
69
+ command.append_arg('dev', opts[:dev])
70
+ command.append_arg('group', opts[:group])
71
+ command.append_arg('type', opts[:type])
72
+ command
73
+ end
74
+
75
+ def ip_link_set(opts)
76
+ command = Kanrisuru::Command.new('ip link set')
77
+ raise ArgumentError, 'no device defined' unless opts[:dev]
78
+
79
+ command.append_arg('dev', opts[:dev])
80
+ command.append_arg('group', opts[:group])
81
+
82
+ case opts[:direction]
83
+ when 'up'
84
+ command.append_flag('up')
85
+ when 'down'
86
+ command.append_flag('down')
87
+ end
88
+
89
+ ip_link_common_opts(command, opts)
90
+
91
+ ip_link_vf_opts(command, opts) if Kanrisuru::Util.present?(opts[:vf])
92
+
93
+ ip_link_xdp_opts(command, opts) if Kanrisuru::Util.present?(opts[:xdp])
94
+
95
+ if opts[:master] == false
96
+ command.append_flag('nomaster')
97
+ else
98
+ command.append_arg('master', opts[:master])
99
+ end
100
+
101
+ command.append_arg('addrgenmode', opts[:addrgenmode])
102
+ command.append_flag('link-netnsid', opts[:link_netnsid])
103
+
104
+ if Kanrisuru::Util.present?(opts[:type])
105
+ raise ArgumentError, 'invalid link type' unless IP_LINK_TYPES.include?(opts[:type])
106
+
107
+ command.append_arg('type', opts[:type])
108
+
109
+ ip_link_type_opts(command, opts) if Kanrisuru::Util.present?(opts[:type_opts])
110
+ end
111
+
112
+ command
113
+ end
72
114
  end
73
115
  end
74
116
  end
@@ -0,0 +1,61 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Kanrisuru
4
+ module Core
5
+ module IP
6
+ def ip_link_common_opts(command, opts)
7
+ command.append_arg('arp', opts[:arp])
8
+ command.append_arg('multicast', opts[:multicast])
9
+ command.append_arg('allmulticast', opts[:allmulticast])
10
+ command.append_arg('promisc', opts[:promisc])
11
+ command.append_arg('protodown', opts[:protodown])
12
+ command.append_arg('protodown_reason', opts[:protodown_reason])
13
+ command.append_arg('dynamic', opts[:dynamic])
14
+ command.append_arg('name', opts[:name])
15
+ command.append_arg('txqueuelen', opts[:txqueuelen])
16
+ command.append_arg('txqlen', opts[:txqlen])
17
+ command.append_arg('mtu', opts[:mtu])
18
+ command.append_arg('address', opts[:address])
19
+ command.append_arg('broadcast', opts[:broadcast])
20
+ command.append_arg('brd', opts[:brd])
21
+ command.append_arg('peer', opts[:peer])
22
+ command.append_arg('netns', opts[:netns])
23
+ command.append_arg('alias', opts[:alias])
24
+ end
25
+
26
+ def ip_link_xdp_opts(command, opts)
27
+ command.append_arg('xdp', opts[:xdp])
28
+
29
+ case opts[:xdp]
30
+ when 'object'
31
+ command << opts[:object]
32
+ command.append_arg('section', opts[:section])
33
+ command.append_flag('verbose', opts[:verbose])
34
+ when 'pinned'
35
+ command << opts[:pinned]
36
+ end
37
+ end
38
+
39
+ def ip_link_vf_opts(command, opts)
40
+ command.append_arg('vf', opts[:vf])
41
+ command.append_arg('mac', opts[:mac])
42
+
43
+ if Kanrisuru::Util.present?(opts[:vlan])
44
+ command.append_arg('vlan', opts[:vlan])
45
+ command.append_arg('qos', opts[:qos])
46
+ end
47
+
48
+ command.append_arg('proto', opts[:proto])
49
+ command.append_arg('rate', opts[:rate])
50
+ command.append_arg('max_tx_rate', opts[:max_tx_rate])
51
+ command.append_arg('min_tx_rate', opts[:min_tx_rate])
52
+ command.append_arg('spoofchk', opts[:spoofchk])
53
+ command.append_arg('query_rss', opts[:query_rss])
54
+ command.append_arg('state', opts[:state])
55
+ command.append_arg('trust', opts[:trust])
56
+ command.append_arg('node_guid', opts[:node_guid])
57
+ command.append_arg('port_guid', opts[:port_guid])
58
+ end
59
+ end
60
+ end
61
+ end